Dubbo使用Apollo作為配置中心實戰
一.Dubbo支援Apollo的介紹
Apollo是攜程開源的一款配置中心,能夠集中化管理應用不同環境、不同叢集的配置,配置修改後能夠實時推送到應用端,並且具備規範的許可權、流程治理等特性,適用於微服務配置管理場景。
Dubbo目前的最新版本2.7.0將過去單一的註冊中心拆分成了註冊中心、後設資料中心和配置中心。其中配置中心起到的作用之一,就是將配置外部化,也就是將配置從應用內部剝離出去,可以在一個地方統一管理配置,也可以在程式啟動之後從配置中心修改配置,再動態重新整理到應用(前提是應用自身支援在啟動之後切換該配置)。
目前Dubbo已經支援Zookeeper、Nacos、Apollo作為配置中心。本文就將介紹將Apollo作為配置中心的使用方式。
二.Apollo的安裝與使用。
本部分不贅述,請參考官方文件:https://github.com/ctripcorp/apollo/wiki/Apollo%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97
三.Apollo配置Dubbo屬性:
開啟本地安裝的Apollo首頁並登陸:
新建一個應用dubbo-demo-provider,
新建一個namespace,名為dubbo,目前dubbo預設支援的名稱空間為dubbo。
注意不要勾選部門字首,同時設定為public。當設定為private時,只有相同的app.id的應用才可以獲取此配置。而public可以被所有應用獲取。
新增兩條配置:
新增屬性之後,點選“釋出”。
四.Dubbo應用搭建
1.下載Dubbo 2.7.0的原始碼。Dubbo原始碼中自帶了一個demo模組,可以直接執行。本文就通過修改它的配置,來使用Apollo配置中心。
2.開啟dubbo-demo-xml-provider模組下的dubbo-provider.xml配置檔案,註釋掉
<dubbo:registry address="multicast://224.5.6.7:1234" />
新增下面的配置:
<dubbo:config-center app-name="dubbo-demo-provider" protocol="apollo" address="127.0.0.1:8080"/>
3.開啟dubbo-demo-xml-consumer作同樣的配置。
4.demo程式碼講解:
首先是定義了一個介面:
public interface DemoService {
String sayHello(String name);
}
在provider端實現這一介面:
public class DemoServiceImpl implements DemoService {
private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
@Override
public String sayHello(String name) {
logger.info("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
return "Hello " + name + ", response from provider: " + RpcContext.getContext().getLocalAddress();
}
}
服務端啟動類:
public class Application {
/**
* In order to make sure multicast registry works, need to specify '-Djava.net.preferIPv4Stack=true' before
* launch the application
*/
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/dubbo-provider.xml");
context.start();
System.in.read();
}
}
消費者啟動類:
public class Application {
/**
* In order to make sure multicast registry works, need to specify '-Djava.net.preferIPv4Stack=true' before
* launch the application
*/
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/dubbo-consumer.xml");
context.start();
DemoService demoService = context.getBean("demoService", DemoService.class);
String hello = demoService.sayHello("world");
System.out.println("result: " + hello);
}
}
五.下載zookeeper並啟動
因為demo中需要使用zookeeper作為註冊中心,所以需下載zookeeper並啟動。具體方式請自行搜尋。
六.啟動應用
首先啟動provider,輸出日誌:
可以看到,因為沒有設定app.id,所以只能讀取public的配置
再啟動consumer,啟動日誌:
說明consumer呼叫provider成功
七.總結
Dubbo目前對支援Apollo作為配置中心做了一個初步的實現,目前所有的配置都是放到一個key下面(即value的一行是一個dubbo自身的配置)dubbo拿到這個配置後,自己解析為自身的多個配置。後續可能會修改為支援apollo上有多個key。
通過引入配置中心,可以在應用中減少配置,將配置放到配置中心統一管理。並且配置中心可以在不重啟應用的情況下修改配置並推送給應用。當然前提是應用的配置本身支援在啟動後改變並生效(某些配置可能在啟動時生效,但啟動後不能修改)。
相關文章
- springboot工程dubbo使用nacos作為配置中心Spring Boot
- Dubbo與SpringCloud Alibaba使用Nacos作為配置中心和註冊中心SpringGCCloud
- Dubbo使用nacos作為註冊中心原理剖析
- 使用Spring Boot整合Apollo配置中心Spring Boot
- Apollo配置中心-配置熱釋出如何實現
- Docker部署Apollo配置中心Docker
- Apollo 配置中心詳細教程
- SpringBoot 整合 Apollo 配置中心Spring Boot
- Apollo 分散式配置中心(補充)分散式
- SpringBoot整合Apollo配置中心Spring Boot
- Linux安裝Apollo配置中心Linux
- SpringBoot專案使用Nacos作為配置中心Spring Boot
- K8S(11)配置中心實戰-單環境交付apollo三元件K8S元件
- Spring Cloud Alibaba:Nacos 作為註冊中心和配置中心使用SpringCloud
- 攜程 Apollo 配置中心傳統 .NET 專案整合實踐
- 使用 Consul 作為 Python 微服務的配置中心Python微服務
- 新一代開源配置中心-Apollo
- Springboot 整合Apollo配置中心【記錄】Spring Boot
- SpringBoot使用Nacos作為配置中心服務和服務註冊中心Spring Boot
- 初探Nacos(四)-- SpringBoot下使用Nacos作為配置中心Spring Boot
- Dubbo官網實戰使用技巧
- 聊聊如何將資料同步到apollo配置中心
- Spring Cloud Alibaba基礎教程:使用Nacos作為配置中心SpringCloud
- Spring Cloud Alibaba 使用Nacos作為配置管理中心SpringCloud
- Spring Cloud 部署時如何使用 Kubernetes 作為註冊中心和配置中心SpringCloud
- YoyoGo v1.7.2 釋出, 支援 Nacos & Apollo 配置中心Go
- ABP微服務系列學習-對接Apollo配置中心微服務
- SpringBoot與Dubbo整合報錯排查(Nacos作為註冊中心)Spring Boot
- dubbo專案實戰
- 使用memorycache作為session共享配置Session
- 使用Artifactory叢集作為檔案共享中心
- SpringCloud之使用Zookeeper作為註冊中心SpringGCCloud
- 【Dubbo3 終極特性】「雲原生三中心架構」帶你探索 Dubbo3 體系下的配置中心和後設資料中心、註冊中心的原理及開發實戰(中)架構
- dubbo學習筆記---dubbo開發實戰筆記
- dubbo-go 實戰(一)Go
- naocs 作為服務註冊與發現和配置中心
- SpringCloud Alibaba實戰(10:分散式配置中心)SpringGCCloud分散式
- 實戰:Nacos配置中心的Pull原理,附原始碼原始碼