作者讲了什么
作者先开始讲到了,我们配什么需要配置中心,然后讲述了,配置中心的作用是什么,对比了一下几个常用的配置中心的选择和优缺点,再次之上,提出了配置中心如何保证实例都能够保证读取到一个相同的配置文件
为什么要配置中心
因为过去单体服务架构里面,所有的配置文件,都是写在代码里的,统一管理统一配置
但是一旦到了分布式架构里面的时候,我们的服务被拆分成了很多个,每个服务可能会起很多个实例
一旦我们需要查看或者修改某个服务的时候,我们只能通过找到对应的git上,找到对应的服务来改,在分布式架构下,服务数量剧增,每个单独来修改,查看,是不合适的
需要一个统一管理,统一配置的地方,所以有了配置中心
配置中心的作用
-
能够在一个地方,统一管理,查看到每一个服务的配置信息
-
能够在一个配置中心中,修改后,能马上通知,同步到对应的应用实例中去
-
能够在一个配置中心中,修改后,能马上通知,同步到对应的应用实例中去
配置中心应该是个ap系统还是cp系统呢
作者给出的答复是,AP系统
首先,配置中心是首先要保证高可用的,因为如果任何一个服务重启的时候,读不到配置文件,将会导致大面积的瘫痪
第二就是,配置中心上的信息,是人工配置的信息,他对应强一致性本身,是不敏感的,人工改的次数,并不到,所以最终还是采用的最终一致性的方案
几个配置中心,Zookeeper,etcd,eureka,这些都有什么不同
zk和etcd,本身都是一个一个cp系统,他们在出现网络分区的时候,是不能提供服务的,但是eureka是个ap系统,它本身即便发生了网络分区,他也是能对外提供服务的
那么配置中心,如果要将所有的配置信息同步到实例,怎么去保证强一致性呢
作者给出的答复就是,只有所有的proxy实例都达成了相同的共识的时候,才允许对外提供服务
配置信息不能直接通过网络进行同步,而是需要通过类似二阶段提交的方式,来解决
使用2pc的方式,二阶段提交,第一阶段的时候,先让所有的实例,收到修改配置的信息,但是实际上不修改信息,只是做好修改信息准备