简介

前面我们分析了携程的 apollo(见 详解apollo的设计与使用),现在再来看看阿里的 nacos。

和 apollo 一样,nacos 也是一款配置中心,同样可以实现配置的集中管理、分环境管理、即时生效等等。不过,nacos 还具备了服务发现的功能。

分析 apollo 时,我们通过四个问题展开:

  1. 为什么使用配置中心
  2. 如何设计一个配置中心
  3. apollo 是如何设计的
  4. 如何使用 apollo

当然,我们也可以用同样的套路来分析 nacos,不过,第 1、2 个问题是一样的,没必要再讲一遍,而第 4 个问题嘛,我看官网的文档已经足够详细。所以,这篇博客将重点分析 nacos 和 apollo 在设计上的差异。

以下分析基于 apollo 1.8.0 和 nacos 2.1.0。

安全性的差异

这里说的安全性,不是指控制台读配置中心,而是客户端读配置中心。

之前我说过,如果所有环境都共用一个配置中心,会存在安全问题。因为开发人员能拿到测试环境的配置,按理也能拿到生产环境的配置。

为了解决这个问题,一般有两个方案:

  1. 不同环境使用不同的配置中心。apollo 用的就是这一种,当客户端需要获取生产配置时,运维需要在项目的启动参数中指定生产环境的配置中心。这种方案要想可靠,生产环境的 config server 地址绝对不能泄露。可怕的是,我曾经就遇到过直接把 config server 注册到公用 eureka 上面的。

  1. 不同环境使用同一的配置中心,但要做好环境隔离。nacos 则采用这一种,隔离的方案就是命名空间 + 鉴权。和 apollo 不同,客户端去读 nacos 是需要账号密码的,当客户端需要获取生产配置时,运维需要在项目的启动参数中指定生产环境的 namespace 以及对应的账号密码。

上面说到了 namespace。apollo 和 nacos 都有这个概念,不过,在 apollo 里,namespace 可以看成是一个具体的配置文件,而 nacos 里,namespace 表示具体的环境。它们的数据模型如下图。使用 apollo 是通过连接不同的 config server 来区分环境,而 nacos 则通过指定 namespace 来区分

综上,我们知道,要想确保安全,使用 apollo 时不能泄露 config server 生产环境的地址,使用 nacos 时不能泄露对应生产环境 namespace 的账号密码。如果要说哪种方案更安全,我会更倾向于 nacos,因为相比账号密码,服务器地址会更容易泄露。// zzs001

系统复杂度的差异

在讲 apollo 的设计时,我吐槽过,apollo 的架构太重了。

首先,它把配置中心拆成了 config service、admin service、portal,这一点我倒是可以接受。

我不能接受的是,apollo 为了实现客户端到 config service 的负载均衡而引入了过多的组件。如图,增加了 SLB、meta server、eureka 等组件,这个我真的觉得没必要,直接使用 SLB 来做负载均衡就行。但官方说之所以这么设计是为了避免客户端和 config service 之间的长连接给 SLB 增加过多的负担,这么说的话,,也不无道理。

不过,有一点比较好的就是,apollo 把 config service、eureka 和 meta server 打包在一起部署。

我们来看看 nacos,首先,它没有将配置中心拆成很多个服务,其次,它的负载均衡方案也比较简单,一个 SLB 就可以搞定。要知道 nacos 同样也维护着与客户端的长连接。

那么,这两种架构哪种更好呢?我会更倾向于使用 nacos,至少中小型系统我会这么选择,因为它更简单。不过,apollo 考虑到长连接对 SLB 的负担而增加了那么多组件,按理是经过了深思熟虑,所以,我很想知道,在大型系统中使用 nacos,是否有遇到过 SLB 瓶颈的案例,希望有大佬指点。

以上基本讲完了 nacos 的结构和使用。如有错误,欢迎指正。

最后,感谢阅读。

参考资料

Nacos 官方文档

本文为原创文章,转载请附上原文出处链接:https://www.cnblogs.com/ZhangZiSheng001/p/16344519.html

