Nacos 是阿里巴巴2018年7月份开源的项目,如其名, Naming and Configuration Service ,专注于服务发现和配置管理领域。
Nacos 是什么?Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提供「注册中心」、「配置中心」和「动态DNS服务」三大功能。
动态配置服务动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。
动态配置消除了配置变更时重新部署应用和服务的需要。
配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
服务发现管理动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。
Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。
Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。
借助Nacos,您可以更容易地为您的服务实现断路器。
动态DNS服务通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。
动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。
Nacos 解决的问题 服务配置的动态管理我们的配置一般都通过如下几种形式存在
硬编码--作为类字段的形式存在,导致:动态修改困难,没有持久化
配置文件( properties、yml 文件等)--导致:配置动态变更,可能需要重启应用,让配置生效。当然,你也可以在代码中增加一个定时任务,如每隔 10s 读取配置文件内容,让最新的配置能够及时在应用中生效,这样也就免去了重启应用这个“较重”的运维操作。
DB 配置表--导致:配置动态变更,可能需要通过暴露管理接口去解决。
Nacos 真正将配置从应用中剥离出来,统一管理,优雅的解决了配置的动态变更、持久化、运维成本等问题。
应用自身既不需要去添加管理配置接口,也不需要自己去实现配置的持久化,更不需要引入“定时任务”以便降低运维成本。Nacos 提供的配置管理功能,将配置相关的所有逻辑都收拢,并且提供简单易用的 SDK,让应用的配置可以非常方便被 Nacos 管理起来
服务的动态发现动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。
Nacos支持DNS-Based和RPC-Based(Dubbo)模式的服务发现。
Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。
借助Nacos,您可以更容易地为您的服务实现断路器。
不仅如此,Nacos提供 DNS-F功能, 可以与K8S、Spring Cloud和Dubbo等多个开源产品进行集成,实现服务的注册功能。
实现权重路由,动态DNS服务DNS都是IP策略的就近解析。
Nacos通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。
动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
Nacos 存在的问题 1. 不能支持多种类型的数据库,如:Oracle、PostgreSQL、DB2等
如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。
为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。
2. 不支持配置加密服务配置信息,我们通常需要敏感配置加密存储和传输,保证数据安全
3. 不支持gRPC和Thrift服务发现Thrift、gRPC是RPC中的重要实现
4. 不支持对接Kubernetes中的configMap暂时不能和Kubernetes的配置进行打通
5. 不支持配置发布审批配置发布管控体系,减少人为失误引起的故障
参考链接:
https://grpc.io/docs/
https://zhuanlan.zhihu.com/p/56782065
https://nacos.io/zh-cn/blog/5w1h-what.html
https://nacos.io/zh-cn/blog/nacos-roadmap.html