Springboot整合dubbo(springboot使用dubbo直连式和集群)

								Springboot整合dubbo

重要:dubbo主要是用于远程过程调用 为二进制传输
编写实体类bean的时候必须实现Serializable接口
实例:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User implements Serializable { //实现Serializable接口用于网络传输

    private static final long serialVersionUID = 7228970962337272620L;

    private Integer id;
    private String username;
    private Date updateTime;
    private Date createTime;
}

1-提供者.引入依赖

	<!--引入springboot-->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.5.2</version>
	</parent>
	<dependencies>
		<!--引入dubbo依赖-->
		<dependency>
			<groupId>org.apache.dubbo</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.7.5</version>
		</dependency>
		<!--这个两个是心跳包 用于zookeeper注册中心  查找提供者的心跳-->
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>4.1.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>4.1.0</version>
		</dependency>
	</dependencies>

2-提供者.编写service实现类 用于展示

@Service
@org.apache.dubbo.config.annotation.Service
public class UserServiceImpl implements UserService {
  @Override
  public User queryUserById(Integer id) {
    return new User(id,"zhangsan",new Date(),new Date());
  }
}

@Service 这个能够将业务UserServiceImpl 放入ioc容器中

@org.apache.dubbo.config.annotation.Service 将该UserServiceImpl 存放到zookeeper节点当中 用于给消费者使用

3-提供者.编写application.properties

server.port=8081					  #端口号可以自己改
dubbo.application.name=DUBBOCONSUMER  #大写小写都可以 集群名称必须相同
dubbo.registry.address=192.168.216.128:2181 #zookeeper的地址 改成自己的即可 我的是linux的
dubbo.registry.protocol=zookeeper  # 注册中心的名称  zookeeper(写死)
dubbo.monitor.protocol=registry    #  确认注册(写死)
dubbo.protocol.name=dubbo          #  dubbo (写死)
dubbo.protocol.port=20880 		   #  集群的话需要改(随意)

4-提供者.编写启动dubbo

@SpringBootApplication
@EnableDubbo
public class DubboSpringBootApplication20880 {
  public static void main(String[] args) {
    SpringApplication.run(DubboSpringBootApplication20880.class,args);
  }
}

@EnableDubbo 必须写 启动dubbo的功能

5-创建新的maven项目-消费者.引入依赖

	<!--引入springboot-->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.5.2</version>
	</parent>
	<dependencies>
		<!--引入dubbo依赖-->
		<dependency>
			<groupId>org.apache.dubbo</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.7.5</version>
		</dependency>
		<!--这个两个是心跳包 用于zookeeper注册中心  查找提供者的心跳-->
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>4.1.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>4.1.0</version>
		</dependency>
	</dependencies>

6-消费者.编写controller层

@RestController
public class UserController {
  @Reference
  private UserService userService;

  @GetMapping("/get/{id}")
  public CommonResult<User> getUser(@PathVariable("id") Integer id) {
    User user = userService.queryUserById(id);
    return new CommonResult<User>(200,"查询成功",user);
  }
}

由于UserService需要从提供者方里面提供所以需要使用@Reference这个注解
@Reference 这个注册能够从注册中心当中寻找合适UserService实现类
@Reference必须写 不然无法体现dubbo 的功能

7-消费者.application.properties编写

dubbo.application.name=DUBBOCONSUMER         #可以改  改成自己喜欢的即可
dubbo.registry.address=192.168.216.128:2181  #改写成自己的即可
dubbo.registry.protocol=zookeeper			 #默认写死
dubbo.monitor.protocol=registry				
server.port=8080							#一般消费者都是8080

消费者可以不用注册到zookeeper注册中心

启动自己的zookeeper,然后启动项目即可
我的zookeeper是3.7.0-linux版本

8-下载dubbo-admin(可选)可视化注册中心

下载地址 : https://github.com/apache/dubbo-admin
下载解压:
在这里插入图片描述
解压好进入这个
在这里插入图片描述
目录中找到application.properties 打开
在这里插入图片描述
把zookeeper的地址改成自己的即可
我的已经修改完成
记得修改tomcat的端口
在这里插入图片描述
我的修改成了9999 避免与8080端口冲突
记住user.name和user.password 这个是进入注册中心的用户和密码

9-打包dubbo-admin

修改完成之后回到这个页面在这里插入图片描述
路径打开cmd
在这里插入图片描述
输入mvn clean package -Dmaven.test.skip=true 回车

等待成功

在这里插入图片描述
这个是成功页面

全部成功之后进入这个目录
在这里插入图片描述
这个就是可视化注册中心的jar

cmd 运行jar包
在这里插入图片描述
打开cmd 输入命令java -jar dubbo-admin-0.3.0-SNAPSHOT.jar
回车运行jar
运行jar之前 必须先启动zookeeper 不然会报错的!!
运行jar完成后
打开网页输入 http://localhost:9999/
输入账号密码进入注册中心
在这里插入图片描述
此时启动提供者和消费者
消费者的tomcat端口为8080 消费者访问即可
在这里插入图片描述

我的url地址写的是:http://localhost:8080/get/55
可以自己去修改自己的url
此时查看注册中心

在这里插入图片描述
我们的提供者UserService已经被注册中心检查到 会被注册中心检测到
完成dubbo的使用

10-dubbo集群

使用集群必须多建几个springboot项目并且只需要修改application.properties即可业务代码不需要修改
第一个集群项目application.properties

server.port=8081					  #端口号可以自己改
dubbo.application.name=DUBBOCONSUMER  #大写小写都可以 集群名称必须相同
dubbo.registry.address=192.168.216.128:2181 #zookeeper的地址 改成自己的即可 我的是linux的
dubbo.registry.protocol=zookeeper  # 注册中心的名称  zookeeper(写死)
dubbo.monitor.protocol=registry    #  确认注册(写死)
dubbo.protocol.name=dubbo          #  dubbo (写死)
dubbo.protocol.port=20880 		   #  集群的话需要改(随意)

dubbo.application.name 集群这个必须相同
dubbo.protocol.port 集群这个不能相同

server.port 集群tomcat端口也不能相同

第二个集群项目application.properties

server.port=8082					  #端口号可以自己改
dubbo.application.name=DUBBOCONSUMER  #大写小写都可以 集群名称必须相同
dubbo.registry.address=192.168.216.128:2181 #zookeeper的地址 改成自己的即可 我的是linux的
dubbo.registry.protocol=zookeeper  # 注册中心的名称  zookeeper(写死)
dubbo.monitor.protocol=registry    #  确认注册(写死)
dubbo.protocol.name=dubbo          #  dubbo (写死)
dubbo.protocol.port=20881 		   #  集群的话需要改(随意)

第三个集群项目application.properties

server.port=8082					  #端口号可以自己改
dubbo.application.name=DUBBOCONSUMER  #大写小写都可以 集群名称必须相同
dubbo.registry.address=192.168.216.128:2181 #zookeeper的地址 改成自己的即可 我的是linux的
dubbo.registry.protocol=zookeeper  # 注册中心的名称  zookeeper(写死)
dubbo.monitor.protocol=registry    #  确认注册(写死)
dubbo.protocol.name=dubbo          #  dubbo (写死)
dubbo.protocol.port=20882 		   #  集群的话需要改(随意)

集群了三个UserService 并且dubbo端口分别为20880,20881,20882
然后分别启动这三个项目即可
dubbo注册三个UserService 的集群,
消费者中远程过程调用UserService 默认使用的是轮循调用UserService

调用效果为
20880—>20881---->20882---->20880----->20881…一直轮循下去

注意:消费者可以不用注册到注册中心当中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值