Dubbo和Zookeeper集成(简易)

Dubbo和Zookeeper集成(简易)

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据

分布式系统(distributed system)是建立在网络之上的软件系统。


1.环境

  • Dubbo安装
  • Zookeeper安装

2.框架搭建

Pom依赖

  • Dubbo
<!-- Dubbo Spring Boot Starter -->
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>2.7.3</version>
</dependency>  
  • zookeeper
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
   <groupId>com.github.sgroschupf</groupId>
   <artifactId>zkclient</artifactId>
   <version>0.1</version>
</dependency>
  • zookeeper及其依赖包,解决日志冲突,还需要剔除日志依赖
<!-- 引入zookeeper -->
<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-framework</artifactId>
   <version>2.12.0</version>
</dependency>
<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-recipes</artifactId>
   <version>2.12.0</version>
</dependency>
<dependency>
   <groupId>org.apache.zookeeper</groupId>
   <artifactId>zookeeper</artifactId>
   <version>3.4.14</version>
   <!--排除这个slf4j-log4j12-->
   <exclusions>
       <exclusion>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-log4j12</artifactId>
       </exclusion>
   </exclusions>
</dependency>

提供者(provider-server)

  • 在springboot配置文件中配置dubbo相关属性
#配置dubbo
dubbo.application.name=product-server
#注册中心的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#注册的服务
dubbo.scan.base-packages=com.lit.Service
  • 在service的实现类中配置服务注解,发布服务!注意导包问题
package com.lit.Service;

public interface TicketService {
    public String getTicket();
}
package com.lit.Service;
import org.springframework.stereotype.Service;
//zookeeper的服务注册与发现
@Service
@com.alibaba.dubbo.config.annotation.Service
public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "获取了一张《Ticket》";
    }
}

服务消费者(consumer)

  • 配置参数
#当前应用名字
dubbo.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
  • 直接将服务的接口拿过来,路径必须保证正确,即和服务提供者相同
package com.lit.Service;

public interface TicketService {
    public String getTicket();
}
  • 消费者服务类
package com.lit.Service;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

@Service
public class ConsumerService {
    //去注册中心获取服务
    @Reference //引用远程   Pom坐标:可以定义相同的接口名
    TicketService ticketService;

    public void buyTicket(){
        String ticket = ticketService.getTicket();
        System.out.println("在注册中心拿到了--------->" + ticket);
    }
}

3.测试类编写

@SpringBootTest
class ConsumerApplicationTests {
    @Autowired
    ConsumerService consumerService;
    @Test
    void contextLoads() {
        consumerService.buyTicket();
    }
}

启动测试

  • 开启zookeeper
  • 打开dubbo-admin实现监控
  • 开启服务者
  • 消费者消费测试
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值