Nacos是阿里巴巴2018年开源的服务发现和配置管理项目,并于今年的4月10号GA,距今已经过去了快两个月时间了。Nacos GA代表着用户可以在生产环境上大规模使用,目前也已经有众多用户登记使用。在GA之后,Nacos并未停下前进的脚步,不断的开发新的功能和优化用户体验。与此同时,Nacos倾听社区的声音,每一次迭代和发布都会包含用户关心的功能点。根据Nacos既定的演进方向,以及在与社区进行充分的讨论后,Nacos接下来的版本计划也浮出水面。Nacos在今年还将发布6到7个大版本,每个版本包含的重要特性如下:
#### 1.1.01.2.0
- 配置权限控制: 对配置的读写进行权限的控制,支持对接三方权限系统
- DNS协议,支持K8S服务域名解析: 通过支持DNS协议访问,无侵入的解决服务发现问题,并支持K8S域名解析
- Service Mesh打通: 对接开源流行的Service Mesh组件,支持作为服务发现后端和配置管理后端
1.3.0
- 服务权限控制: 对服务的注册注销及查询进行权限的控制,支持对接三方权限系统
- Mysql依赖可替换为其他存储: 支持将MySQL依赖替换为Oracle等常见数据库系统依赖
- gRPC服务发现支持: 通过Go SDK和Java SDK支持gRPC和gRPC-java的服务注册与发现
1.4.0
- 配置加密: 敏感配置加密存储和传输,保证数据安全
- confd模式模板渲染: 支持将配置或者服务数据渲染到文件模板,适配异构系统
- 健康检查SPI化,可以使用K8S健康检查: 支持使用Kubernetes自带的健康检查方式来检查服务实例的健康状态
1.5.0
- 配置发布审批: 配置发布管控体系,减少人为失误引起的故障
- IPv6支持: 支持在IPv6网络环境下进行服务的注册与发现和配置的管理
- 长连接推送通道重构: 重构推送通道,提升SLA
- configMap对接: 和Kubernetes的配置进行打通
1.6.0
- Thrift服务发现: 支Thrift服务框架服务注册于发现
- 支持Region、AZ等类似信息存储: 支持进行环境信息的注册,根据环境进行自定义访问策略
- 运维命令行: 使用更简洁的方式,进行集群的运维
- 打标支持,对接K8S label: 能够打自定义标签,能够理由Kubernetes的label进行负载均衡及灰度配置等
1.7.0
- 无状态化: 存储和计算分离,让系统本身无状态
- 一致性协议抽象及Raft协议替换: 全新的Raft协议,支持替换
同时,为了最大化降低用户的部署运维成本,我们会先支持多种数据库的依赖,包括Oracle等数据库,这样可以让用户不需要为了使用Nacos再单独搭建一套MySQL集群。后面我们会更进一步,将外部数据库依赖彻底去除,支持Nacos完全使用本地存储。包括无状态化,也会在未来的版本支持,争取让用户以最低成本的方式运行Nacos。
### 与更多生态进行对接,形成联动优势,提升用户效率 一个产品的成功,往往是因为一个生态的成功。Nacos目前架构的优势之一,就是可以比较平滑的支持多个生态。目前已经支持的有Dubbo生态、Spring Cloud生态,而正在打通的有gRPC和Kubernetes,未来还计划支持Thrift等服务框架。我们的目标是用户无论在哪种生态下,都不需要为注册中心或者配置中心的选型烦恼。### 云原生领域布局和组件打通 云原生是当前非常火热的一个概念。在CNCF、Pivotal等机构相继定义和大力推动云原生的背景下,用户对整个软件的生命周期管理都有了全新的认知。云原生是一个极具潜力的理念,Nacos也会在接下来的演进中对云原生做重点支持。### 内核升级,提升性能和稳定性 Nacos目前的内核,包括自建Raft、MySQL依赖,长轮询及UDP推送等,都会在接下来进行重新设计,目标是优化到最合理的架构,提升整体的性能和稳定性。