【rpc】Dubbo和Zookeeper结合使用,它们的作用与联系(通俗易懂,一文理解)
目录
Dubbo是什么?
把系统模块变成分布式,有哪些好处,本来能在一台机子上运行,为什么还要远程调用
Zookeeper是什么?
它们进行配合使用时,之间的关系
服务注册
服务发现
动态地址管理
Dubbo是什么?
Dubbo是一种开源的高性能、轻量级的分布式服务框架,它致力于提供可靠的RPC(远程过程调用)通信,使得不同的应用程序可以通过网络互相调用,实现分布式系统之间的高效通信和协作。
通俗地说,我们可以将Dubbo比喻为一个快递公司。假设有一个电商平台需要处理用户下单、支付和发货等操作,而这些操作分别由不同的子系统(例如订单系统、支付系统和物流系统)处理。在传统的架构中,这些子系统之间要进行复杂的接口对接和数据传输,非常繁琐。
而使用Dubbo框架,我们可以将每个子系统都称为一个服务,这就像将每个子系统都是一个快递站点。Dubbo框架提供了服务注册、发现和调用的功能,就像在快递公司中有一个中央调度中心一样。每个子系统都会在中央调度中心注册自己提供的服务,其他子系统则可以通过中央调度中心查询并调用这些服务。
举个例子来说,当用户下单时,订单系统会将订单信息提交给Dubbo的中央调度中心。支付系统会监听中央调度中心,当发现有新的订单需要支付时,就会主动调用订单系统提供的支付服务,完成支付操作。物流系统也会监听中央调度中心,当发现有新的订单需要发货时,就会主动调用订单系统提供的发货服务,完成物流操作。
通过Dubbo框架,这些子系统之间的通信和协作变得简单高效,每个子系统只需专注于自身的业务逻辑,而不必关心其他系统的实现细节。
把系统模块变成分布式,有哪些好处,本来能在一台机子上运行,为什么还要远程调用
将系统模块变成分布式架构具有以下几个好处:
-
提高性能和可扩展性:通过将系统模块分布到多台机器上,每台机器都可以独立处理一部分工作负载,从而提高系统整体的性能和吞吐量。如果系统需要处理更大规模的数据或者并发请求,可以通过添加更多的机器来扩展系统的能力。
-
提高系统的可靠性和容错性:分布式架构中的模块可以部署在不同的机器上,当其中一台机器发生故障时,其他机器仍然可以继续提供服务,从而提高了系统的可靠性和容错性。此外,分布式架构还可以使用数据复制、备份和冗余机制来防止数据丢失和单点故障。
-
实现资源共享和负载均衡:通过远程调用可以实现不同机器之间的资源共享和负载均衡。例如,在一个分布式系统中,可以将计算密集型任务分配给性能较高的机器,将存储任务分配给存储资源丰富的机器,从而充分利用各个机器的特点和优势。
-
降低开发和维护成本:通过将系统模块拆分为分布式服务,不同的团队可以独立开发和维护自己负责的服务,从而降低了各个模块之间的耦合度和开发协调成本。此外,由于每个模块都是相对独立的,可以更容易地进行系统的升级和扩展。
Zookeeper是什么?
ZooKeeper是一个开源的分布式协调服务框架,旨在提供高度可靠的分布式协调功能,用于构建和管理分布式系统。
ZooKeeper提供了一个简单而强大的分布式协调原语集合,包括数据发布/订阅、分布式锁、分布式队列、选举等。它采用树形的数据结构来组织和存储数据,类似于文件系统的目录结构。每个节点(称为ZNode)都可以存储一小段数据,同时也可以拥有子节点。
ZooKeeper的主要特点包括:
-
高性能:ZooKeeper基于内存的数据模型和异步方式的数据复制机制,具有较低的延迟和高吞吐量,在大规模分布式系统中表现出色。
-
可靠性:ZooKeeper采用了多副本复制机制,将数据在多个节点上进行复制,当部分节点发生故障时,仍然可以保持数据的可靠性和可用性。
-
顺序一致性:ZooKeeper提供了强一致性的数据访问保证,即客户端在看到的数据状态上具有全局的线性顺序。
-
高可扩展性:ZooKeeper支持集群模式,可以通过添加更多的节点来扩展其性能和容量。
ZooKeeper常被用于构建分布式应用程序,如分布式数据库、分布式缓存、分布式锁等。它提供了简单却强大的API,能够帮助开发者实现分布式系统中的协调和同步操作。
它们进行配合使用时,之间的关系
当Dubbo和Zookeeper结合使用时,它们的关系可以分为服务注册、服务发现和动态地址管理三个方面。
服务注册
Dubbo将服务提供者的信息注册到Zookeeper中心,使服务消费者可以发现并调用服务。服务提供者先启动自己的服务,然后将自己的服务提供者的信息(包括IP地址、端口号、服务接口等)注册到Zookeeper上的指定节点中,完成服务注册的过程。这样,服务消费者就能从Zookeeper中获取可用的服务列表。
服务发现
Dubbo的服务消费者向Zookeeper订阅特定的服务接口,Zookeeper会将该服务接口下的可用提供者列表返回给消费者。消费者可以根据自定义的路由规则或负载均衡策略从这些提供者中选择一个进行调用。服务消费者订阅服务接口后,Dubbo框架会监听Zookeeper注册中心节点的变化,一旦有新的服务提供者注册或注销,Zookeeper会自动通知Dubbo框架,Dubbo框架会根据更新后的服务提供者列表更新本地缓存的服务提供者列表,从而确保服务提供者列表的实时性和准确性。
动态地址管理
Dubbo利用Zookeeper作为注册中心,可以实现服务地址的动态管理,当有新的服务提供者上线或下线时,Zookeeper会将相应的事件通知给Dubbo,Dubbo在接收到事件后,会自动更新可用服务地址列表,使得调用方能够发现新的服务地址信息。
相关文章:
【rpc】Dubbo和Zookeeper结合使用,它们的作用与联系(通俗易懂,一文理解)
目录 Dubbo是什么? 把系统模块变成分布式,有哪些好处,本来能在一台机子上运行,为什么还要远程调用 Zookeeper是什么? 它们进行配合使用时,之间的关系 服务注册 服务发现 动态地址管理 Dubbo是…...

