深度对比三种主流微服务配置中心
在实际生产中,配置中心常常需要涉及多环境或者多集群,业务在开发的时候可以将开发环境和生产环境分开,或者根据不同的业务线存在多个生产环境。如果各个环境之间的相互影响比较小(开发环境影响到生产环境稳定性),配置中心可以通过逻辑隔离的方式支持多环境。 Spring Cloud Config支持Profile的方式隔离多个环境,通过在Git上配置多个Profile的配置文件,客户端启动时指定Profile就可以访问对应的配置文件。 Apollo也支持多环境,在控制台创建配置的时候就要指定配置所在的环境,客户端在启动的时候指定JVM参数ENV来访问对应环境的配置文件。 Nacos通过命名空间来支持多环境,每个命名空间的配置相互隔离,客户端指定想要访问的命名空间就可以达到逻辑隔离的作用。 多集群 当对稳定性要求比较高,不允许各个环境相互影响的时候,需要将多个环境通过多集群的方式进行物理隔离。 Spring Cloud Config可以通过搭建多套Config Server,Git使用同一个Git的多个仓库,来实现物理隔离。 Apollo可以搭建多套集群,Apollo的控制台和数据更新推送服务分开部署,控制台部署一套就可以管控多个集群。 Nacos控制台和后端配置服务是部署在一起的,可以通过不同的域名切换来支持多集群。 配置实时推送的对比 当配置变更的时候,配置中心需要将配置实时推送到应用客户端。 Nacos和Apollo配置推送都是基于HTTP长轮询,客户端和配置中心建立HTTP长联接,当配置变更的的时候,配置中心把配置推送到客户端。 Spring Cloud Config原生不支持配置的实时推送,需要依赖Git的WebHook、Spring Cloud Bus和客户端/bus/refresh端点:
整体比较下来,Nacos和Apollo在配置实时推送链路上是比较简单高效的,Spring Cloud Config的配置推送引入Spring Cloud Bus,链路较长,比较复杂。 部署结构 & 高可用的对比 Spring Cloud Config Spring Cloud Config包含config-server、Git和Spring Cloud Bus三大组件:
本地测试模式下,Spring Cloud Bus和config-server需要部署一个节点,Git使用GitHub就可以。在生产环境中,Spring Cloud Config,config-server需要部署至少两个节点。Spring Cloud Bus如果使用RabbitMQ,普通集群模式至少需要两个节点。 Git服务如果使用GitHub就不用考虑高可用问题,如果考虑到安全性要自建Git私有仓库,整体的成本比较高。Web服务可以部署多节点支持高可用,由于Git有数据的一致性问题,可以通过以下的方式来支持高可用:
Apollo (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |