Dubbo
RPC服务:
Remote Procedure Call,远程过程调用,其对应的协议称为RPC协议。
RPC协议是一种通过网络向远程计算机程序请求服务,而不需要了解底层网络技术的协议。以传输协议(TCP、UDP或HTTP协议)为基础。为两个不同
的应用程序间传递数据的。其介于OSI七层模型中的会话层和表示层之间。
RPC采用客户端\服务端模式,请求程序就是一个客户端,服务提供程序就是一个服务端。由于客户端和服务端部署在不同的机器上,服务间的调用避免不了
网络通信的过程。服务消费方每调用一个服务就要写一堆网络通信相关的代码(例如在调用RESTful服务时,调用端需要使用HttpClient设置很多参数,再去解析状态
和返回值,不仅复杂而且容易出错)。RPC框架封装了繁琐的通信过程和唤起调用服务的过程,使我们像调用本地服务一样调用远程服务,使调用者不必关心网络
通信的细节,提高效率。
Dubbo是基于SOA服务化治理的RPC框架。整体架构如下:
使用Socket来建立长连接,发送、接收数据。
通信方式:Netty,NIO异步传输框架
通信协议:TCP\IP协议
序列化方式:hessian二进制序列化
服务治理:
监控服务节点健康,服务降级、熔断、限流,调用量统计
部署架构(注册中心 配置中心 元数据中心)
作为一个微服务框架,Dubbo sdk 跟随着微服务组件被部署在分布式集群各个位置,为了在分布式环境下实现各个微服务组件间的协作, Dubbo 定义了一些中心化组件,这包括:
- 注册中心。协调 Consumer 与 Provider 之间的地址注册与发现
- 配置中心。
- 存储 Dubbo 启动阶段的全局配置,保证配置的跨环境共享与全局一致性
- 负责服务治理规则(路由规则、动态配置等)的存储与推送。
- 元数据中心。
- 接收 Provider 上报的服务接口元数据,为 Admin 等控制台提供运维能力(如服务测试、接口文档等)
- 作为服务发现机制的补充,提供额外的接口/方法级别配置信息的同步能力,相当于注册中心的额外扩展
Dubbo工作原理
1、服务启动的时候,provider和consumer根据配置信息,连接到注册中心register,分别向注册中心注册和订阅服务
2、register根据服务订阅关系,返回provider信息到consumer,同时consumer会把provider信息缓存到本地。如果信息有变更,consumer会收到register的推送,重新获取provider信息并更新缓存
3、consumer生成代理对象,同时根据负载均衡策略,选择一台provider,同时定时向monitor记录接口的调用次数和时间信息
4、拿到代理对象后,consumer通过代理对象发起接口调用
5、provider收到请求后对数据进行反序列化,然后通过代理调用具体的接口实现
为什么需要通过代理对象通信?
主要是为了实现接口的透明代理,封装调用细节,使客户端向调用本地方法一样调用远程方法。同时还可以通过代理实现一些其他的策略,比如:
1、调用的负载均衡
2、调用失败、超时、降级和容错机制
3、做一些过滤操作,比如加入缓存、mock数据
4、接口调用次数统计
Dubbo官网:http://dubbo.apache.org/
END.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类