2025.3.2微服务架构(Dubbo )
Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。 使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。
一、Dubbo架构和实战
架构演变过程
单体架构
单体架构所有模块和功能都集中在一个项目中 ,部署时也是将项目所有功能整体部署到服务器中。
垂直架构
根据业务把项目垂直切割成多个项目。
分布式架构(SOA)
在垂直划分的基础上,将每个项目拆分出多个具备松耦合的服务,一个服务通常以独立的形式存在于操作系统进程中。
Dubbo三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
基于垂直结构进行分层:
应用层: 距离用户最近的一层也称之为接入层,使用tomcat作为web容器接收用户请求使用下游的dubbo提供的接口来返回数据并且该层禁止访问数据库。
业务服务层:根据具体的业务场景 演变而来的模块 比如 简历投递 职位搜索 职位推荐等。
基础业务层:招聘业务的核心 账号 简历 公司 职位。
基础服务层:这一层是与业务无关的模块是一些通用的服务,比如发短信,发邮件等等,这类服务请求量大但是逻辑简单。
存储层:不同的存储类型Mysql、Mongodb。
分级:二八定律,80%的流量在核心功能上,优先保证核心服务的稳定。
隔离:不同性质、不同重要业务要进行隔离,比如各种中间件。
优点:服务以接口为粒度,屏蔽远程调用底层细节,只关心结果,而且采用此业务分层架构清晰,模块职责单一,扩展性强,保证系统稳定且安全。
缺点:粒度控制复杂,模块越多可能引发超时,分布式事务问题,可能引发接口爆炸,版本升级兼容困难,调用链路长。
微服务架构
将单个应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中独立运行,并使用轻量级机制(通常是HTTP资源的API)进行通信。这些服务的集中化管理非常少,它们可以用不同的编程语言编写,并使用不同的数据存储技术。微服务是在SOA上做的升华 , 粒度更加细致,微服务架构强调的一个重点是业务需要彻底的组件化和服务化。
Dubbo基础知识
Apache Dubbo是一款高性能的Java RPC框架。
面向接口的远程方法调用:提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。
智能容错和负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
服务自动注册和发现:支持多种注册中心服务,服务实例上下线实时感知。
Dubbo服务治理:,企业为了确保项目顺利完成而实施的过程,包括最佳实践、架构原则、治理规程、规律以及其他决定性的因素。


调用过程:
-
服务提供者在服务容器启动时向注册中心注册自己提供的服务。
-
服务消费者在启动时向注册中心订阅自己所需的服务。
-
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心会基于长连接推送数据给消费者。
-
服务消费者从提供者地址列表中,基于软负载均衡算法选一台提供者进行调用,如果调用失败,重新选择。
-
服务提供者和服务消费者在内存中的调用次数和时间,定时每分钟发送给监控中心。

浙公网安备 33010602011771号