【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)是深度生…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
