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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 微服务技术系列教程(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负载均衡是硬件负载均衡的一种。硬件负载均衡,顾名思义,在服务器节点之间安装专门的硬件进行负载均衡的工作。
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
3月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
123 3
|
1月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
3月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
144 7
|
3月前
|
Kubernetes Java 微服务
微服务上下线动态感知实现的技术解析
随着微服务架构的广泛应用,服务的动态管理和监控变得尤为重要。在微服务架构中,服务的上下线是一个常见的操作,如何实时感知这些变化,确保系统的稳定性和可靠性,成为了一个关键技术挑战。本文将深入探讨微服务上下线动态感知的实现方式,从技术基础、场景案例、解决思路和底层原理等多个维度进行阐述,并分别使用Java和Python进行演示介绍。
87 4
|
3月前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
96 1
|
3月前
|
监控 Java 微服务
从零构建微服务架构:一次深度技术探索之旅####
本文作为一篇深度技术分享,引领读者踏上自底向上搭建微服务架构的征途,旨在通过实战经验剖析,揭示微服务转型背后的技术挑战与解决方案。不同于常规摘要仅概述内容,本文摘要将直接以故事化手法,简述作者从单体应用困境出发,逐步迈向微服务化的心路历程,涵盖关键决策点、技术选型考量及实践收获,激发读者对微服务架构设计与实现的浓厚兴趣。 ####
|
3月前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
101 2
|
3月前
|
监控 持续交付 API
深入理解云计算中的微服务架构:原理、优势与实践
深入理解云计算中的微服务架构:原理、优势与实践
81 0
|
2月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
137 3