一、概述
- 最近学习了PRC分布式服务框架-Dubbo,然后结合之前所学的Spring Boot和Zookeeper来搭建一个Hello Dubbo 分布式服务项目样例。
- 我们分上篇和下篇进行讲解,此篇是讲解如何搭建API项目已经服务提供者项目。
二、搭建步骤
步骤一:创建服务接口项目,创建一个名为 hello-dubbo-service-user-api
的Maven项目,该项目只负责定义接口,创建好项目后如下图所示。
步骤二:在pom.xml下添加以下配置。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
步骤三:创建 com.czd.hello.dubbo.service.user.api 包,并且在此包下创建一个UserService类,如下所示。
【1】创建好后如下图所示:
【2】UserService类代码如下:
package com.czd.hello.dubbo.service.user.api;
/**
* @author czd
*/
public interface UserService {
String sayHello();
}
步骤四:创建服务提供者项目,创建一个名为 hello-dubbo-service-user-provider
的Spring Boot项目,该项目主要用于实现接口,创建好项目后如下图所示。
步骤五:在pom.xml下添加以下配置。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--状态检查的依赖,(健康监控)配置和使用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-actuator</artifactId>
<version>0.2.0</version>
</dependency>
<!--导入自己接口的依赖-->
<dependency>
<groupId>com.czd</groupId>
<artifactId>hello-dubbo-service-user-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
步骤六:在resources目录下创建application.yml配置文件,并且添加以下内容。
# Spring boot application
spring:
application:
#原则上和项目名称一致
name: hello-dubbo-service-user-provider
# UserService service version
user:
service:
version: 1.0.0
# Dubbo Config properties
dubbo:
# Base packages to scan Dubbo Component:@com.alibaba.dubbo.config.annotation.Service
scan:
basePackages: com.czd.hellodubboserviceuserprovider.impl
# ApplicationConfig Bean
application:
#原则上和项目名称一致,并且一般id和name是一样的
id: hello-dubbo-service-user-provider
name: hello-dubbo-service-user-provider
#qos是dubbo的在线运维命令
qos-port: 22222
qos-enable: true
# ProtocolConfig Bean
protocol:
id: dubbo
name: dubbo
port: 12345
status: server
# RegistryConfig Bean
registry:
id: zookeeper
address: zookeeper://192.168.43.86:2181?backup=192.168.43.86:2182,192.168.43.86:2183
# Enables Dubbo All Endpoints
management:
endpoint:
dubbo:
enabled: true
dubbo-shutdown:
enabled: true
dubbo-configs:
enabled: true
dubbo-services:
enabled: true
dubbo-references:
enabled: true
dubbo-properties:
enabled: true
# Dubbo Health
health:
dubbo:
status:
# StatusChecker Name defaults (default : "memory", "load" )
# 状态检查器名称默认值(默认值:“内存”、“加载”)
defaults: memory
# StatusChecker Name extras (default : empty )
extras: load,threadpool
步骤七:在com.czd.hellodubboserviceuserprovider包下创建一个impl包,并且在此包下创建UserServiceImpl类。
【1】创建好后如下图所示:
【2】UserServiceImpl类代码如下:
package com.czd.hellodubboserviceuserprovider.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.czd.hello.dubbo.service.user.api.UserService;
/**
* @author czd
*/
@Service(version = "${user.service.version}")
public class UserServiceImpl implements UserService {
@Override
public String sayHello() {
return "Hello Dubbo";
}
}
步骤八:在HelloDubboServiceUserProviderApplication项目驱动类添加以下代码。
// 启动 Provider 容器,注意这里的 Main 是 com.alibaba.dubbo.container 包下的
Main.main(args);
完整HelloDubboServiceUserProviderApplication类如下所示:
package com.czd.hellodubboserviceuserprovider;
import com.alibaba.dubbo.container.Main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloDubboServiceUserProviderApplication {
public static void main(String[] args) {
SpringApplication.run(HelloDubboServiceUserProviderApplication.class, args);
// 启动 Provider 容器,注意这里的 Main 是 com.alibaba.dubbo.container 包下的
Main.main(args);
}
}
下篇传送门:https://blog.csdn.net/weixin_42146366/article/details/90268555