SpringBoot_分布式_Dubbo
参考官方:http://dubbo.apache.org/zh-cn/index.html
依赖pom.xml
<?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">
<!--添加SpringBoot parent支持 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>itcast-dubbo-service</artifactId>
<dependencies>
<!--添加SpringBoot测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--添加dubbo的springboot依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!--添加dubbo依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.4</version>
</dependency>
<!--添加springboot依赖,非web项目 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--添加springboot的maven插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置文件application.properties
服务
#Spring boot application
spring.application.name = dubbo-service
server.port = 9090
#Service version
dubbo.service.version = 1.0.0
#服务的扫描包
dubbo.scan.basePackages = com.vander.dubbo.service
#应用名称
dubbo.application.name = dubbo-provider-demo
#协议以及端口
dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880
#zk注册中心
dubbo.registry.address = zookeeper://192.168.1.101:2181
dubbo.registry.client = zkclient
消费
#Spring boot application
spring.application.name = dubbo-consumer
server.port = 9091
#应用名称
dubbo.application.name = dubbo-consumer-demo
#zk注册中心
dubbo.registry.address = zookeeper://192.168.1.101:2181
dubbo.registry.client = zkclient
配置源码
1、创建pojo需要序列化
2、创建接口工程,供服务和消费依赖
3、服务方—接口实现类需要添加@Service注解指定版本
@Service(version = "${dubbo.service.version}") //声明这是一个dubbo服务
public class UserServiceImpl implements UserService {
//.....
}
4、服务方—启动类
@SpringBootApplication
public class DubboProvider {
public static void main(String[] args) {
//非Web应用
new SpringApplicationBuilder(DubboProvider.class).web(WebApplicationType.NONE).run(args);
}
}
5、消费方—接口调用
@Reference(version = "1.0.0")
private UserService userService;
服务的负载均衡
在集群负载均衡时,Dubbo 提供了多种均衡策略,缺省为 random 随机调用。
参考:http://dubbo.apache.org/zh-cn/docs/user/demos/loadbalance.html
1、启动多台服务方
2、配置消费方轮询均衡策略
@Reference(version = "1.0.0",loadbalance = "roundrobin")
private UserService userService;
Dubbo Admin
Dubbo提供了可视化的界面管理工具,方便我们对服务进行管理。
代码地址:https://github.com/apache/incubator-dubbo-ops
部署安装:
1、下载并且解压:
git clone https://github.com/apache/incubator-dubbo-ops.git
2、修改配置文件:
在 dubbo-admin-backend/src/main/resources/application.properties 中指定注册中心地址。
3、Maven构建项目
未安装maven,可通过以下方式安装
vim /etc/profile
#写入如下内容
export MVN_HOME=/haoke/apache-maven-3.6.0
export PATH={MVN_HOME}/bin:PATH
4、通过mavn插件启动程序:
mvn clean package
mvn --projects dubbo-admin-backend spring-boot:run
5、访问
http://192.168.1.101:8080/#/