写点什么

注册中心篇,欣赏阿里开源 Nacos

用户头像
下雨喽
关注
发布于: 1 小时前

为什么需要 Nacos

现在都流行分布式、微服务啦,一堆机器、服务、团队,谁提供什么服务、服务有哪些机器,总归有个地方知道这些信息、做些事情,不然全靠人肉手工配置,哪记得过来呀

更要命的是分布式环境下,要处理超时、探活、CAP 问题,成千上万的服务、依赖,这玩意哪是人肉搞得定的呀,必须需要一个东西,把这些底层的东西都给屏蔽掉,你可以在上面把这些服务、机器都管起来,这就是“北非参谋长”了

为什么领域模型是这样

假设有那么一个地方,有你需要的信息,那么你需要知道你要什么服务,这是第一点;到了 TCP 网络请求那一层,无非是那个机器、端口、数据包,也就是一个机器的实例,这是第二点;那一个服务下挂一堆实例 <serviceName, List<IP>>就够了吗?

机器毕竟是部署在不同的机房里的,如果上海的机房,调用杭州的机房,网络通信时间肯定增加,这肯定不是我们要的呀;另外的场景比如提供给秒杀使用的服务,跟线上正常的服务,怼一起也不安全不是,那这一堆 List<IP>要分开,也就是集群,这是第三个点

下面上官方图

为什么有插件结构

我们把服务管起来了,什么权重、上线、健康、集群划分,大家都规规矩矩的了,那么你有了这些服务、有了调用数据,还能但点啥捏?

比如哪个服务调了哪个服务,服务的调用时间、容量大小、监控数据,以及调用服务者的权限、服务变更审计,这些都要集成上去,那么怎么集成呢?

听起来整一个 chain 链不行吗,也行,但是监控、权限这那的都有标准的协议,比如 SpringSecurity,只要遵循这套协议,跟其他的实现就可以互通了,而且代码量也小很多,多好,这不就是插件嘛

Nacos 这部分写的很少,目前还在开发中,具体的代码实现上,过两年再看吧

为什么 Nacos 分了 X 层

对于我们开发人员来说,最常见的就是跟现有框架的集成、client,那么会有 SDK、http 接口、命令行,这就是界面层嘛;上文提到的领域模型,自然就是中间那一层啦,上面是对服务的管理、健康检查,下面是服务的元数据(共享内核)

再往下走常见的,其实就是数据的存储、分布式数据的一致性处理,好像不对劲,怎么监控、回调、流量都变成机制放到这一层了,按说这些不是在元数据层之上的嘛

没地方找去呀,现在这块都没开发,代码上也看不出来,仅有的监控也只在 JRaftServer 有用到,难不成 Nacos 开源版又是内部的阉割版?

下面上官方图

为什么 Nacos 要把配置、服务都放到一起管理

官方的解释,版本、权重、容灾策略、负载均衡策略、鉴权配置、自定义标签,这?反正现在还没实现,不晓得有什么根本的共性,都是分布式下的注册信息? 欢迎各位指点

发布于: 1 小时前阅读数: 3
用户头像

下雨喽

关注

海风很腥,海水很苦 2021.06.02 加入

欢迎批评

评论

发布
暂无评论
注册中心篇,欣赏阿里开源Nacos