Springboot整合Apache Dubbo
點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”
優(yōu)質(zhì)文章,第一時間送達(dá)
66套java從入門到精通實(shí)戰(zhàn)課程分享?
一、 通過Docker安裝Zookeeper
docker-compose的yaml文件
version: '3'
services:
??zookeeper:
????image: zookeeper:3.6.1
????container_name: zookeeper
????restart: always
????ports:
??????- 2181:2181
????volumes:
??????- ./zookeeper/data:/data
??????- ./zookeeper/log:/datalog
????networks:
??????- zk-esnet
networks:
??zk-esnet:
????driver: bridge啟動執(zhí)行:
docker-compose up?-d # 后臺啟動二、整合springboot和Apache Dubbo
2.1、創(chuàng)建一個maven項(xiàng)目
項(xiàng)目結(jié)果如圖:
2.2、引入依賴
root模塊的pom文件
xml version="1.0"?encoding="UTF-8"?>
<project?xmlns="http://maven.apache.org/POM/4.0.0"
?????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
????<modelVersion>4.0.0modelVersion>
????
????<parent>
????????<groupId>org.springframework.bootgroupId>
????????<artifactId>spring-boot-starter-parentartifactId>
????????<version>2.3.2.RELEASEversion>
????parent>
????<groupId>com.codegroupId>
????<artifactId>code-oneartifactId>
????<packaging>pompackaging>
????<version>1.0.0version>
???
????
????<modules>
????????<module>dubbo-providermodule>
????????<module>dubbo-consumermodule>
????modules>
????<dependencies>
????????
????????<dependency>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-starter-testartifactId>
????????????<scope>testscope>
????????dependency>
????????
????????<dependency>
????????????<groupId>org.apache.dubbogroupId>
????????????<artifactId>dubbo-spring-boot-starterartifactId>
????????????<version>2.7.8version>
????????dependency>
????????
????????<dependency>
????????????<groupId>org.apache.dubbogroupId>
????????????<artifactId>dubbo-dependencies-zookeeperartifactId>
????????????<version>2.7.8version>
????????????<type>pomtype>
????????dependency>
????dependencies>
????<build>
????????<plugins>
????????????<plugin>
????????????????<groupId>org.springframework.bootgroupId>
????????????????<artifactId>spring-boot-maven-pluginartifactId>
????????????plugin>
????????plugins>
????build>
project>服務(wù)提供者模塊的pom文件
xml version="1.0"?encoding="UTF-8"?>
<project?xmlns="http://maven.apache.org/POM/4.0.0"
?????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
????<parent>
????????<artifactId>code-oneartifactId>
????????<groupId>com.codegroupId>
????????<version>1.0.0version>
????parent>
????<modelVersion>4.0.0modelVersion>
????<artifactId>dubbo-providerartifactId>
????<dependencies>
????????<dependency>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-starterartifactId>
????????dependency>
????????<dependency>
????????????<groupId>org.apache.commonsgroupId>
????????????<artifactId>commons-lang3artifactId>
????????dependency>
????dependencies>
project>服務(wù)消費(fèi)者模塊的pom文件
xml version="1.0"?encoding="UTF-8"?>
<project?xmlns="http://maven.apache.org/POM/4.0.0"
?????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
????<parent>
????????<artifactId>code-oneartifactId>
????????<groupId>com.codegroupId>
????????<version>1.0.0version>
????parent>
????<modelVersion>4.0.0modelVersion>
????<artifactId>dubbo-consumerartifactId>
????<dependencies>
????????<dependency>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-starter-webartifactId>
????????dependency>
????????<dependency>
????????????<groupId>com.codegroupId>
????????????<artifactId>dubbo-providerartifactId>
????????????<version>1.0.0version>
????????dependency>
????????<dependency>
????????????<groupId>org.apache.commonsgroupId>
????????????<artifactId>commons-lang3artifactId>
????????dependency>
????dependencies>
project>2.3、添加服務(wù)提供者相關(guān)代碼
添加一個實(shí)體類:(必須實(shí)現(xiàn)序列化接口)
package?com.dubbo.entity;
import?java.io.Serializable;
/**
?* @author?墨龍吟之天問
?*/
public?class?User?implements?Serializable?{
????private?static?final?long?serialVersionUID = 565515108558415476L;
????private?Long id;
????private?String username;
????private?String password;
????private?Integer age;
??// ... set / get ...
????@Override
????public?String toString()?{
????????return?"User["?+
????????????????"id:"?+ id +
????????????????", username:'"?+ username + '\''?+
????????????????", password:'"?+ password + '\''?+
????????????????", age:"?+ age +
????????????????']';
????}
}添加service接口和實(shí)現(xiàn)
import?com.dubbo.entity.User;
import?java.util.List;
/**
?* @author?墨龍吟之天問
?*/
public?interface?UserService?{
????/**
?????* 查詢列表
?????* @return
?????*/
????List queryLists() ;
}
import?org.apache.commons.lang3.RandomStringUtils;
import?org.apache.dubbo.config.annotation.DubboService;
import?com.dubbo.entity.User;
import?com.dubbo.service.UserService;
import?java.util.ArrayList;
import?java.util.List;
/**
?* UserService的實(shí)現(xiàn)類
?* @author?墨龍吟之天問
?*/
@DubboService(version = "${dubbo.service.version}")
public?class?UserServiceImpl?implements?UserService?{
????@Override
????public?List queryLists()? {
????????// 構(gòu)造一手假數(shù)據(jù)
????????List users = new?ArrayList<>();
????????for?(int?i = 0; i < 10; i++) {
????????????User user = new?User();
????????????user.setAge(i * 10);
????????????user.setId((long) i);
????????????user.setPassword(RandomStringUtils.randomAlphanumeric(10));
????????????user.setUsername(RandomStringUtils.randomAlphabetic(5));
????????????users.add(user);
????????}
????????return?users;
????}
} 添加啟動類和配置文件
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
/**
?* @author?墨龍吟之天問
?*/
@SpringBootApplication
public?class?ProviderApplication?{
????public?static?void?main(String[] args)?{
????????SpringApplication.run(ProviderApplication.class);
????}
}server:
??port: 7777
spring:
??application:
????name: dubbo-provider-service
dubbo:
??service:
????version: 1.0.0
??application:
????name: dubbo-provider-service
??scan:
????base-packages: com.dubbo.service.impl
??# 注冊中心的地址
??registry:
????address: zookeeper://192.168.31.25:2181
??protocol:
????name: dubbo
????port: 208802.4、添加服務(wù)消費(fèi)者者相關(guān)代碼
編寫一個controller來調(diào)用遠(yuǎn)程service:
import?com.dubbo.entity.User;
import?com.dubbo.service.UserService;
import?org.apache.dubbo.config.annotation.DubboReference;
import?org.springframework.web.bind.annotation.GetMapping;
import?org.springframework.web.bind.annotation.RestController;
import?java.util.List;
/**
?* @author 墨龍吟之天問
?*/
@RestController
public class IndexController {
????@DubboReference(version?= "${dubbo.service.version}", loadbalance = "roundrobin")
????private UserService userService;
????@GetMapping("/user")
????public List index() {
????????return?userService.queryLists();
????}
} 編寫配置文件將服務(wù)提供者的服務(wù)注冊到zookeeper中,然后寫一個配置文件
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
/**
?* @author?墨龍吟之天問
?*/
@SpringBootApplication
public?class?ConsumerApplication?{
????public?static?void?main(String[] args)?{
????????SpringApplication.run(ConsumerApplication.class);
????}
}server:
??port: 7778
spring:
??application:
????name: dubbo-consumer-service
dubbo:
??service:
????version: 1.0.0
??application:
????name: dubbo-consumer-service
??registry:
????address: zookeeper://192.168.31.25:21812.5、啟動服務(wù)
將IDEA的儀表板(dashboard)啟動,這個可以方便我們?nèi)ソy(tǒng)一管理服務(wù)。
訪問接口:localhost:7778/user
[
????{"id":0,"username":"oBhxn","password":"5VIogUrCG3","age":0}, {"id":1,"username":"DqYti","password":"XDShtZrszU","age":10}, {"id":2,"username":"FvRTn","password":"S7hug0oRWz","age":20}, {"id":3,"username":"BMVRN","password":"apwhk8llZw","age":30}, {"id":4,"username":"vHnWF","password":"14fp8mWbs8","age":40}, {"id":5,"username":"SNHkl","password":"hA5J0509YY","age":50}, {"id":6,"username":"yOAtC","password":"NQo50bo9mq","age":60}, {"id":7,"username":"QrgpW","password":"S49VOeOrk3","age":70}, {"id":8,"username":"zJSXK","password":"rR31TAuXJA","age":80}, {"id":9,"username":"TwQMM","password":"3Y3c0JlcpJ","age":90}
]三、zookeeper和dubbo一些工具
3.1、zookeeper監(jiān)控工具:ZooInspector
下載地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
解壓之后的build目錄下有一個start.bat的腳本,雙擊啟動。

