javascript
Spring Boot----SpringBoot整合 Dubbo 和 Zookeeper
下載安裝Zookeeper
linux
使用docker部署
windows:參考(https://blog.csdn.net/ring300/article/details/80446918),下載的zookeeper目錄中需要包含lib(內(nèi)置jar包,否則需要自己導(dǎo)入)
1、將conf目錄下的zoo_sample.cfg文件,復(fù)制粘貼一份,重命名為zoo.cfg
2、創(chuàng)建data目錄和log目錄
3、修改zoo.cfg 文件中的
dataDir=D:\Zookeeper\data datalogDir=D:\Zookeeper\log4、啟動(dòng) 雙擊?zkServer.cmd
對(duì)zoo.cfg文件配置說(shuō)明
tickTime:這個(gè)時(shí)間是作為 Zookeeper 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時(shí)間間隔,也就是每個(gè) tickTime 時(shí)間就會(huì)發(fā)送一個(gè)心跳。
initLimit:這個(gè)配置項(xiàng)是用來(lái)配置 Zookeeper 接受客戶端(這里所說(shuō)的客戶端不是用戶連接 Zookeeper 服務(wù)器的客戶端,而是 Zookeeper 服務(wù)器集群中連接到 Leader 的 Follower 服務(wù)器)初始化連接
時(shí)最長(zhǎng)能忍受多少個(gè)心跳時(shí)間間隔數(shù)。當(dāng)已經(jīng)超過(guò) 10 個(gè)心跳的時(shí)間(也就是 tickTime)長(zhǎng)度后 Zookeeper 服務(wù)器還沒(méi)有收到客戶端的返回信息,那么表明這個(gè)客戶端連接失敗。總的時(shí)間長(zhǎng)度就是
10*2000=20 秒
syncLimit:這個(gè)配置項(xiàng)標(biāo)識(shí) Leader 與 Follower 之間發(fā)送消息,請(qǐng)求和應(yīng)答時(shí)間長(zhǎng)度,最長(zhǎng)不能超過(guò)多少個(gè) tickTime 的時(shí)間長(zhǎng)度,總的時(shí)間長(zhǎng)度就是 5*2000=10 秒
dataDir:顧名思義就是 Zookeeper 保存數(shù)據(jù)的目錄,默認(rèn)情況下,Zookeeper 將寫數(shù)據(jù)的日志文件也保存在這個(gè)目錄里。
clientPort:這個(gè)端口就是客戶端連接 Zookeeper 服務(wù)器的端口,Zookeeper 會(huì)監(jiān)聽這個(gè)端口,接受客戶端的訪問(wèn)請(qǐng)求。
?
SpringBoot整合Dubbo(RPC)
整合dubbo添加依賴
方法文檔:https://github.com/apache/dubbo-spring-boot-project
1、provider 發(fā)布服務(wù)
1.1 在provider中的pom添加dubbo依賴和zookeeper相關(guān)依賴
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><dependency><!--zookeeper應(yīng)該不需要在依賴了--><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.5.5</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency>1.2 application.properties
#當(dāng)前服務(wù)的名字可以任意 dubbo.application.name=provider #zookeeper的默認(rèn)端口2181 dubbo.registry.address=zookeeper://localhost:2181 #將service包下的服務(wù)發(fā)布出去 dubbo.scan.base-packages=com.zy.provider.service1.3 Service(非常重要,需要有一份一樣的service接口到consumer中,全限定類型(包名和類名都要一樣))
package com.zy.provider.service;public interface TestService {public String test(); }1.4 serviceimpl
@Component @Service //注解到實(shí)現(xiàn)類上【org.apache.dubbo.config.annotation.Service;】 public class TestServiceImpl implements TestService { //必須有一個(gè)接口@Overridepublic String test() {return "ok";} }1.5 啟動(dòng):表示注冊(cè)成功(否則,測(cè)試consumer的時(shí)候會(huì)報(bào)錯(cuò))
?
2、consumer 引用服務(wù)
2.1 引入依賴
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><!--排除zookeeper內(nèi)部的日志jia包,防止和自生項(xiàng)目引入日志jar包產(chǎn)生沖突--><!--zookeeper應(yīng)該是不需要在依賴了--><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.5.5</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency>2.2 application.properties
dubbo.application.name=consumer dubbo.registry.address=zookeeper://192.168.1.101:2181 server.port=80822.3 創(chuàng)建service接口(這個(gè)service和provider中的 service需要一樣,全限定類名一樣(包名+接口名字))
package com.zy.provider.service; //注意包名public interface TestService {public String test(); }2.4 創(chuàng)建自己項(xiàng)目中的service
package com.zy.consumer.service; import com.zy.provider.service.TestService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service;@Service public class ConsumerService {@Reference //注意包是dubbo下的org.apache.dubbo.config.annotation.Reference;TestService testService;public void test(){System.out.println(testService.test());} }2.5 測(cè)試,控制臺(tái)打印ok
@RunWith(SpringRunner.class) @SpringBootTest public class ConsumerApplicationTests {@Autowiredprivate ConsumerService consumerService;@Testpublic void contextLoads() {consumerService.test();} }
2.6 補(bǔ)充目錄結(jié)構(gòu)
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/yanxiaoge/p/11396326.html
總結(jié)
以上是生活随笔為你收集整理的Spring Boot----SpringBoot整合 Dubbo 和 Zookeeper的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: BT601 BT656 BT709 BT
- 下一篇: gradle idea java ssm