
Dubbo 高性能 RPC 框架实践
作者 | 老郑
来源 |运维开发故事(ID:mygsdcsf)
转载请联系授权(微信ID:wanger5354)
Dubbo 介绍
Dubbo 是什么?
介绍:Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案,涵盖 Java、Golang 等多种语言 SDK 实现。
特征:RPC 通讯框架,服务注册中心,支持原生云(Dubbo3.0)
主流版本:2.7.x , 3.0 **SDK: **官方 SDK 支持开发语言:Java、Golang
使用厂家:阿里巴巴、饿了么、钉钉、工商银行、小米等
注:本文后续主要基于 2.7.x 版本展开。
Dubbo 和 Eureka 对比总结:Dubbo 对比 Eureka 来说的话,其实一个打包的微服务中间件,并且定制化了 RPC 通讯 dubbo 协议对比 HTTP 协议来说性能上会有一定的提高。但是我们对于微服务本身来说应该是一个细粒度的,可以定制的组件对于 Eureka 来说这方面更强。
Dubbo 使用案例
下面是一个通过 dubbo 作为 RPC 通讯的一个例子,一般在生产中会使用 zk 或者 redis 等,作为服务注册中心来保存服务信息。一个大致的交互图如下:
三个角色
- Zookeeper 作为一个服务注册中心,管理和维护服务列表;
- Provider 服务提供者,发布服务;
- Consumer 服务消费者,通过 API stub 可以像调用本地方法一样调用远程的方法;
服务提供者
服务接口定义
服务提供者实现
服务启动类
配置文件
服务消费者
服务配置
服务调用方代码
运行一下:
- 我们首先启动 RpcDubboProvidorApp
- 然后启动 RpcDubboConsumerApp
- 控制台输出如下:
你如果也能获得如下的输出表示实验成功。恭喜。
Dubbo 监控
Dubbo Admin 安装
下载代码: git clone https://github.com/apache/dubbo-admin.git
在 dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址构建
- mvn clean package -Dmaven.test.skip=true
启动 - mvn --projects dubbo-admin-server spring-boot:run 或者
- cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.4.0.jar
访问 http://localhost:8080默认密码是 root/root
Dubbo Admin 使用
找到自己注册服务模拟请求服务
点击上一个页面的 测试 按钮,进入如下页面,测试服务接口,如下图:
我传递参数,下面成功返回,可以在开发期间做一个简单的测试。
服务提供者和服务消费者查询如下图所示。
双击服务列表中的服务即可进入。
