Dubbo - Zookeeper
分布式微服务
SpringBoot-狂神(20. Springboot+Dubbo+Zookeeper)学习笔记
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Zookeeper ZooKeeper也可以作为注册中心。
- ZooKeeper主要服务于分布式系统,可以用ZooKeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。
- 使用分布式系统就无法避免对节点管理的问题(需要实时感知节点的状态、对节点进行统一管理等等),而由于这些问题处理起来可能相对麻烦和提高了系统的复杂性,ZooKeeper作为一个能够通用解决这些问题的中间件就应运而生了。
Dubbo是一种分布式的服务架构,用于改进 RPC远程服务呼叫机制,并提供 SOA服务管理。
SpringCloud是一组有序的框架。
Spring Boot开发的便利,使得分布式系统架构的开发变得更加简单,比如服务发现,配置中心,消息总线,负载平衡,断路器,数据监控等等。Spring并不是一个重复的过程,而是将各个公司开发的更加成熟、更加可靠的服务架构结合在一起,通过 Spring Boot的重新包装,避免了那些繁琐的设计和实现,从而为开发者提供了一系列易于理解、易于部署和维护的分布式系统开发工具箱。
Dubbo的性能更高,但是开发更难
测试Demo
- zookeeper的默认端口号为:2181 即注册中心的端口号
- zookeeper:服务注册与发现
- Dubbo的默认端口号为:20880 即一个管理注册中心的容器
- 它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
-
导入Dubbo和zookeeper的Maven依赖
-
配置文件配置Dubbo相关配置
-
提供者provider-server
-
#服务应用名字 dubbo.application.name=provider-server #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 #哪些服务要被注册 有@DubboService注解的 dubbo.scan.base-packages=com.mao.service
-
在被扫描的包下的Bean(也就是想要注册的服务上)上使用 @DubboService + Spring的@Service 注解
@DubboService //可以被扫描到,在项目已启动就自动注册到注册中心 @Service public class TicketserviceImpl implements Ticketservice { @Override public string getTicket() i return "《毛毛学Java》"; } }
-
消费者customer-server
-
#服务应用名字 dubbo.application.name=customer-server #注册中心地址 127.0.0.1:2181 可以是任何一个电脑的zookeeper端口 dubbo.registry.address=zookeeper://127.0.0.1:2181
- 使用@DubboReference引入服务接口(前提是消费者的接口位置要跟提供者的接口位置相同)
@Service public class CustomerService { //想拿到provider-server提供的票,要去注册中心拿到服务 @DubboReference //引用, Pom坐标,可以定义路径相同的接口名 Ticketservice ticketService; public void buyTicket(){ string ticket= ticketservice.getTicket(); } }
-
-
运行SpringApplication
- 运行zookeeper服务
- 运行dubbo-admin服务(监控中心)
- 访问 localhost:7001 (他是一个管理注册中心服务的一个可视化web界面)