- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 Nacos源码服务端集群系列第10篇集群管理之心跳报告
目录 心跳任务(MemberInfoReportTask) 处理返回结果 接收集群节点上报请求(NacosClusterController ) 处理上报请求(ServerMemberManager)总结
2022-06-05 14:50:15
1311
原创 Nacos源码服务端集群系列第2篇gRPC 流入门
上一章节我们通过一个简单的例子入门和了解了gRPC的一元rpc,知道如何配置一个服务和请求、相应消息,并通编译工具生成java代码。以及讲解了如何创启动一个服务器,并添加我们的服务类。使用client stub 跟服务端完成服务的调用和返回。...
2022-06-05 08:01:03
1059
原创 Nacos源码服务端集群系列第1篇gRPC之初识
gRpc是最初由 Google 开发的高性能、开源的 RPC 框架,实现服务之的远程调用,屏蔽了底层的通讯、连接、序列化等技术,用户只需要专注于定义服务、实现服务、调用服务。更重要的它是语言无关的RPC框架。
2022-06-02 12:33:32
1210
原创 Nacos源码学习系列服务端第12篇心跳管理
流程图接收心跳请求public class InstanceController { ..... @PutMapping("/beat") @Secured(action = ActionTypes.WRITE) public ObjectNode beat(HttpServletRequest request) throws Exception { //设置心跳间隔时间 ObjectNode result = JacksonU
2022-06-01 07:02:01
594
原创 Nacos源码学习系列服务端第13篇udp推送与ack机制
UdpConnector 基本属性pubic class UdpConnector { //存储要发送的数据和key //创建发送任务时塞入ackmap //直到以下情况发送会从map移除 //1、收到客户端的ack 2、重试已达最大次数 3、发送出现异常 private final ConcurrentMap<String, AckEntry> ackMap; //ackkey <-> 回调对象(包括有成..
2022-05-31 19:30:23
623
原创 Nacos源码服务端系列第14篇事件中心之发布订阅者
目录事件订阅者一起回顾下常用的订阅实现类默认事件发布者uml 类图初始化事件处理事件发布总结学习目标:要了解事件订阅者和事件发布者的基本功能以及事件订阅者和发布者之间的关系。事件发布者是如何发布事件和处理事件的。事件订阅者是如何注册事件和处理事件的。事件订阅者订阅事件Event 有一个全局的序号自增属性.所有集成该类的事件类型共用该属性的值private static final AtomicLong SEQUENCE = ne...
2022-05-31 19:29:39
218
原创 Nacos源码服务端系列第15篇事件中心之共享发布者
目录DefaultSharePublisheruml 类图实现方式更优的发布者(NamingEventPublisher)总结学习目标: 了解什么是共享发布者,跟DefaultPublisher有什么区别,它有哪些实现类。DefaultSharePublisher从代码中可以看出DefaultSharePublisher 的逻辑跟上一节的DefaultPublisher 的区别和联系区别:1、DefaultPublisher 是针对Event类型 而...
2022-05-31 19:28:45
355
原创 Nacos源码服务端系列第16篇事件中心
学习目标:了解notifyCenter 跟之前的DefaultPublisher 、Subscriber、 DefaultSharedPublisher之间的关系是什么,起的作用又是什么,怎么使用,哪些场景用到的了。属性public class NotifyCenter { ..... public static int ringBufferSize; public static int shareBufferSize; private st..
2022-05-31 19:27:29
139
原创 Nacos源码学习系列服务端第11篇元数据管理之数据更新
上一篇我们讲述了元数据处理器是怎么注册到JRaftProtocol的,用户提交更新请求后,又是如果把请求提交给JraftProtocol,以及JraftProtocol是如何分发请求的。本篇,我们讲请求处理器接收到任务和是如果处理本地元数据的。元数据更新处理器@Componentpublic class InstanceMetadataProcessor extends RequestProcessor4CP { //元数据管理器统一的入口 private final ..
2022-05-28 21:45:46
1644
原创 Nacos源码学习系列服务端第10篇元数据管理之Jraft一致性更新
从控制台修改服务的元数据从控制台修改实例的元数据修改后的结果向JRaftProtocol注册元数据变更处理器服务在启动的时候通过构造函数进行初始化bean构造函数里面除了需要自动注入的属性后 还向JRaftProtocol 注册了当前对象处理器。实例和服务的处理器bean的实例化和注册过程是一样的。//实例元数据处理器@Componentpublic class InstanceMetadataProcessor extends RequestProcess
2022-05-28 19:49:23
1537
原创 Nacos源码学习系列服务端第9篇服务查询之实例过滤与阈值保护
流程图服务查询(InstanceOperatorClientImpl)public class InstanceOperatorClientImpl implements InstanceOperator { //客户端管理器 private final ClientManager clientManager; //客户端操作服务 有2种具体实现 // EphemeralClientOperationServiceImpl // Persistenc
2022-05-28 10:36:52
677
原创 Nacos源码学习系列服务端第8篇服务查询之实例查询
我们接着上篇的服务订阅部分,本篇我们继续讲解服务查询的实例列表是如果查询出来的流程图服务查询(InstanceOperatorClientImpl)public class InstanceOperatorClientImpl implements InstanceOperator { //客户端管理器 private final ClientManager clientManager; //客户端操作服务 有2种具体实现 // ...
2022-05-27 22:39:19
1059
原创 Nacos源码学习系列服务端第7篇服务查询之订阅
服务订阅入口 @GetMapping("/list") @Secured(action = ActionTypes.READ) public Object list(HttpServletRequest request) throws Exception { //获取命名空间id String namespaceId = WebUtils.optional(request, CommonParams.NAMESPACE_ID,
2022-05-27 18:10:29
526
原创 Nacos源码学习系列服务端第6篇服务下线
服务的下线相比服务的注册主要少了客户端创建及客户端的健康检查任务和客户端发布事件的功能,初次之外,服务端跟客户端的逻辑基本都是再相同的处理类里面,如果很好的理解了服务注册的流程和逻辑,服务下线的流程就很容易理解。目录流程图请求处理入口服务下线处理入口服务下线核心逻辑总结流程图请求处理入口 public String deregister(HttpServletRequest request) throws Exception { //...
2022-05-27 14:26:18
1225
原创 Nacos源码学习系列服务端第5篇服务注册服务之变更事件
接上篇我们继续讲解 服务端变更事件 和 客户端变更事件ServiceEvent.ServiceChangedEvent 和ServiceEvent.ClientChangedEventServiceChangedEventpublic class NamingSubscriberServiceV2Impl extends SmartSubscriber implements NamingSubscriberService { private static final..
2022-05-27 11:26:29
681
原创 Nacos源码学习系列服务端第4篇服务注册之注册事件
Nacos通过前面3篇的讲解我们已经见识到了事件几乎充斥再各个方法里面各种事件让人眼花缭乱,服务注册要发布ClientRegisterServiceEvent和InstanceMetadataEvent事件, 客户端初次要发布ClientChangedEvent事件,而且一个事件的处理完毕又会触发另外一个事件,同时因为事件都是基于异步的处理方式所以调试起来不方便,基于Nacos事件机制的复杂性,这里我不一上来就讲解事件机制。而是先根据几个具体的事件及处理逻辑让大家对Nacos事件有一个逐步的了解,有了一定.
2022-05-27 09:27:28
826
2
原创 Nacos源码学习系列服务端第3篇服务注册之客户端心跳检查
客户端初始化public class IpPortBasedClient extends AbstractClient { .... /** * Init client. */ public void init() { if (ephemeral) { //这里开始创建心跳检查任务并加入定时任务执行 beatCheckTask = new ClientBeatCheckTaskV2(th
2022-05-25 22:12:23
628
原创 Nacos源码学习系列服务端第2篇服务注册之客户端管理
官方对Client说明:The abstract concept of the client stored by on the server of Nacos naming module. It is used to store whichservices the client has published and subscribedThe client is bind to the ip and port users registered. It's a abstract content to ..
2022-05-25 19:16:18
521
原创 Nacos源码学习系列服务端第1篇服务注册之主流程
服务端注册会分三块讲解主流程讲解 client管理 注册过程中发布的事件服务注册流程图注册请求入口方法上的 @CanDistro 和 @Secured注解后面再作说明这里的Instance 对象的属性跟 客户端篇 的Instance 对象的属性是一样的这里部赘述@RequestMapping(UtilsAndCommons.NACOS_NAMING_CONTEXT + UtilsAndCommons.NACOS_NAMING_INSTANCE_CONTEXT).
2022-05-25 14:12:18
518
原创 Nacos源码学习系列第11篇服务是如何订阅的
服务订阅在服务被调用时触发,跟客户端负载均衡逻辑的一部分目录服务请求流程图核心类讲解NacosRibbonClientConfiguration NacosServerList服务请求流程图通过请求流程图我们发现, 在创建serviceId的上下文时,加载了类RibbonNacosAutoConfiguration 该类又会触发NacosRibbonClientConfiguration类的加载核心类讲解NacosRibbon...
2022-05-24 20:27:22
763
原创 Nacos源码学习系列第9篇客户端服务列表failover策略
在HostReactor类的getServiceInfo 方法的开头有一段代码 在当时代码讲解中有意飘过,大意是如果开启了failover 策略 就从failoverReactor获取服务信息,这篇单独解读一下FailoverReactor类public class HostReactor { ... public ServiceInfo getServiceInfo(final String serviceName, final String clusters) { .
2022-05-23 22:02:58
2037
原创 Nacos源码学习系列第10篇服务端消息接收类PushReceiver
前面的文章中我们着重讲了服务的注册和主动查询服务列表的功能。实际上在客户端发起服务查询(订阅)后,服务端会定时推送服务的结果给客户端,在1.1.4版本中是通过udp的方式推动的初始化public PushReceiver(HostReactor hostReactor) { try { this.hostReactor = hostReactor; udpSocket = new DatagramSocket(); .
2022-05-23 19:38:59
2166
原创 Nacos源码客户端系列第8篇客户端服务实例管理
属性说明 private static final long DEFAULT_DELAY = 1000L; private static final long UPDATE_HOLD_INTERVAL = 5000L; private final Map<String, ScheduledFuture<?>> futureMap = new HashMap<String, ScheduledFuture<?>&
2022-05-23 17:45:24
651
原创 Nacos源码客户端系列第7篇心跳管理
我们前面几篇文章已经介绍了心跳信息类BeatInfo 和 何时创建心跳任务及心跳任务的执行间隔时间,有了前面的知识基础 理解BeatReactor起来会简单很多初始化方法 public BeatReactor(NamingProxy serverProxy) { this(serverProxy, UtilAndComs.DEFAULT_CLIENT_BEAT_THREAD_COUNT); } public BeatReactor(NamingProxy..
2022-05-23 14:58:53
647
原创 Nacos源码客户端系列第6篇底层通信类NamingProxy解析
NacosNamingService 底层的服务注册、下线服务及服务查找等功能都是通过NamingProxy发送api请求到Nacos Server 完成交互。初始化方法//namespaceId:命名空间//endpoint: 拉取远程服务列表的ip:port//serverList: 本地配置的serverListpublic NamingProxy(String namespaceId, String endpoint, String serverList) { ...
2022-05-23 13:34:14
1322
原创 Nacos源码客户端系列第5篇服务中枢NacosNamingService
首先看下NacosNamingService UML结构图初始化方法介绍 // 服务所属命名空间 private String namespace; private String endpoint; private String serverList; private String cacheDir; private String logName; private HostReactor hostReactor; .
2022-05-22 22:14:45
1146
原创 Nacos源码客户端系列第4篇服务什么时候开始注册
自动装配核心类spring boot 在启动后扫描【spring-cloud-alibaba-nacos-discovery】jar包 下的spring.factory文件。org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.cloud.alibaba.nacos.NacosDiscoveryAutoConfiguration,\ org.springframework.c
2022-05-22 18:43:17
988
原创 Nacos源码学习系列第1篇服务搭建之项目集成Nacos-client-1.1.4
源码下载官方地址: https://github.com/nacos-group/nacos-examples。大家完全可以基于自己的项目去集成nacos集成nacos-client打开项目【nacos-spring-cloud-discovery-example】下的pom.xml,我们本次选择1.1.4 版本, 因为nacos 服务端2.x 是完全兼容1.x 客户端 同时目前很多项目还是用的1.x 客户端。 <dependencyManagement>
2022-05-22 11:14:47
1674
原创 Nacos源码学习系列第2篇服务搭建之集群模式
项目配置把项目的源码目录整体复制2份到新的文件夹【naco2】和【nacos3】参照【Nacos源码学习系列第1篇服务搭建-单机模式】导入项目并修改端口分别为【8060】和【8070】数据库连接配置3个服务可以共用一套, 不必重复创建数据库项目启动区别于单机模式的vm启动参数配置, VM设置参数-Dnacos.standalone=false为每个服务创建3个独立的运行文件目录 同时创建一个conf子目录并在目录下创建 cluster.conf文件目录结构:tips: 每个项.
2022-05-21 22:20:00
588
原创 Nacos源码学习系列第1篇服务搭建之单机模式
服务端代码下载进入nacos项目的的github地址,我们选择版本2.1.0(在分支选择框里面点击tags下面的2.1.0) 把项目代码下载到本地目录。GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.an easy-to-use dynamic ser.
2022-05-21 21:22:19
2001
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人