点击上方 Java后端,选择设为星标
链接 | blog.csdn.net/sinat_27933301
上一篇:从零搭建创业公司后台技术栈
这是一个基于Dubbo+Zookeeper 的 RPC 远程调用框架 demo,希望读者可以通过这篇文章大概能看懂这一个简单的框架搭建。
Demo 源码获取方式:关注微信公众号「Java后端 」,回复「DZ」获取
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。微信搜索 web_resource 关注获取更多推送
-
provider:暴露服务的服务提供方
-
consumer:调用远程服务的服务消费方
-
registry:服务注册于发现的注册中心
-
monitor:统计服务调用次数和调用时间的监控中心
-
container:服务运行容器
一、dubbo-provider(服务提供方)
1、Java Bean
@Data
public class UserInfo implements Serializable {
private String account;
private String password;
}
2、UserService
public interface UserService {
// 定义用户登录的api
UserInfo login(UserInfo user);
}
3、UserServiceImpl
@Component
(interfaceClass = UserService.class)
public class UserServiceImpl implements UserService {
public UserInfo login(UserInfo user) {
UserInfo reUser = new UserInfo();
reUser.setAccount("登录的账号为:"+user.getAccount());
reUser.setPassword("登录的密码为:"+user.getPassword());
return reUser;
}
}
4、DubboProviderApplication
@SpringBootApplication
// 启用dubbo自动配置
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
5、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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.boot.dubbo.demo</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dubbo-provider</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Dubbo依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--自动生成getter,setter,equals,hashCode和toString等等-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
<!--Zookeeper客户端-->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!--Zookeeper依赖,排除log4j避免依赖冲突-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
6、application.yml
spring:
dubbo:
application:
name: dubbo-provider
protocol:
name: dubbo
port: 20880
registry:
address: zookeeper://127.0.0.1:2181
二、dubbo-consumer(服务消费方)
1、UserController
@RestController
public class UserController {
// 引用dubbo服务器提供服务器接口
private UserService userService;
public UserInfo login(UserInfo userInfo) {
return userService.login(userInfo);
}
}
2、DubboConsumerApplication
@SpringBootApplication
// 启用dubbo自动配置
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
3、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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.boot.dubbo.demo</groupId>
<artifactId>dubbo-consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dubbo-consumer</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--依赖dubbo-provider服务提供者-->
<dependency>
<groupId>com.boot.dubbo.demo</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--Dubbo依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--Zookeeper客户端-->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!--Zookeeper依赖,排除log4j避免依赖冲突-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4、application.yml
spring:
dubbo:
application:
name: dubbo-consumer
protocol:
name: dubbo
port: 20880
registry:
address: zookeeper://127.0.0.1:2181
server:
port: 8081
三、Zookeeper安装配置
Zookeeper是什么:
https://blog.csdn.net/sinat_27933301/article/details/80101970
Zookeeper的安装配置:
https://blog.csdn.net/sinat_27933301/article/details/84001530
Zookeeper集群环境搭建:
https://blog.csdn.net/sinat_27933301/article/details/84351404
四、项目启动
五、查看Zookeeper服务注册情况
六、通过浏览器发送请求(dubbo-provider的服务注册到Zookeeper上,dubbo-consumer消费者可以调用注册的服务)。
到此,rpc远程调用服务通了!感兴趣的话可以去学习下。
Demo 源码获取方式:关注微信公众号「Java后端 」,回复「DZ」获取
-END-
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「web_resource」,关注后回复「进群」或者扫描下方二维码即可进入无广告交流群。
↓扫描二维码进群↓
推
荐
阅
读
1. 从零搭建创业公司后台技术栈
2.
如何阅读 Java 源码?
3. 某小公司RESTful、前后端分离的实践
4. 该如何弥补 GitHub 功能缺陷?
5. 团队开发中 Git 最佳实践
喜欢文章,点个
在看
本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
相关文章
暂无评论...