配置中心的设计-nacos vs apollo的更多相关文章

  1. K8S(12)配置中心实战-多环境交付apollo三组件

    k8s配置中心实战-多环境交付apollo三组件 目录 k8s配置中心实战-多环境交付apollo三组件 1.环境准备工作 1.1 zk环境拆分 1.2 namespace分环境 1.3 数据库拆分 ...

  2. K8S(11)配置中心实战-单环境交付apollo三组件

    k8s配置中心实战-交付apollo三组件 目录 k8s配置中心实战-交付apollo三组件 1 apollo简单说明 1.1 apollo最简架构图: 1.2 apollo组件部署关系 2 为app ...

  3. SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(上)

    不断踩坑并解决问题是每个程序员进阶到资深的必要经历并以此获得满足感,而不断阅读开源项目源码和总结思想是每个架构师成长最佳途径.本篇拉开SpringCloud Alibaba最新版本实战和原理序幕,以工 ...

  4. 在kubernetes集群里集成Apollo配置中心(6)之实战使用apollo分环境管理dubbo服务

    生产实践 1.迭代新需求/修复BUG(编码--->提git) 2.测试环境发版,测试(应用通过编译打包发布至test命名空间) 3.测试通过,上线(应用镜像直接发布至prod命名空间) 系统架构 ...

  5. kubernetes实战-配置中心(二)交付apollo配置中心到k8s

    apollo官网:官方地址 apollo架构图: apollo需要使用数据库,这里使用mysql,注意版本需要在5.6以上: 本次环境mysql部署在10.4.7.11上,使用mariadb:10.1 ...

  6. SpringBoot使用Nacos配置中心

    本文介绍SpringBoot如何使用阿里巴巴Nacos做配置中心. 1.Nacos简介 Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计.它可以帮助您轻松构建云 ...

  7. 携程Apollo(阿波罗)配置中心Spring Boot迁移日志组件,使用配置中心进行管理的思路

    说明: 1.Spring Boot项目默认使用logback进行日志管理 2.logback在启动时默认会自动检查是否有logback.xml文件,如果有时会有限加载这个文件. 3.那么如果是用配置中 ...

  8. 配置中心-Apollo

    配置中心-Apollo 2019/10/01 Chenxin 配置服务主要有 携程Apollo.百度Disconf.阿里ACM,目前以Apollo用户量最大.适用场景,多用于微服务,与K8S结合好. ...

  9. Apollo配置中心的实战

    31.携程 Apollo 配置中心介绍~1.mp4 32.Apollo核心概念~1.mp4 32.Apollo核心概念~1.mp4 每个应用需要有一个唯一的AppID 要在指定的机器上的server. ...

随机推荐

  1. jboss修改内存

    在修改配置文件,在 <JBOSS_HOME> /bin/stadalone.conf中      找到并修改  如图

  2. IO流的简单实现

    IO流的几种实现方式 学习目标: 例题: 字节输出流 字节输入流 字符输入流 字符输出流 学习目标: 熟练掌握IO流的基本实现方式 例题: 字节输出流 代码如下: public class Outpu ...

  3. Python使用函数模拟“汉诺塔”过程

    运行效果: 源代码: 1 # -*- coding:utf-8 -*- 2 ##汉诺塔游戏开始 3 _times=0 #用于统计移动次数 4 def hannuota(nlist,mfrom,mpas ...

  4. python基础练习题(题目 三数排序。)

    day40 --------------------------------------------------------------- 实例066:三数排序 题目 输入3个数a,b,c,按大小顺序 ...

  5. Java web与web gis学习笔记(一)——Tomcat环境搭建

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  6. XCTF练习题---MISC---glance-50

    XCTF练习题---MISC---glance-50 flag:TWCTF{Bliss by Charles O'Rear} 解题步骤: 1.观察题目,下载附件 2.下载完成以后,隐隐约约像是一张动图 ...

  7. postman4.15

    测开培训笔记4.15 postman:很主流的API测试工具,也是在工作中使用很广泛的研发工具 queue 队列 先进先出的原则 列如:客户端有100个请求 服务端最多只能承受90个 其余都要排队进行 ...

  8. Idea分享项目到全球最大同x交友网站gayhub居然失败了!我居然没有权限!来看看解决方法吧

    Idea分享项目到全球最大同x交友网站gayhub居然失败了! 事情是这样的,刚写完一个动态网页就想着部署到github上让大家看看(装逼),然而在我share project时,它告诉我: 大概意思 ...

  9. [笔记] 有向无环图 DAG

    最小链覆盖 (最长反链) 最小链覆盖 \(=n-\) 最大匹配. 考虑首先每个点自成一条链,此时恰好有 \(n\) 条链,最终答案一定是合并(首尾相接)若干条链形成的. 将两点匹配的含义其实就是将链合 ...

  10. Intel CPU平台和架构介绍

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 服务器主板上数据传输流依次为CPU .内存.硬盘和网卡, ...