官網地址
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。