連接之后就可以看到我們注冊的服務(wù)了

這個版本比較舊,新版本的下載地址就在后面連接里面。
鏈接:https://pan.baidu.com/s/1jk5a1Wv_PPkQaJ8rmZERog
提取碼:kqh4
3.2、Dubbo監(jiān)控工具dubbo-admin
這個工具我們依然在docker中啟動,我們在上面那個docker-compose.yml文件中增加一個apache-dubbo-admin的容器。
version: '3'
services:
??zookeeper:
????image: zookeeper:3.6.1
????container_name: zookeeper
????restart:?always
????ports:
??????- 2181:2181
????volumes:
??????- ./zookeeper/data:/data
??????- ./zookeeper/log:/datalog
????networks:
??????- zk-esnet
??dubbo-admin:
????container_name: dubbo-admin
????image: apache/dubbo-admin
????links:
??????- zookeeper:zookeeper
????depends_on:
??????- zookeeper
????ports:
??????- "8080:8080"
????environment:
??????- admin.registry.address=zookeeper://zookeeper:2181
??????- admin.config-center=zookeeper://zookeeper:2181
??????- admin.metadata-report.address=zookeeper://zookeeper:2181
????restart:?always
????networks:
??????- zk-net
networks:
??zk-esnet:
????driver: bridge啟動之后訪問:IP:8080就可以進(jìn)入管理頁面

版權(quán)聲明:本文為博主原創(chuàng)文章,遵循?CC 4.0 BY-SA?版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。
本文鏈接:
https://blog.csdn.net/yhflyl/article/details/108304643
粉絲福利:108本java從入門到大神精選電子書領(lǐng)取
???
?長按上方鋒哥微信二維碼?2 秒 備注「1234」即可獲取資料以及 可以進(jìn)入java1234官方微信群
感謝點(diǎn)贊支持下哈?
