微服务
那年的夏天123
静下心来
展开
-
Nacos 原理详解
整个服务注册与发现过程,都离不开通讯协议,在1.x的 Nacos 版本中服务端只支持 http 协议,后来为了提升性能在2.x版本引入了谷歌的 grpc,grpc 是一款长连接协议,极大的减少了 http 请求频繁的连接创建和销毁过程,能大幅度提升性能,节约资源。据官方测试,Nacos服务端 grpc 版本,相比 http 版本的性能提升了9倍以上。原创 2022-10-01 22:57:41 · 17977 阅读 · 12 评论 -
nacos配置中心之ClusterRpcClientProxy源码分析
首先看初始化方法第一行 /** * init after constructor. */ @PostConstruct public void init() { try { NotifyCenter.registerSubscriber(this); List<Member> members = serverMemberManager.allMembersWithoutSelf();原创 2021-10-31 16:13:38 · 492 阅读 · 0 评论 -
nacos配置服务源码解析之添加配置
1.可以发现接口路径是:/v1/cs/configs2.可以看到standalone模式下数据库使用的是derby(java语言编写的内嵌数据库,遵循jdbc和sql标准)3.通过源码发现,添加配置的时候并没有直接将配置数据放到数据库,而是先放到SQL_CONTEXT ,private static final ThreadLocal<ArrayList<ModifyRequest>> SQL_CONTEXT = ThreadLocal.withInitial(ArrayLi原创 2021-10-14 15:09:33 · 691 阅读 · 0 评论 -
nacos服务发现源码
1.服务发现接口2.服务发现接口逻辑1.将发现的服务放到客户端的订阅列表,以达到服务信息改变的时候可以通知给客户端。2.先从ServiceStorage的serviceDataIndexes中获取服务信息,如果获取不到,则从ClientServiceIndexesManager的publisherIndexes中获取,获取成功放到ServiceStorage的serviceDataIndexes中...原创 2021-10-12 13:46:47 · 151 阅读 · 0 评论 -
nacos服务注册源码分析(二)
接着上篇文章,讲解一下nacos服务改变之后具体做了什么事情上节提到PushExecuteTask是具体TaskExecuteWorker执行的任务。PushExecuteTask做的事情就是将service信息发送到各个客户端。这里拿到所有订阅了该服务的客户端...原创 2021-10-12 11:28:34 · 147 阅读 · 0 评论 -
nacos服务注册源码分析(一)
一 服务注册整体流程图1.接受服务注册请求2.发布服务注册事件3.服务注册订阅者发布服务改变事件ClientServiceIndexesManager为服务注册订阅者,当发布服务注册事件的时候,会执行onEvent方法来维护服务与客户的索引,顺便会发布服务改变事件4.服务改变订阅者将任务放入延迟执行器通过断点发现NamingSubscriberServiceV2Impl是服务改变订阅者,当发生服务改变时,会执行onEvent方法,将任务放到延迟执行器,这里延迟实际上就是用线程池来实现的原创 2021-10-12 09:36:11 · 180 阅读 · 0 评论