微服务技术系列教程(31) - Dubbo-原理及负载均衡分析

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 微服务技术系列教程(31) - Dubbo-原理及负载均衡分析

Dubbo原理分析

角色区分:

  • Provider: 暴露服务的服务提供方(生产者)。
  • Consumer: 调用远程服务的服务消费方(消费者)。
  • Registry: 服务注册与发现的注册中心。
  • Monitor: 统计服务的调用次数和调用时间的监控中心。

调用流程:

  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

通俗易懂的话总结:

  • 提供者把自己的完整类路径注册到Zookeeper注册中心。
  • Zookeeper会推送变更信息给消费者,消费者会更新内容提供者服务列表到JVM。
  • 消费者远程调用提供者,使用Dubbo协议(其实就是Netty的封装),注意SpringCloud的RPC调用提供者使用的是HTTP协议

Zookeeper注册中心上,创建一个持久节点为service,在service持久节点下面创建多个不同的临时节点存放服务列表信息,临时节点内容存放服务调用地址。客 户 端从Zookeeper节点上获取最新service持久节点下面服务节点信息,让后在本地使用负载均衡算法,随机分配调用远程服务。客户端采用事件监听service持久节下面节点是否发生变化,如果发生变化Zookeeper服务器端会及时的将最新的数据推送给Zookeeper客户端。

RPC框架中负载均衡设计

在RPC远程调用框架中负载均衡大多数都采用本地负载均衡器,比SpringCloud中Ribbon组件直接从注册中心上获取服务列表信息,让后在本地实现RPC远程调用,同样的到底Dubbo框架中的负载均衡也是采用本地负载均衡器。

也许会有疑问,为什么不引入Nginx作为SpringCloud和Dubbo负载均衡中间件呢?

  • 如果引入Nginx,是否考虑过Nginx要出所有的请求,压力是否会很大?为什么不平分到每个消费者?
  • Dubbo消费者使用过Dubbo协议去通信的,Nginx是不支持Dubbo协议的。
  • 。。。。。。

其实结论很明确了:如果使用RPC框架,一般是不会使用Nginx实现负载均衡的,而是使用RPC框架的本地负载均衡,如SpringCloud使用Ribbon。

说到负载均衡,会提到软负载和硬负载:

软负载:

  • 软件负载均衡通过服务器端上安装的负载均软件或者使用本地负载算法实现负载均衡功能,例如:LVS、 Nginx 、 Haproxy。

硬负载:

  • F5负载均衡是硬件负载均衡的一种。硬件负载均衡,顾名思义,在服务器节点之间安装专门的硬件进行负载均衡的工作。
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
【技术干货连载 二】SLB 408问题排查
SLB 408问题排查思路和方法
12 0
|
1月前
|
Kubernetes 开发者 Docker
基于容器技术的微服务架构
基于容器技术的微服务架构
33 0
|
19天前
|
消息中间件 监控 Java
微服务技术发展
微服务技术发展
|
26天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
30天前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
40 0
|
30天前
|
Cloud Native Dubbo 应用服务中间件
【Dubbo3技术专题】拥有新时代的通信协议,引领云原生迈向更高的舞台 | 解密Dubbo3是如何从微服务升华到云原生领域
【Dubbo3技术专题】拥有新时代的通信协议,引领云原生迈向更高的舞台 | 解密Dubbo3是如何从微服务升华到云原生领域
39 1
|
30天前
|
Kubernetes Dubbo Cloud Native
【Dubbo3技术专题】总体技术体系介绍及技术指南(序章)
【Dubbo3技术专题】总体技术体系介绍及技术指南(序章)
15 1
|
19天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
33 0
|
3月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
34 0
|
9天前
|
负载均衡 应用服务中间件 nginx
Nginx 负载均衡
Nginx 负载均衡
22 2