Nacos源码学习计划-Day09-集群-新增微服务实例 技术文档
今天,我们来学习Nacos集群环境下,如果某个微服务注册到了某个Nacos节点上,即新增了一个服务实例的时候,是如何在集群内进行同步的。
这一段的实现逻辑在Nacos1.4中设计比较麻烦,所以本次的内容可能会比较绕。这里采用总分的方式,也就是我们先直接上一个总结设计描述,然后再查看每个部分的源码
新增实例整体逻辑描述
Nacos 是利用了双层内存队列 + 异...
ZealSinger 发布于
Nacos源码学习计划-Day08-集群-心跳健康检查 技术文档
我们前面已经就Nacos单机部署情况下,服务上线,服务下线,心跳健康检测三个最主要的方面,从服务端和客户端两个方面都进行了学习,接下来我们要学习Nacos集群相关的部分。我们首先来想想,Nacos集群和单机下,某些策略/逻辑/实现一定一样的么?会遇到哪些新的问题?例如
Nacos单机下,服务端会开启心跳健康检查的定时任务,集群状态下,有没有必要所有的集群节点...
ZealSinger 发布于
Nacos源码学习计划-Day07-服务下线+第一阶段总结 技术文档
当我们在关闭Nacos客户端的时候,就会同之服务端进行服务下线操作,并且在服务下线的时候,我们知道其他客户端中存在缓存的,所以其实也是需要通知其余客户端更新缓存信息的(当然,前面我们有分析过,在新版本的Nacos中,客户端的缓存已经不再是首查,而是作为兜底的存在,所以这个情况下相对而言就没那么需要通知客户端进行缓存更新操作) 这一章主要就是来看Nacos服务...
ZealSinger 发布于
Nacos源码学习计划-Day06-服务端检测不健康实例 技术文档
在Nacos的管理界面中,我们可以看到会展示健康实例的个数,这个数据是怎么获取的?Nacos服务端是如何知道对应的客户端状态是否可用的呢? 其实我们在《02-客户端如何发其注册》这一章节中,我们提到和分析过客户端发送心跳的逻辑,也就是通过这个心跳,让服务端知道客户端的状态,这个BeatInfo最终也还是落到了一个HTTP请求,转门发送到了Nacos服务端的心...
ZealSinger 发布于
Nacos源码学习计划-Day05-服务调用时的调用链路(如何获取服务信息) 技术文档
前面的内容中,我们已经了解到了服务是如何触发自动注册到Nacos中,以及对应的Nacos中是如何处理这个注册请求的(如何保存服务到内存中的) 当我们的服务注册后,我们就可以通过Nacos对于已经注册的所有的服务进行Feign的方式进行服务之间的调用,那么这个过程是如何实现的呢?今天就来探索这个问题 首先我们来理一下整个服务调用的流程: 每个客户端(服务调用者...
ZealSinger 发布于
Nacos源码学习计划-Day04-服务端如何处理客户端的注册请求(下) 技术文档
上一篇文章中,我们整体分析了服务端接收到请求,到了哪个Controller,以及这个Controller的后续处理逻辑,我们能知道最终这个Controller的操作结果是:将信息封装为了Instance对象,创建一个对应的Key,将其封装保存在了DataStore这个对象中,并且将key和action封装为一个Pair二元组且使用addTask方法将其放入到...
ZealSinger 发布于
Nacos源码学习计划-Day03-服务端如何处理客户端的注册请求(上) 技术文档
服务端如何处理客户端的注册请求 我们前面有了解到,客户端的自动注册是借助Spring的消息监听机制,在Spring启动后自动发送了HTTP的注册请求到服务端,那么今天我们来看看,这个请求打到Nacos服务端之后,服务端是如何处理的,这个时候就要看我们的下载的Nacos源码了 分析请求入口 既然要看服务端如何处理这个HTTP请求的,那就很明显需要找到对应的UR...
ZealSinger 发布于
Nacos源码学习计划-Day02-客户端自动注册和客户端心跳检测原理 技术文档
如何找到源码阅读入口 对于一般的业务项目,其实我们可能是根据需要修改的业务看对应的接口功能,当自己学习的时候,可能是根据前端的页面进行一点点的一个接口一个接口的看,这个其实对于这种中间件/框架的源码而言,其实不是很实用。 类似于Nacos源码,我们首先采用猜的方式进行,最好是结合着当前服务的功能来猜。Nacos我们知道,他的作用是配置中心和注册中心,我们自己...
ZealSinger 发布于
Nacos源码学习计划-Day01-前言:如何学习源码 技术文档
前言 看源码,尤其是对于一个从0开始的源码学习者而言,往往都是有者浓烈的开头兴趣,但是在看代码的过程中,被一次又一次的方法跳转,一层有一层的调用给劝退,我个人也看过一些源码,也有同样的感受。我曾将尝试看过Spring的源码,MyBatis的源码,Java中一些JDK的底层实现等等,但其实没有任何一个框架是我从头到尾完整的都看过的,我可以相信,大多人和我一样,...
ZealSinger 发布于
Kotlin-Netty-Akka-IM项目--version1.0 项目
很久之前哩,个人写过一次聊天系统,本身自己对于以前的这个简易的聊天系统不是很满意,再加上之后也看过了好几篇个人感觉很不错的关于通讯技术的,IM系统的技术文章,对于这块的技术栈其实一直都有想尝试的心理,最近也学习了AKKA,脑子就迸发出了AKKA写IM系统的想法。然后自己最近对Kotlin有点上头,所以基础语言打算用Kotlin。AKKA的设计思想和IM系统贴...
ZealSinger 发布于
