Dubbo.
什么是Dubbo.
Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:
- 面向接口的远程方法调用
- 智能容错和负载均衡
- 服务自动注册和发现
架构.
节点角色说明.
节点 | 角色说明 |
---|---|
Provider |
暴露服务的服务提供方 |
Consumer |
调用远程服务的服务消费方 |
Registry |
服务注册与发现的注册中心 |
Monitor |
统计服务的调用次数和调用时间的监控中心 |
Container |
服务运行容器 |
调用关系说明.
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
特性.
- 面向接口代理的高性能RPC调用
- 提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。
- 智能负载均衡
- 内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
- 服务自动注册与发现
- 支持多种注册中心服务,服务实例上下线实时感知。
- 高度可扩展能力
- 遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。
- 运行期流量调度
- 内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。
- 可视化的服务治理与运维
- 提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数。
Dubbo使用.
这里注册中心使用 Zookeeper,因此需要安装 zookeeper,详细看 zookeeper 那篇博客
- 提供者提供服务
- 导入依赖
- 配置注册中心的地址,以及服务发现名和要扫描的包
- 在想要被注册的服务上添加
@DubboService
注解
- 消费者进行消费
- 导入依赖
- 配置注册中心的地址,配置自己的服务名
- 从远程注入服务
@DubboReference
Dubbo-admin.
- 一个监控管理后台
- 查看注册的服务 …
下载.
解压.
查看.
查看 pom.xml 中项目编译版本 是否 与 本地JDK版本一致
打包.
由于是 源码 所以我们需要编译打包,才能使用
打包可以在 IDEA中 ,也可以使用mvn的命令打包,以下是打包命令
mvn clean package -Dmaven.test.skip=true
启动zookeeper(port:2181).
在开启 target服务之前,我们需要开启 zookeeper 服务,如果没有安装,需要安装后,启动
启动dubbo-admin(port:7001).
命令
java -jar dubbo-admin-0.0.1-SNAPSHOT.jar
访问localhost:7001.
错误.
如果dubbo-admin打包构建失败,如下
我们需要 去更改 项目pom.xml 的 JDK 版本 与 本地 JDK版本一致
如果dubbo-admin启动时,端口已经被绑定
我们需要,查看 7001 端口 被 什么应用 占用,然后结束 占用进程
查看占用进程
netstat -ano | findstr 7001
结束pid为19352的进程
taskkill -pid 19352 -f