Skip to main content

Nacos GA后的整体规划

· 7 min read

Nacos是阿里巴巴2018年开源的服务发现和配置管理项目,并于今年的4月10号GA,距今已经过去了快两个月时间了。Nacos GA代表着用户可以在生产环境上大规模使用,目前也已经有众多用户登记使用。在GA之后,Nacos并未停下前进的脚步,不断的开发新的功能和优化用户体验。与此同时,Nacos倾听社区的声音,每一次迭代和发布都会包含用户关心的功能点。根据Nacos既定的演进方向,以及在与社区进行充分的讨论后,Nacos接下来的版本计划也浮出水面。Nacos在今年还将发布6到7个大版本,每个版本包含的重要特性如下:

#### 1.1.0
  • Go SDK发布: Go语言SDK
  • 地址服务器: 使用地址服务器模式进行Nacos服务端集群寻址
  • 灰度配置: 设置灰度的机器IP来进行配置的灰度发布

1.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推送等,都会在接下来进行重新设计,目标是优化到最合理的架构,提升整体的性能和稳定性。