ChatGPT的未来
随着人工智能的快速发展,ChatGPT作为一种自然语言生成模型,在各个领域都展现出了巨大的潜力。它不仅可以用于日常对话、创意助手和知识查询,还可以应用于教育、医疗、商业等各个领域,为人们带来更多便利和创新。 在教育领域&#…...
Pytorch模型转ONNX部署
开始以为会很困难,但是其实非常方便,下边分两步走:1. pytorch模型转onnx;2. 使用onnx进行inference 0. 准备工作 0.1 安装onnx 安装onnx和onnxruntime,onnx貌似是个环境。。倒是没有直接使用,onnxruntim…...

k8s优雅停服
在应用程序的整个生命周期中,正在运行的 pod 会由于多种原因而终止。在某些情况下,Kubernetes 会因用户输入(例如更新或删除 Deployment 时)而终止 pod。在其他情况下,Kubernetes 需要释放给定节点上的资源时会终止 po…...

面试题五:computed的使用
题记 大部分的工作中使用computed的频次很低的,所以今天拿出来一文对于computed进行详细的介绍,因为Vue的灵魂之一就是computed。 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护…...

完美的分布式监控系统 Prometheus与优雅的开源可视化平台 Grafana
1、之间的关系 prometheus与grafana之间是相辅相成的关系。简而言之Grafana作为可视化的平台,平台的数据从Prometheus中取到来进行仪表盘的展示。而Prometheus这源源不断的给Grafana提供数据的支持。 Prometheus是一个开源的系统监控和报警系统,能够监…...

黑马JVM总结(九)
(1)StringTable_调优1 我们知道StringTable底层是一个哈希表,哈希表的性能是跟它的大小相关的,如果哈希表这个桶的个数比较多,元素相对分散,哈希碰撞的几率就会减少,查找的速度较快,…...

