当前位置: 首页 > 科技观察

Dubbo高性能RPC框架实践

时间:2023-03-16 00:40:20 科技观察

Dubbo简介什么是Dubbo?简介:ApacheDubbo是一个为大规模微服务实践提供高性能RPC通信、流量管理、可观察性等解决方案的微服务框架,涵盖Java、Golang等语言SDK实现。特点:RPC通信框架、服务注册中心、原生云支持(Dubbo3.0)主流版本:2.7.x、3.0**SD??K:**官方SDK支持开发语言:Java、Golang厂商:阿里巴巴、饿了么、钉钉、工商银行、小米等注:本文后续主要基于2.7.x版本。Dubbo和Eureka比较DubboEureka(Spring-Cloud-Netflix)注册中心ZKEurekaCAPCPAP容错机制通过Hytrix支持负载均衡通过Ribbon封装支持服务注册和发现协议NettyClient实现使用HttpClient社区支持Apache不更新总结:Dubbo与Eureka相比,其实一个封装好的微服务中间件和定制化的RPC通信dubbo协议,相比HTTP协议会有一定的性能提升。但是我们应该是微服务本身的一个细粒度的、可定制的组件,这对Eureka来说更强大。Dubbo用例下面是一个使用dubbo作为RPC通信的例子。一般在生产中会使用zk或者redis作为服务注册中心来存储服务信息。大致的交互图如下:三个角色:Zookeeper,作为服务注册中心,管理和维护服务列表;Provider服务提供者,发布服务;Consumer服务消费者,通过API存根,可以像调用本地方法一样调用远程方法;服务提供者服务接口定义publicinterfaceOrderService{StringcreateOrder(Stringrequest);}服务提供者实现publicclassOrderServiceImplimplementsOrderService{@OverridepublicStringcreateOrder(Stringrequest){return"createordersuccess,request:"+request;}}服务启动类publicclassRpcDubboProvidorApp{publicstaticvoidmain(String[]args)throwsIOException{ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(newString[]{"classpath:dubbo.xml"});context.start();系统.in.read();//按任意键退出}}配置文件服务消费者服务配置服务调用者代码XML"});上下文开始();//获取远程服务代理OrderServicedemoService=(OrderService)context.getBean("orderService");//执行远程方法Stringhello=demoService.createOrder("iPhone19");//显示调用结果System.out.println(你好);}}运行它:我们先启动RpcDubboProvidorApp,然后启动RpcDubboConsumerApp。控制台输出如下:如果还可以得到如下输出,则说明实验成功。恭喜。dubbo监控DubboAdmin安装下载代码:gitclonehttps://github.com/apache/dubbo-admin.git在dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址构建mvncleanpackage-Dmaven.test.skip=truestartmvn--projectsdubbo-admin-serverspring-boot:run或cddubbo-admin-distribution/target;java-jardubbo-admin-0.4.0.jar访问http://localhost:8080默认密码为root/rootDubboAdmin使用找到自己并注册服务模拟请求服务点击上一页测试按钮即可进入如下页面,测试服务接口,如下图:服务提供者和服务消费者查询如下图所示。双击服务列表中的服务进入。参考文档https://dubbo.apache.org/zh/docsv2.7/user/quick-start/https://github.com/apache/dubbo-admin/blob/develop/README_ZH.md