概述
Dubbo是一种高性能的开源RPC(远程过程调用)框架,最初由阿里巴巴内部开发并开源。它提供了服务治理、负载均衡、容错机制、服务降级、动态代理等功能,旨在简化分布式服务之间的通讯和协作。
Dubbo的主要特点包括:
-
服务治理:Dubbo提供了丰富的服务治理功能,包括服务注册与发现、路由、降级、负载均衡等,帮助开发者更好地管理和控制服务之间的调用关系。
-
高性能:Dubbo在设计上注重性能,采用了多种优化手段,比如基于Netty的高性能网络通信,使得它在大规模分布式系统中表现出色。
-
扩展性:Dubbo框架具有良好的扩展性,支持各种插件扩展,用户可以定制和扩展自己的功能。
-
透明化的远程调用:Dubbo对远程调用进行了封装,使得开发者可以像调用本地方法一样调用远程服务,屏蔽了底层通讯细节。
-
完备的生态系统:Dubbo拥有完善的生态系统,包括监控、调用链跟踪、日志等配套工具,方便开发者进行运维和故障排查。
为什么使用Dubbo
因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了Netty、Zookeeper,保证了高性能高可用性。使用Dubbo可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。
分布式架构可以承受更大规模的并发流量
官方架构图
节点角色说明
节点 | 角色说明 |
---|---|
Provider | 暴露服务的服务提供方 |
Consumer | 调用远程服务的服务消费方 |
Registry | 服务注册与发现的注册中心 |
Monitor | 统计服务的调用次数和调用时间的监控中心 |
Container | 服务运行容器 |
调用关系说明
1、服务容器负责启动,加载,运行服务提供者。
2、服务提供者在启动时,向注册中心注册自己提供的服务。
3、服务消费者在启动时,向注册中心订阅自己所需的服务。
4、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
6、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
那么,整个发布-订阅的过程就非常的简单了:
启动容器,加载,运行服务提供者。
服务提供者在启动时,在注册中心发布注册自己提供的服务。
服务消费者在启动时,在注册中心订阅自己所需的服务。
直连实现
服务端:
web.xml
dubbo-userservice-provider.xml
接口实现
pom.xml配置
消费端
web,xml
application.xml
dubbo-consumer.xml
控制层
jsp页面实现
消费者的pom.xml配置文件和服务者配置一样