Dubbo源码学习

news/2024/11/18 19:30:35/文章来源:https://www.cnblogs.com/fengok/p/18289997

学习Dubbo框架与手写模拟相关内容

一、存在的意义

Dubbo:解决分布式系统的复杂性,实现服务治理(使服务之间的调用变的简单)和自动注册与发现,简化服务调用。

二、调用过程

Dubbo的使用

接口代表一种服务,对应不同的实现,使服务之间的依赖变的简单。

服务消费者通过ClassPassXmlApplicationContext下的getBean(“实现类实例”,实现类.class)拿到 接口的代理对象,然后拿接口代理对象调用里面的方法。

 

远程调用:想使用接口,通过写一个类里面实现jdk自带的 getProxy方法 返回代理对象。

其中重写了参数列表的invoke方法,在这里加入代理逻辑==将其封装到这里,返回对应的代理对象。

代理逻辑:new HttpClient--new Invocation()--通过httpclient.send发送到某ip某端口invocation,返回result。

 

01-Dubbo框架介绍与手写模拟Dubbo

负载均衡:Random.nextInt(边界值)

容错机制:try--catch(自己写想返回什么)

mock:使用Mock数据来模拟后端响应,从而提前开始前端界面的开发和调试。

 

 -----------------------------------------------------------------------------------------------------------------------------------------------------

enabledubbo开启dubbo服务,扫描yml配置。dubboservice注册暴露服务,refrence通过注册中心远程调用注入

分布式项目:可以独立的启动,packaging方式是war。加上Tomcat插件。

 dubbo提供的service注解,将服务注册到注册中心。

Autowird本地注入==从spring容器找,有无这个bean。将项目链式依赖删除后,就找不到了,需要通过Dubbo提供的Refrence注解,通过代理对象 拿到bean使用。

1.从zookeeper拿到服务的url

2.rpc远程调用

3.返回代理对象

将service接口,作为公共模块提取。 是服务提供者和消费者的桥梁。

 

启动jar包: java -jar ./jar包名字

被依赖的工程,有改动了要重新install。

 

序列化:两个机器上传递数据,需要序列化数据进行传递。

地址缓存:zk挂了,仍可访问。

超时:A-->B的服务,如果B挂了,则在A堆积大量请求,造成A雪崩瘫痪。通过设置timeout属性(默认1000,单位毫秒)。两端都可设置,推荐服务端。

重试:超时后,自动断开连接。避免因发生网络抖动超时直拒,设置retries重试次数(默认2),重试仍无法访问,才返回失败。

多版本:实现新功能发布初,部分用户使用(service注解的version属性)(在消费端Refrence注解设置version属性),后续灵活更改对应版本。

负载均衡:enter+shift搜索AbstractLoadBalance。(service注解的weight属性)(在消费端Refrence注解设置loadbalance属性,默认random)

 

服务端配置:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741246.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试的分类and测试进阶路线

本文来自博客园,作者:子沐呐吖,转载请注明原文链接:https://www.cnblogs.com/SuperLee017/p/18292404

使用资源编排 ROS 轻松部署单点网站——以 WordPress 为例

介绍 WordPress是一款免费开源的网站内容管理系统(CMS),它可以帮助用户简单快捷地创建和管理自己的网站,包括博客、新闻网站、电子商务网站、社交网络等等。WordPress 有丰富的主题和插件库,使得用户可以轻松地为网站定制外观和功能。WordPress 的易用性和可扩展性使其成为…

[Java SE] Java-文件系统-常用文件路径的获取方法

1 获取相对路径 /*** 获取相对路径 【推荐】* 使用Java提供的Path类和Paths类来获取相对路径。* 例如,假设有两个路径a和b,我们可以使用Path类的relativize()方法来获取相对路径,该方法返回一个相对路径的Path对象。*/ @Test public void getRelativePathTest1(){Path pathA…

CH582 CH592 CH573 BLE central主机获取handle值

GATT_DiscCharsByUUID和GATT_ReadUsingCharUUID 差异

[深入理解Java虚拟机]Java内存模型

Java内存模型 概述 多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多场景下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统的速度差距太大,大量的时间都花费在磁盘I/O、网络…

深入理解 DB-GPT

DB-GPT 项目介绍 DB-GPT是一个开源的AI原生数据应用开发框架(AI Native Data App Development framework with AWEL(Agentic Workflow Expression Language) and Agents)。目的是构建大模型领域的基础设施,通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Mult…

2024年国内最经典好用的5款项目管理软件工具助你一路长虹

目前市场上的项目管理软件众多,但是它们也都有一些共同的功能及特点。比如任务和进度管理、资源分配、财务监控、风险评估、协作增强以及报告和洞察力等。这些功能不仅提供了强大的工具来确保项目的高效执行和按时交付,而且还为团队成员和管理者提供了实时的数据和信息,帮助…

「代码随想录算法训练营」第六天 | 哈希表 part2

454. 四数相加 II题目链接:https://leetcode.cn/problems/4sum-ii/ 题目难度:中等 文章讲解:https://programmercarl.com/0454.四数相加II.html 视频讲解: https://www.bilibili.com/video/BV1Md4y1Q7Yh 题目状态:没思路思路:创建一个unordered_map<int, int>类型的…

C#和VB.NET连接Access

一、直接通过软件连接Access表 1:新建一个windowsForm工程。2:打开"检视\伺服器总管\资料连接"后,右击"资料连接"后打开"连接资料连接",选择正确的资料来源与资料库档名,若有密码请输入正确的密码,如无,则不输入。3:点击"测试连接&qu…

一对一关联

一对一关系实际上是通过建立双向关系的一对多关系的基础上转化而来。比如:一个用户对应一张身份证,一张身份证属于一个用户。 class IdCard(Base): """省份证的模型类, 它和员工之间是一对一的关联关系""" __tablename__ = t_id_card id: Map…

CSS minification error: Lexical error on line 1:Unrecognized text

删除node_modules 重新安装,如果还不行,就复制一份别的能用的