Nacos 源码分析 —— 总览

https://www.jianshu.com/p/20ddf3bc6f8e

nacos源码分析总览

服务发现部分:

觉得不错的地方

1 自己实现了一个简单的raft,就是说不再依赖etcd这种分布式的东西,也不依赖redis或者mysql这种存储的东西。就是自己搞定。

2 变化的通知push采用的是udp,我觉得这种比tcp长连接好很多,比我们的http longpoling也要好,比grpc的http/2也要好。老实说通知真的不多,为什么当初我们就没想到用udp。

push用udp有什么不好的地方吗,不好地方就是sdk要开一个udp端口,感觉其实也还好吧。

3 代码的扩展性比较好,健康检查能方便的支持tcp,http和mysql,支持mysql这个挺有意思的,是不是可以理解为db也是一种服务。


raft部分源码分析:

raft如何心跳保持:https://www.jianshu.com/p/b0cdaa64688e
raft如何选举:https://www.jianshu.com/p/5a2d965174ae
raft如何发布内容:https://www.jianshu.com/p/3e40376a34db
raft如何保证内容一致:https://www.jianshu.com/p/b30245d1713e

心跳续约部分源码分析:https://www.jianshu.com/p/29d36e2e9395

健康检查源码分析:https://www.jianshu.com/p/f293ac2fd3e5

服务注册发现分析:

如何实现注册发现:https://www.jianshu.com/p/e1e3ecedc8b3
如何下线被kill -9的实例:https://www.jianshu.com/p/661498752ab9


 

配置中心部分

觉得不错的地方

1 存储还是mysql,不过判断数据是否有变化是根据updateTime,定时根据updateTime范围找有不有数据。

而我们的做法是每次配置变化就向事件表插一条数据,定时看事件表有不有新的数据。感觉没有nacos的做法好,nacos可以限定自己关心的范围,而事件必然是全局的,扩展性不是很好。

猜你喜欢

转载自blog.csdn.net/lppl010_/article/details/89211892