springboot2+dubbon0.2.0+zookeeper搭建一个简单的RPC分布式案例

Springboot2+Dubbo0.2.0+Zookeeper搭建一个简单的RPC分布式案例


简介

Dubbo: 原阿里巴巴的开源分布式服务,现在转给apache接管名为Apache Dubbo,是一个高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

Zookeeper: 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Springboot这里我就不介绍了,不懂的可以去看看官网(java开发工程师必会技能)。


下面直接搭建环境:前提必须有zookeeper:docker安装zookeeper

这里我还是使用的旧版的dubbo和springboot的整合
版本依赖:官网版本依赖
在这里插入图片描述
provider-ticket模块
目录结构:
在这里插入图片描述

1.导入依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--dubbo分布式框架依赖-->
<dependency>
	<groupId>com.alibaba.boot</groupId>
	<artifactId>dubbo-spring-boot-starter</artifactId>
	<version>0.2.0</version>
</dependency>
<!--引入zookeeper的客户端工具-->
<dependency>
	<groupId>com.github.sgroschupf</groupId>
	<artifactId>zkclient</artifactId>
	<version>0.1</version>
</dependency>

2.主启动类

@EnableDubbo //开启基于注解的Dubbo
@SpringBootApplication
public class ProviderTicketApplication {

	public static void main(String[] args) {
		SpringApplication.run(ProviderTicketApplication.class, args);
	}

}

3.编写service层接口和实现类:这里service注解是dubbo中的

public interface TicketService {
    String getTicket();
}
@Component //该类是一个组件加入到spring容器中
@Service //是dubbo的注解,表明该服务发布出去
public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "<厉害了,我的国>";
    }
}

4.springboot配置文件:

server.port=8081
#配置服务名
dubbo.application.name=provider-ticket
#配置zookeeper仓库地址
dubbo.registry.address=zookeeper://安装zookeeper虚拟机ip:2181
#扫描需要发布的服务路径
dubbo.scan.base-packages=com.yang.providerticket.service

consumer-user模块
目录结构:
在这里插入图片描述
1.导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--dubbo分布式框架依赖-->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>
<!--引入zookeeper的客户端工具-->
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>

2.创建sevice层类: 使用@Reference

@Service
public class UserService {
    @Reference //远程引用 通过全类名匹配
    TicketService ticketService;

    public void hello(){
        System.out.println(ticketService.getTicket());
    }
}

3.springboot配置文件:

server.port=8082
dubbo.application.name=consumer-user
dubbo.registry.address=zookeeper://虚拟机ip:2181

4.将provider-ticket层的接口复制一份: (目录结构一定要和原来的一样)
在这里插入图片描述

在consumer测试环境测试

@Autowired
    UserService userService;

    /**
     * 1.provider开启
     * 2.zookeeper开启
     */
    @Test
    void contextLoads() {
        userService.hello();
    }

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记或往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值