您好,登錄后才能下訂單哦!
小編給大家分享一下springBoot+dubbo+zookeeper如何實(shí)現(xiàn)分布式開(kāi)發(fā)應(yīng)用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
項(xiàng)目結(jié)構(gòu)圖:
pom.xml
<dependencies> <!--導(dǎo)入依賴:Dubbo + zookeeper--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> </dependency> <!--引入zkclient--> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <!--引入zkclient,可能會(huì)日志沖突,還需要剔除日志依賴--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <!--排除這個(gè)slf4j-log4j12--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
application.properties
server.port=8001 # 服務(wù)應(yīng)用名字 dubbo.application.name=provider-server # 注冊(cè)中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 # 哪些服務(wù)要被注冊(cè) dubbo.scan.base-packages=com.wlm.service
TicketService
package com.wlm.service; public interface TicketService { public String getTicket(); }
TicketServiceImpl.java
package com.wlm.service; import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; //zookeeper:服務(wù)注冊(cè)與發(fā)現(xiàn) @Service //可以被掃描到,在項(xiàng)目一啟動(dòng)就自動(dòng)注冊(cè)到注冊(cè)中心 @Component //使用了Dubbo后盡量不要用Service注解 public class TicketServiceImpl implements TicketService { @Override public String getTicket() { return "咸魚(yú)_翻身"; } }
打開(kāi)服務(wù)端,開(kāi)啟之后不要點(diǎn)掉,讓他在后臺(tái)運(yùn)行:
執(zhí)行服務(wù)端的jar包,待會(huì)我們要監(jiān)控服務(wù)端:
運(yùn)行上面的服務(wù)端代碼,然后去游覽器中查看
http://localhost:7001/
pom.xml
<dependencies> <!--導(dǎo)入相關(guān)的依賴--> <!--導(dǎo)入依賴:Dubbo + zookeeper--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> </dependency> <!--引入zkclient--> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <!--引入zkclient,可能會(huì)日志沖突,還需要剔除日志依賴--> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <!--排除這個(gè)slf4j-log4j12--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
application.properties
server.port=8002 # 消費(fèi)者去哪里拿服務(wù),需要暴露自己的名字 dubbo.application.name=consumer-server # 注冊(cè)中心的地址,可以在任何電腦上! dubbo.registry.address=zookeeper://127.0.0.1:2181
TicketService
package com.wlm.service; public interface TicketService { public String getTicket(); }
UserService.java
package com.wlm.service; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; @Service //放到容器中,注意區(qū)分 public class UserService { //想拿到provider-server提供的票,要去注冊(cè)中心拿到服務(wù) @Reference //引用, pom坐標(biāo),可以定義路徑相同的接口名 TicketService ticketService; public void buyTicket(){ String ticket = ticketService.getTicket(); System.out.println("在注冊(cè)中心拿到=>"+ticket); } }
ConsumerServerApplicationTests.java
package com.wlm; import com.wlm.service.UserService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class ConsumerServerApplicationTests { @Autowired UserService userService; @Test void contextLoads() { userService.buyTicket(); } }
運(yùn)行ConsumerServerApplicationTests.java結(jié)果:拿到服務(wù)端的”咸魚(yú)_翻身“
前提:zookeeper服務(wù)已經(jīng)開(kāi)啟
1.首先提供者提供服務(wù)
導(dǎo)入依賴
配置注冊(cè)中心的地址,以及服務(wù)發(fā)現(xiàn)名,和要掃描的包
在想要被注冊(cè)的服務(wù)上面增加一個(gè)注解@Service
2.消費(fèi)者如何消費(fèi)
導(dǎo)入依賴
配置注冊(cè)中心的地址,配置自己的服務(wù)名
從遠(yuǎn)程注入服務(wù) @Reference
看完了這篇文章,相信你對(duì)“springBoot+dubbo+zookeeper如何實(shí)現(xiàn)分布式開(kāi)發(fā)應(yīng)用”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。