如何使用 RunwayML 进行创意 AI 创作
标题:如何使用 RunwayML 进行创意 AI 创作 介绍 RunwayML 是一个基于浏览器的人工智能创作工具,可让用户使用各种 AI 功能来生成图像、视频、音乐、文字和其他创意内容。RunwayML 的功能包括: * 图像生成:使用生成式对抗网络 (…...

【css】能被4整除 css :class,判断一个数能否被另外一个数整除,余数
判断一个数能否被另外一个数整除 一个数能被4整除的表达式可以表示为:num%40,其中,num为待判断的数,% 为取模运算符,为等于运算符。这个表达式的意思是,如果num除以4的余数为0,则返回true&…...

ChatGPT与日本首相交流核废水事件-精准Prompt...
了解更多请点击:ChatGPT与日本首相交流核废水事件-精准Prompt...https://mp.weixin.qq.com/s?__bizMzg2NDY3NjY5NA&mid2247490070&idx1&snebdc608acd419bb3e71ca46acee04890&chksmce64e42ff9136d39743d16059e2c9509cc799a7b15e8f4d4f71caa25968554…...

关于 firefox 不能访问 http 的解决
情景: 我在虚拟机 192.168.x.111 上配置了 DNS 服务器,在 kali 上设置 192.168.x.111 为 DNS 服务器后,使用 firefox 地址栏搜索域名 www.xxx.com ,访问在 192.168.x.111 搭建的网站,本来经 192.168.x.111 DNS 服务器解…...

68、Spring Data JPA 的 方法名关键字查询
★ 方法名关键字查询(全自动) (1)继承 CrudRepository 接口 的 DAO 组件可按特定规则来定义查询方法,只要这些查询方法的 方法名 遵守特定的规则,Spring Data 将会自动为这些方法生成 查询语句、提供 方法…...

Brother CNC联网数采集和远程控制
兄弟CNC IP地址设定参考:https://www.sohu.com/a/544461221_121353733没有能力写代码的兄弟可以提前下载好网络调试助手NetAssist,这样就不用写代码来测试连接CNC了。 以上是网络调试助手抓取CNC的产出命令,结果有多个行string需要自行解析&…...

Jenkins 编译 Maven 项目提示错误 version 17
在最近使用集成工具的时候,对项目进行编译提示下面的错误信息: maven-compiler-plugin:3.11.0:compile (default-compile) on project mq-service: Fatal error compiling: error: release version 17 not supported 问题和解决 上面提示的错误信息原…...

数据结构——排序算法——堆排序
堆排序过程如下: 1.用数列构建出一个大顶堆,取出堆顶的数字; 2.调整剩余的数字,构建出新的大顶堆,再次取出堆顶的数字; 3.循环往复,完成整个排序。 构建大顶堆有两种方式: 1.从 0 开…...
【Spring事务底层实现原理】
Transactional注解 Spring使用了TransactionInterceptor拦截器,该拦截器主要负责事务的管理,包括开启、提交、回滚等操作。当在方法上添加Transactional注解时,Spring会在AOP框架中对该方法进行拦截,TransactionInterceptor会在该…...
docker快速安装redis,mysql,minio,nacos等常用软件【持续更新】
redis ①拉取镜像 docker pull redis② 创建容器 docker run -d --name redis --restartalways -p 6379:6379 redis --requirepass "PASSWORD"–requirepass “输入你的redis密码” nacos ①:docker拉取镜像 docker pull nacos/nacos-server:1.2.0②…...

SCRUM产品负责人(CSPO)认证培训课程
课程简介 Scrum是目前运用最为广泛的敏捷开发方法,是一个轻量级的项目管理和产品研发管理框架。产品负责人是Scrum的三个角色之一,产品负责人在Scrum产品开发当中扮演舵手的角色,他决定产品的愿景、路线图以及投资回报,他需要回答…...

python连接mysql数据库的练习
一、导入pandas内置的sqlite3模块,连接的信息:ip地址是本机, 端口号port 是3306, 用户user是root, 密码password是123456, 数据库database是lambda-xiaozhang import pymysql# 打开数据库连接,参数1:主机名或IP;参数…...

扩散模型在图像生成中的应用:从真实样例到逼真图像的奇妙转变
一、扩散模型 扩散模型的起源可以追溯到热力学中的扩散过程。热力学中的扩散过程是指物质从高浓度往低浓度的地方流动,最终达到一种动态的平衡。这个过程就是一个扩散过程。 在深度学习领域中,扩散模型(diffusion models)是深度生…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...