随笔分类 -  SpringCloud组件

SpringCloud组件
摘要:本文将从leader处理器入手,详细分析node的增删改查流程及监听器原理。 回顾数据读写流程 leader ZookeeperServer.processPacket封装Request并提交给业务处理器 LeaderRequestProcessor做本地事务升级 PrepRequestProces 阅读全文
posted @ 2024-03-11 09:25 用户不存在! 阅读(256) 评论(0) 推荐(0)
摘要:在zookeeper中,follower也可以接收客户端连接,处理客户端请求,本文将分析follower处理客户端请求的流程: 读请求处理 写请求转发与响应 follower接收转发客户端请求 网络层接收客户端数据包 leader、follower都会启动ServerCnxnFactory组件,用来 阅读全文
posted @ 2024-02-26 08:38 用户不存在! 阅读(253) 评论(0) 推荐(1)
摘要:ServerCnxnFactory 用于接收客户端连接、管理客户端session、处理客户端请求。 ServerCnxn抽象类 代表一个客户端连接对象: 从网络读写数据 数据编解码 将请求转发给上层组件或者从上层组件接收响应 管理连接状态,比如:enableRecv、sessionTimeout、s 阅读全文
posted @ 2024-02-19 10:41 用户不存在! 阅读(357) 评论(0) 推荐(1)
摘要:Leader 构造方法 public Leader(QuorumPeer self, LeaderZooKeeperServer zk) throws IOException { this.self = self; this.proposalStats = new BufferStats(); // 阅读全文
posted @ 2024-01-30 13:06 用户不存在! 阅读(104) 评论(0) 推荐(0)
摘要:ZooKeeperServer 实现了单机版zookeeper服务端功能,子类实现了更加丰富的分布式集群功能: ZooKeeperServer |-- QuorumZooKeeperServer |-- LeaderZooKeeperServer |-- LearnerZooKeeperServer 阅读全文
posted @ 2024-01-22 12:19 用户不存在! 阅读(269) 评论(0) 推荐(2)
摘要:本文详细分析一下zookeeper的数据存储。 ZKDatabase 维护zookeeper服务器内存数据库,包括session、dataTree和committedlog数据,从磁盘读取日志和快照后启动。 关键字段 // 数据节点树 protected DataTree dataTree; pro 阅读全文
posted @ 2024-01-09 00:12 用户不存在! 阅读(271) 评论(0) 推荐(0)
摘要:在"zookeeper源码(03)集群启动流程"中介绍了leader选举的入口,本文将详细分析leader选举组件和流程。 leader选举流程(重要) quorumPeer的start阶段使用startLeaderElection()方法启动选举 LOOKING状态,投自己一票 createEle 阅读全文
posted @ 2023-11-07 13:23 用户不存在! 阅读(624) 评论(0) 推荐(1)
摘要:本文将从启动类开始详细分析zookeeper的启动流程: 加载配置的过程 集群启动过程 单机版启动过程 启动类 org.apache.zookeeper.server.quorum.QuorumPeerMain类。 用于启动zookeeper服务,第一个参数用来指定配置文件,配置文件properti 阅读全文
posted @ 2023-10-30 13:01 用户不存在! 阅读(213) 评论(0) 推荐(0)
摘要:本文介绍一下zookeeper-3.9.0源码下载、编译及本地启动。 下载源码 git clone https://gitee.com/apache/zookeeper.git cd zookeeper git checkout release-3.9.0 git checkout -b relea 阅读全文
posted @ 2023-10-23 10:52 用户不存在! 阅读(275) 评论(0) 推荐(0)
摘要:SpringCloud工程可以使用Nacos作为注册中心和配置中心,配置和使用非常简单,本文将简单介绍使用方式,并分析其实现方式。 SpringCloud工程集成Nacos SpringCloud工程使用Nacos非常简单,只需要引入依赖、编写配置参数、在启动类上添加注解即可。 引入依赖 <depe 阅读全文
posted @ 2023-10-16 10:37 用户不存在! 阅读(179) 评论(0) 推荐(0)
摘要:本文介绍一下zookeeper-3.5.7集群安装。 解压安装 tar zxf apache-zookeeper-3.5.7-bin.tar.gz 创建数据、日志目录: mv apache-zookeeper-3.5.7-bin /app/zookeeper-3.5.7 cd /app/zookee 阅读全文
posted @ 2023-09-18 13:34 用户不存在! 阅读(49) 评论(0) 推荐(0)
摘要:Nacos 2.x版本增加了GRPC服务接口和客户端,极大的提升了Nacos的性能,本文将简单介绍grpc-java的使用方式以及Nacos中集成GRPC的方式。 grpc-java GRPC是google开源的、以protobuf作为序列化方式、以http2作为通信协议的高性能rpc框架。 grp 阅读全文
posted @ 2023-09-18 11:56 用户不存在! 阅读(521) 评论(0) 推荐(0)
摘要:Nacos 2.x在服务端与客户端直接增加了GRPC通信方式,本文通过2.0.2版本源码,简单分析GRPC通信方式: - 服务器启动 - 客户端连接 - 客户端心跳 - 服务器监控检查 # 服务器 ## proto文件 api/src/main/proto/nacos_grpc_service.pr 阅读全文
posted @ 2023-09-04 10:54 用户不存在! 阅读(871) 评论(0) 推荐(0)
摘要:本文阅读nacos-2.0.2的config源码,编写示例,分析推送配置、监听配置的原理。 # 客户端 ## 创建NacosConfigService对象 ```java Properties properties = new Properties(); properties.setProperty 阅读全文
posted @ 2023-08-21 20:52 用户不存在! 阅读(182) 评论(0) 推荐(0)
摘要:本文将从一个服务注册示例入手,通过阅读客户端、服务端源码,分析服务注册、服务发现原理。 使用的2.0.2的版本。 # 客户端 ## 创建NacosNamingService对象 ```java NacosNamingService nacosNamingService = new NacosNami 阅读全文
posted @ 2023-08-14 09:02 用户不存在! 阅读(253) 评论(0) 推荐(0)
摘要:# 整体架构 ![](https://img2023.cnblogs.com/blog/1258602/202308/1258602-20230807095950782-1096148976.jpg) ![](https://img2023.cnblogs.com/blog/1258602/2023 阅读全文
posted @ 2023-08-07 10:01 用户不存在! 阅读(190) 评论(0) 推荐(0)
摘要:本文介绍从gitee下载nacos源码,在本地编译,并导入idea进行本地调试。 # 从gitee下载源码 由于github访问速度慢,所以我选择使用gitee的镜像仓库: ```shell git clone https://gitee.com/mirrors/Nacos.git ``` 本文使用 阅读全文
posted @ 2023-07-31 16:34 用户不存在! 阅读(460) 评论(0) 推荐(0)
摘要:问题概述 一个Springboot工程,使用Mybatis-plus作为数据层框架 使用@MapperScan注解扫描Mapper接口 @MapperScan("org.net5ijy.cloud.*") public class DemoApplication {} 在Controller层使用@ 阅读全文
posted @ 2021-09-30 15:23 用户不存在! 阅读(525) 评论(0) 推荐(0)
摘要:最近发现开发spring cloud时,编写feign接口是一件痛苦的事,不仅要编写feign接口,还有fallback、请求参数和返回值等,大量重复工作,很浪费时间。 于是便想到可以编写工具自动生成feign接口。 实现起来并不复杂,就是把提供方工程的类加载进来,扫描controller和mode 阅读全文
posted @ 2020-12-20 19:37 用户不存在! 阅读(1527) 评论(0) 推荐(0)
摘要:一、业务需求 在Spring Cloud的项目中,A服务使用Feign调用B服务的某个接口,如果需要传递全局认证token或参数,在方法参数里面加相应字段的方式显然是不可取的。 首先想到的是AOP方式,使用切面拦截Feign方法,在AOP切面里面向方法参数里面添加数据,Feign方法执行完成之后,从 阅读全文
posted @ 2020-08-08 17:06 用户不存在! 阅读(2779) 评论(2) 推荐(0)