1.Dubbo源码:跟着Demo学习基本使用
2.我找到了Dubbo源码的码地BUG,同事纷纷说我有点东西
3.dubbo知识点之管理工具dubbo-admin分享
4.Dubbo调用超时那些事儿
Dubbo源码:跟着Demo学习基本使用
Dubbo 是码地一款由阿里开源的高性能轻量级RPC框架,因其在各大企业如阿里、码地京东、码地小米、码地携程等的码地php源码怎么输出广泛应用而备受瞩目。本文将通过一个基础Demo,码地带你了解Dubbo的码地基本使用步骤。
首先,码地你需要设置一个ZooKeeper服务器作为服务注册中心。码地ZooKeeper是码地Dubbo生产环境中的常见选择。下载并解压zookeeper-3.4..tar.gz包,码地然后修改conf/zoo.cfg配置,码地启动ZooKeeper服务。码地
接下来,码地定义业务接口,即Dubbo Provider和Consumer之间的约定,如dubbo-demo-interface模块中的源码被侵权吗DemoService接口。它包含sayHello()和sayHelloAsync()方法。
在dubbo-demo-xml模块中,提供了基于Spring XML的Provider和Consumer实现。在Provider端的dubbo-provider.xml中,配置DemoServiceImpl为Spring Bean,并暴露到ZooKeeper。在Consumer端的dubbo-consumer.xml中,配置ZooKeeper地址,并使用dubbo:reference引入DemoService,以便远程调用其提供的服务。
启动Consumer端的Application,通过ClassPathXmlApplicationContext加载配置文件,即可实现服务的调用。如果你有任何问题或需求,欢迎留言互动,共同探讨。
本文摘自公众号“勾勾的网上投票源码Java宇宙”,关注的朋友们可以分享你的学习需求和建议。
我找到了Dubbo源码的BUG,同事纷纷说我有点东西
某天,运营反馈称,执行一次保存操作后,后台出现3条数据,我立刻怀疑可能存在代码问题。为了确保不会误判,我要求暂停操作,保留现场,以便我进行排查。
查看新增代码,发现是同事三歪进行的改动,他将原有的dubbo XML配置方式改为了注解方式。我询问其改动详情,得知他是更改了模块的配置方式。于是负91的源码,我决定深入研究,找出问题所在。
dubbo配置方式多样,最常见的为XML配置与注解配置。我已初步推测原因,接下来将进行详细的调试过程。
我使用dubbo版本2.6.2进行调试。首先,针对采用@Reference注解条件下的重试次数配置,我发现调用接口时,会跳转到InvokerInvocationHandler的invoke方法。继续跟踪,最终定位到FailoverClusterInvoker的doInvoke方法。在该方法中,我关注到获取配置的retries值,发现其默认值为null,导致最终计算出的商业源码包括哪些重试次数为3。
采用dubbo:reference标签配置重试次数时,同样在获取属性值后,发现其默认值为0,与注解配置一致,最终计算出的重试次数为1。对比两种配置方式,我总结了以下原因:
在@Reference注解形式下,dubbo会在注入代理对象时,通过自定义驱动器ReferenceAnnotationBeanPostProcessor来注入属性。在标签形式下,虽然也使用了Autowired注解,但dubbo会使用自定义名称空间解析器DubboNamespaceHandler进行解析。
在注解形式下,当配置retries为0时,属性值在注入过程中并未被解析为null,但进入buildReferenceBean时,因nullSafeEquals方法的处理,导致默认值和实际值不一致,最终未保存到map中。而标签形式下,解析器能够正确解析出retries的值为0,避免了后续的问题。
总结发现,采用@Reference注解配置重试次数时,dubbo在注入属性过程中存在逻辑处理上的问题,导致默认值与实际值不一致。此为dubbo的一个逻辑bug。建议在不需要重试时,设置retries为-1,以确保接口的幂等性。需要重试时,设置为1或更大值。
问题解决后,我优化了文件操作,将其改为异步处理,从而缩短了主流程的时间。最终,数据出现3条的状况得以解决。
此问题已得到解决,并在后续dubbo版本2.7.3中修复,确保了在注解配置方式下,nullSafeEquals方法能够正确处理默认值与实际值一致的情况。
dubbo知识点之管理工具dubbo-admin分享
在dubbo的应用体系中,一直有一款图形化的rpc管理工具,通过这款管理工具,我们可以对我们的rpc服务进行各种管理操作,包括负载均衡、权重调整、服务监测等,今天我们就先来简单看下这一款管理工具。
dubbo的管理服务,现在也是一个独立的应用,我们可以将它独立部署。项目地址如下:
根据官方介绍,目前的管理控制台已经发布0.1版本,结构上采取了前后端分离的方式,前端使用 Vue和 Vuetify分别作为 Javascript框架和UI框架,后端采用 Spring Boot 框架。既可以按照标准的 Maven 方式进行打包,部署,也可以采用前后端分离的部署方式,方便开发,功能上,目前具备了服务查询,服务治理(包括 Dubbo 2.7中新增的治理规则)以及服务测试三部分内容。
下面,我们看下如何在本地安装部署dubbo的管理控制台。
首先,我们要下载dubbo-admin的源码包或者部署包,如果下载源码包的话,需要你自己打包,由于又是前后端分离的项目,所以这里我就偷个懒,直接下载部署包:
下载完成后,直接解压,然后进入bin\config文件夹,这里有dubbo-admin的配置文件。因为后端是spring boot项目,所以这里的application.properties文件就是我们spring boot的配置文件,默认情况下,整个配置文件只有一些简单配置项:
因为没有项目的端口配置,所以默认情况下,dubbo-admin的访问端口是,当然你也可以自行修改;
配置文件中,首先是注册中心、配置中心、元数据中心的配置,今天我们演示的注册中心是zk,所以这里就不修改了;
紧接着是管理平台的登录用户名和密码,默认都是root,你也可以根据自己的需要修改;
最后面是压缩的相关配置,这里应该是请求响应内容的压缩配置,主要是针对css/js以及页面等内容。
完成以上内容配置,我们就可以启动测序下了。首先,我们要先启动zk,然后启动我们的管理平台,直接访问我们dubbo-admin的服务地址即可,我配置的端口是,所以我访问的地址是/post/
2024-12-23 07:08950人浏览
2024-12-23 06:042585人浏览
2024-12-23 05:42688人浏览
2024-12-23 05:372959人浏览
2024-12-23 05:36652人浏览
2024-12-23 05:141004人浏览
一名中國網紅日前準備入住巴黎長榮桂冠酒店,結果踏進大廳發現獨漏中國五星旗,憤而要求飯店掛上,遭到對方婉拒,隔天網紅再度來到飯店,要求主管掛上五星旗,結果這名主管表示飯店有權利決定如何布置,影片引起爭議
文章也可以用聽的文:陳怡嘉醫師健科診所醫師)在家時,你是在上班、追劇、還是滑手機兼放空或社交呢?在宅活動時,你又是怎麼「坐」的呢?其實「坐」姿是可以預測未來的唷!誠實地選擇以下在家的「坐」姿,然後看看
3月28日,重庆市知识产权中心在璧山设立的首个知识产权综合服务窗口正式开通。该窗口位于璧山区行政服务中心4楼438号窗口,主要面向企业及个人开展知识产权申报