- 博客(135)
- 收藏
- 关注
原创 RabbitMQ
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。RabbitMQ是一套开源(MPL)的服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol () 的开源实现,由以高性能、健壮以及出名的写成。NT 到 112003 到 2016RabbitMQ支持下列AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为。
2023-11-05 17:29:20 641
原创 Kafka
由于消息 topic 由多个 partition 组成,且 partition 会均衡分布到不同 broker 上,因此,为了有效利用 broker 集群的性能,提高消息的吞吐量,producer 可以通过随机或者 hash 等方式,将消息平均发送到多个 partition 上,以实现负载均衡。是提高消息吞吐量重要的方式,Producer 端可以在内存中合并多条消息后,以一次请求的方式发送了批量的消息给 broker,从而大大减少 broker 存储消息的 IO 操作次数。Kafka 不删除已消费的消息。
2023-10-15 09:00:00 457
原创 Zookeeper
而高 32 位则代表 Leader 周期 epoch 的编号,每个当选产生一个新的 Leader 服务器,就会从这个 Leader 服务器上取出其本地日志中最大事务的 ZXID,并从中读取epoch 值,然后加 1,以此作为新的 epoch,并将低 32 位从 0 开始计数。epoch:可以理解为当前集群所处的年代或者周期,每个 leader 就像皇帝,都有自己的年号,所以每次改朝换代,leader 变更之后,都会在前一个年代的基础上加 1。Server 增多,投票阶段延迟增大,影响性能;
2023-10-14 08:00:00 695
原创 HTTP 原理与CND原理
HTTP是一个无状态的协议。无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP 遵循请求(Request)/应答(Response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有 HTTP 连接都被构造成一套请求和应答。
2023-10-13 12:07:44 1120
原创 网络架构介绍
1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的模数转换与数模转换)。这一层的数据叫做比特。2. 数据链路层:主要将从物理层接收的数据进行 MAC 地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。
2023-10-12 08:00:00 1349 1
原创 Netty RPC 实现
RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。RPC 可以很好的解耦系统,如 WebService 就是一种基于 Http 协议的 RPC。
2023-10-11 09:00:00 179
原创 Netty 介绍
Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。
2023-10-10 21:31:36 185
原创 微服务架构
服务注册就是维护一个登记簿,它管理系统内所有的服务地址。当新的服务启动后,它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要Service Provider地址就行了。当下用于服务注册的工具非常多 ZooKeeper,Consul,Etcd, 还有 Netflix 家的 eureka 等。服务注册有两种形式:客户端注册和第三方注册。
2023-10-09 08:00:00 95
原创 Spring APO 原理与JPA 原理
" 横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。
2023-10-08 07:30:00 125
原创 Spring 依赖注入方式与自动装配
Spring 的模型-视图-控制器(MVC)框架是围绕一个 DispatcherServlet 来设计的,这个 Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。(6)(7)处理视图映射并返回模型: DispatcherServlet 查询一个或多个 ViewResoler 视图解析器,(4)(5)调用业务处理和返回结果:Controller 调用业务逻辑处理后,返回 ModelAndView。development)成为领导者。
2023-10-07 08:00:00 660 2
原创 Spring Bean 作用域与生命周期
Spring 3 中为 Bean 定义了 5 中作用域,分别为 singleton(单例)、prototype(原型)、request、session 和 global session,5 种作用域说明如下:singleton:单例模式,Spring IoC 容器中只会存在一个共享的 Bean 实例,无论有多少个Bean 引用它,始终指向同一对象。该模式在多线程下是不安全的。Singleton 作用域是。
2023-10-06 08:30:00 756
原创 Spring 原理
它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。
2023-10-05 09:00:00 2089 2
原创 JAVA 异常分类及处理
如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。
2023-10-02 10:00:00 212
原创 CAS( 比较并交换-乐观锁机制-锁自旋 )
AbstractQueuedSynchronizer 类如其名,抽象的队列式的同步器,AQS 定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的它维护了一个 volatile int state(代表共享资源)和一个 FIFO 线程等待队列(多线程争用资源被阻塞时会进入此队列)。这里 volatile 是核心关键词,具体 volatile 的语义,在此不述。getState()setState()AQS 定义两种资源共享方式。
2023-10-01 07:30:00 260
原创 ConcurrentHashMap 并发
减小锁粒度是指缩小锁定对象的范围,从而减小锁冲突的可能性,从而提高系统的并发能力。减小锁粒度是一种削弱多线程锁竞争的有效手段,这种技术典型的应用是 ConcurrentHashMap(高性能的 HashMap)类的实现。对于 HashMap 而言,最重要的两个方法是 get 与 set 方法,如果我们对整个 HashMap 加锁,可以得到线程安全的对象,但是加锁粒度太大。Segment 的大小也被称为 ConcurrentHashMap 的并发度。
2023-09-30 09:30:00 185
原创 Java如何在两个线程之间共享数据
Java 里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点有两个:可见性和有序性原子性。Java 内存模型(JMM)解决了可见性和有序性的问题,而锁解决了原子性的问题,理想情况下我们希望做到“同步”和“互斥”。有以下常规实现方法:1. 将数据抽象成一个类,并将对这个数据的操作作为这个类的方法,这么设计可以和容易做到同步,只要在方法上加”synchronized“j++;
2023-09-29 10:45:00 244
原创 CyclicBarrier 、CountDownLatch 、Semaphore 的用法
CountDownLatch类位于java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才能执行,此时就可以利用 CountDownLatch来实现这种功能了。
2023-09-28 12:00:00 114
原创 Dubbo--rpc通信
Dubbo(Apache Dubbo)是一种用于构建高性能、可扩展、分布式服务的开源RPC(Remote Procedure Call,远程过程调用)框架。它最初由阿里巴巴集团开发并于2011年开源,现在由Apache软件基金会进行维护。Spring-cloud-alibaba-dubbo 是基于SpringCloudAlibaba技术栈对dubbo技术的一种封装,目的在于实现基于RPC的服务调用。
2023-09-27 08:15:00 132
原创 Seata介绍
2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit AndRollback),其愿景是让分布式事务的使用像本地事务的使用一样,简单和高效,并逐步解决开发者们遇到的分布式事务方面的所有难题。后来更名为 Seata,意为:Simple Extensible AutonomousTransaction Architecture,是一套分布式事务解决方案。Seata的设计目标是对业务无侵入,因此从业务无侵入的2PC方案着手,在传统2PC的基础上演进。
2023-09-25 15:11:00 198
原创 Seata--分布式事务
事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销。简单地说,事务提供一种“要么什么都不做,要么做全套”机制。
2023-09-24 09:00:00 235
原创 Nacos Config--服务配置
首先我们来看一下,微服务架构下关于配置文件的一些问题:(1)配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理。(2)配置文件无法区分环境。微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动维护,这比较困难。(3)配置文件无法实时更新。
2023-09-23 08:45:00 366
原创 云计算介绍
AUFS 只是 Docker 使用的存储驱动的一种,除了 AUFS 之外,Docker 还支持了不同的存储驱动, 包括 aufs、devicemapper、overlay2、zfs 和 vfs 等等,在最新的 Docker 中,overlay2 取代了 aufs 成为了推荐的存储驱动,但是在没有 overlay2 驱动的机器上仍然会使用 aufs 作为 Docker的默认驱动。把服务器平台作为一种服务提供的 商业模式。用的核心技术,如果我们了解它们的使用方法和原理,就能清楚 Docker 的实现原理。
2023-09-22 21:16:02 1202
原创 SMS--短信服务
功能测试第1步: 引入阿里云服务依赖--短信发送-->第2步: 使用阿里云提供的Demo测试短信发送//产品名称:云通信短信API产品,开发者无需替换//产品域名,开发者无需替换// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)//短信发送//可自助调整超时时间//初始化acsClient,暂不支持region化domain);//组装请求对象-具体描述见控制台-文档部分内容//必填:待发送手机号//必填:短信签名-可在短信控制台中找到。
2023-09-21 15:15:00 605
原创 Rocketmq--案例三
RocketMQ提供三种方式来发送普通消息:可靠同步发送、可靠异步发送和单向发送。(1)可靠同步发送(2) 可靠异步发送(3) 单向发送三种发送方式的对比。
2023-09-20 09:30:00 193
原创 Sleuth--链路追踪(二)
Zipkin 是 Twitter 的一个开源项目,它基于Google Dapper实现,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的REST API接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。
2023-09-16 14:00:00 118
原创 Sleuth--链路追踪
SpringCloud Sleuth主要功能就是在分布式系统中提供追踪解决方案。它大量借用了GoogleDapper的设计, 先来了解一下Sleuth中的术语和相关概念。Trace 由一组Trace Id相同的Span串联形成一个树状结构。为了实现请求跟踪,当请求到达分布式系统的入口端点时,只需要服务跟踪框架为该请求创建一个唯一的标识(即TraceId),同时在分布式系统内部流转的时候,框架始终保持传递该唯一值,直到整个请求的返回。
2023-09-15 11:30:00 141
原创 Gateway--服务网关限流
网关是所有请求的公共入口,所以可以在网关进行限流,而且限流的方式也很多,我们本次采用前面学过的Sentinel组件来实现网关的限流。Sentinel支持对SpringCloud Gateway、Zuul等主流网关进行限流。在一秒钟内多次访问http://localhost:7000/product-serv/product/1就可以看到限流启作用了。基于Sentinel 的Gateway限流是通过其提供的Filter来完成的,使用时只需注入对应的。自定义API分组是一种更细粒度的限流规则定义。
2023-09-14 10:15:00 227
原创 Gateway--服务网关-过滤器
第1步:在配置文件中,添加一个Log的过滤器配置spring:cloud:nacos:discovery:gateway:discovery:locator:routes:order: -1filters:- Log=true,false # 控制日志是否开启第2步:自定义一个过滤器工厂,实现方法//自定义局部过滤器@Component//构造函数//读取配置文件中的参数 赋值到 配置类中@Override//过滤器逻辑@Override@Override。
2023-09-13 13:45:00 543
原创 自定义路由断言工厂
我们来设定一个场景: 假设我们的应用仅仅让age在(min,max)之间的人来访问。第1步:在配置文件中,添加一个Age的断言配置。第2步:自定义一个断言工厂, 实现断言方法。
2023-09-12 07:30:00 142
原创 Gateway核心架构
路由(Route) 是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。执行流程大体如下:(1) Gateway Client向Gateway Server发送请求(2) 请求首先会被HttpWebHandlerAdapter进行提取组装成网关上下文(3)然后网关的上下文会传递到DispatcherHandler,它负责将请求分发RoutePredicateHandlerMapping。
2023-09-11 12:40:45 400
原创 Gateway--服务网关
Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。
2023-09-07 09:00:00 95
原创 Spring Cloud Alibaba-Feign整合Sentinel
第6步: 停止所有 shop-product 服务,重启 shop-order 服务,访问请求,观察容错效果。第2步: 在配置文件中开启Feign对Sentinel的支持。扩展: 如果想在容错类中拿到具体的错误,可以使用下面的方式。第1步: 引入sentinel的依赖。第4步: 为被容器的接口指定容错类。第5步: 修改controller。第3步: 创建容错类。
2023-09-05 09:30:00 219
原创 Spring Cloud Alibaba-@SentinelResource的使用
在定义了资源点之后,我们可以通过Dashboard来设置限流和降级策略来对资源点进行保护。同时还能通过@SentinelResource来指定出现异常时的处理策略。@SentinelResource 用于定义资源,并提供可选的异常处理和 fallback 配置项。
2023-09-04 11:00:00 212
原创 Spring Cloud Alibaba-Sentinel规则
降级规则就是设置当满足什么条件的时候,对服务进行降级。第1步: 首先模拟一个异常第2步: 设置异常比例为0.25。
2023-09-03 20:38:47 854
基于Spring+SpringMVC+Mybatis实现的汽车4S店管理系统
2023-11-17
基于Spring boot实现的大学生就业管理系统平台
2023-11-17
鸡兔同笼python详解
2023-11-15
python烟花代码介绍
2023-11-15
spring介绍及应用
2023-11-14
pycharm安装教程
2023-11-14
计算机组成原理介绍word版
2023-11-13
学生信息管理系统java
2023-11-13
mysql安装配置教程
2023-11-13
python对多行代码注释
2023-11-12
基于java的小游戏设计
2023-11-12
百度网盘下载提速方法步骤
2023-11-12
不同系统的pip安装方法
2023-11-09
python混淆矩阵代码
2023-11-09
C语言基础学习内容汇总
2023-11-09
python数据分析与可视化
2023-11-08
基于matlab的支持向量机分类模型
2023-11-07
基于java的物业管理系统实现
2023-11-07
基于python的遗传算法特征波段选择
2023-11-07
十二神鹿外卖点餐微信小程序
2023-11-06
基于java的统计学生成绩c语言
2023-11-06
基于matlab代码的非信息变量剔除(UVE)代码
2023-11-06
克里金插值matlab代码
2023-11-05
python设计二叉树的双序遍历
2023-11-05
基于MATLAB的bp神经网络预测
2023-11-05
kmeans聚类算法python实现
2023-11-05
基于Java的两个通用安全模块的设计与实现
2023-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人