官网地址
https://github.com/ctripcorp/apollo
下载源码:
https://github.com/ctripcorp/apollo/releases
配置中心介绍:
Apollo配置中心设计
部署&开发遇到的常见问题
参考文章
1,apollo源码阅读,注意基于1.5以下
http://www.iocoder.cn/categories/Apollo/
2,携程Apollo统一配置中心的搭建和使用(java)
https://blog.csdn.net/luhong327/article/details/81453001
3,metaService介绍
https://www.jianshu.com/p/12ae8455d48a
疑问:
1,是基于jar包开发,还是基于源码开发(是否使用的是自己的Eureka)
基于jar开发,apollo-configService服务包含config,eureka,meta,相当于部署在同一个服务上,apollo-configService本身是一个eureka服务端,也是一个客户端。
如果使用自己的eureka,首先把apollo-configService 中Eureka注销掉,只是把它作为一个Eureka客户端,apollo-configService服务只包含config,meta。注意Apollo1.5及以上,与Apollo1.5以下版本,代码不同,注销方式不同。参考上文:常见问题解决。
2,配置文件中meta到底配置什么地址,configService地址,metaService地址,还是Eureka地址
参考:https://www.jianshu.com/p/12ae8455d48a
答案是:metaService地址。通过疑问1,我们知道无论哪种情况,configService包含config和meta,在网上查询了很多质料,很多说meta地址是config服务地址,因为config和meta在一个机器上,这样配置是对的,但说不通。参考下图:官网总体设计图。
可以看出,Client或者Portal是调用Meta Service,Meta Service关联Eureka,进而通过负载均衡算法找到一台,Config Service或则Admin Service。
3,Meta Service是一个什么角色
它是一个Eureka客户端
4,为什么要使用Meta Service封装Eureka
Client或者Portal通过负载均衡算法调用Config Service或则Admin Service,不用每次都通过eurekaClient调用,封装成meta service后,Client和Portal启动项目初始化时,获取meta service地址,通过meta service 统一调用eurekaClient获取config,admin服务地址。缓存到本地。
5,为什么Meta Service可以获取到Config Service或Admin Service服务ip+端口
前面说了Meta Service也注册到eureka了,它是一个Eureka客户端,它本地也存储了Eureka服务列表,就相当于客户端直接相互访问,先获取Config Service或Admin Service服务名,ribbon负载均衡,找到ip+端口,http调用。
下图为获取configService服务ip端口源码:可以看出,调用configService通过 EurekaClient而不是FeignClient。