1.dubbo 出現(xiàn)的背景
? ? 隨著服務(wù)拆分及微服務(wù)化的對(duì)公司業(yè)務(wù)帶來的高可用另患,很多有技術(shù)輸出的公司都開始定制符合自身業(yè)務(wù)需求的RPC 系統(tǒng)笨鸡,來滿足自身服務(wù)治理的需求髓涯,dubbo 便是阿里巴巴為了滿足自身業(yè)務(wù)發(fā)展需要定制開發(fā)的服務(wù)治理框架徘溢。
2.dubbo服務(wù)治理能力
? ??dubbo 主要是一個(gè)分布式服務(wù)治理解決方案盹兢,那么什么是服務(wù)治理?服務(wù)治理主要是針對(duì)大規(guī)模服務(wù)化以后,服務(wù)之間的路由胃珍、負(fù)載均衡梁肿、容錯(cuò)機(jī)制蜓陌、服務(wù)降級(jí)這些問題的解決方案,而 Dubbo 實(shí)現(xiàn)的不僅僅是遠(yuǎn)程服務(wù)通信吩蔑,并且還解決了服務(wù)路由钮热、負(fù)載、降級(jí)烛芬、容錯(cuò)等功能隧期。
3.dubbo 基本使用
? ? 1.服務(wù)提供者
? 2.服務(wù)消費(fèi)者
3.探究Main.mian(args) 方法
? ? 我們除了使用 上面獲取spring 容器獲取對(duì)應(yīng)Bean 方式調(diào)用 服務(wù)提供者服務(wù)仆潮,我們也可以通過Main.main(args) dubbo 的Main 類,實(shí)現(xiàn)dubbo 服務(wù)的啟動(dòng)遣臼。
1.Main.main(args); 來啟動(dòng) dubbo 服務(wù)性置,到底是如何實(shí)現(xiàn)的?
? ??正常情況下揍堰,我們會(huì)認(rèn)為服務(wù)的發(fā)布鹏浅,需要 tomcat、或者 jetty 這類的容器支持屏歹,但是只用 Dubbo 以后隐砸,我們并不需要這樣重的服務(wù)器去支持,同時(shí)也會(huì)增加復(fù)雜性蝙眶,和浪費(fèi)資源季希。Dubbo 提供了幾種容器讓我們?nèi)?dòng)和發(fā)布服務(wù)
2.Duboo 容器類型
1.Spring Container:自動(dòng)加載 META-INF/spring 目錄下的所有 Spring 配置。
2.logback Container:自動(dòng)裝配 logback 日志
3.Log4j Container:自動(dòng)配置 log4j 的配置
Dubbo 提供了一個(gè) Main.main 快速啟動(dòng)相應(yīng)的容器幽纷,默認(rèn)情況下式塌,只會(huì)啟動(dòng) spring 容器
3.Spring Container 啟動(dòng)原理?
? ? ?默認(rèn)情況下,spring 容器霹崎,本質(zhì)上珊搀,就是加在 spring ioc 容器,然后啟動(dòng)一個(gè) netty 服務(wù)實(shí)現(xiàn)服務(wù)的發(fā)布尾菇,所以并沒有特別多的黑科技,下面是spring 容器啟動(dòng)的代碼
public void start() {
? ? ? ? ? ? ?String configPath =ConfigUtils.getProperty("dubbo.spring.config");
? ? ? ? ? ? ?if (StringUtils.isEmpty(configPath)) {
? ? ? ? ? ? ? ? ?configPath = "classpath*:META-INF/spring/*.xml";
? ? ? ? ? ? ?}
? ? ? ? ? ? context = new ClassPathXmlApplicationContext(configPath.split("[,\\s]+"),
? ? ? ? ? ? context.refresh();
? ? ? ? ? ? context.start();
}
4.dubbo 服務(wù)注冊(cè)發(fā)現(xiàn)實(shí)現(xiàn)
? ? 1.引入?curator-framework囚枪,curator-recipes jar
? ? 2.服務(wù)端修改 application.xml 文件?
? ? ? ? <dubbo:registry address="zookeeper://192.168.13.102:2181" />
? ? ? ? 如果是 zookeeper 集群派诬,則配置的方式是address=”zookeeper ://ip:host?backup=ip:host,ip:host”
? ? 3.客戶端改造
? ??????<dubbo:registry address="zookeeper://192.168.13.102:2181" />
? ?4.Dubbo 集成 Zookeeper 的實(shí)現(xiàn)原理
5.dubbo 每次都要連 zookeeper?
? ??答案很顯然是通過緩存實(shí)現(xiàn) 链沼,在消費(fèi)端的配置文件中指定如下路徑
? ? <dubbo:registry id="zookeeper"address="zookeeper://192.168.13.102:2181" file="d:/dubbo-server" />
4.Dubbo 監(jiān)控平臺(tái)安裝
Dubbo 的監(jiān)控平臺(tái)也做了更新默赂,不過目前的功能還沒有完善,
在這個(gè)網(wǎng)站上下載 Dubbo-Admin 的包:https://github.com/apache/dubbo-admin
1. 修 改 dubbo-admin-server/src/main/resources/application.properties中的配置信息
2. mvn clean package 進(jìn)行構(gòu)建
3. mvn –projects dubbo-admin-server spring-boot:run
4. 訪問 localhost:8080