• 【rpc】Dubbo和Zookeeper结合使用,它们的作用与联系(通俗易懂,一文理解)


    目录

    Dubbo是什么?        

    把系统模块变成分布式,有哪些好处,本来能在一台机子上运行,为什么还要远程调用

    Zookeeper是什么?

    它们进行配合使用时,之间的关系

    服务注册

    服务发现

    动态地址管理


    Dubbo是什么?        

            Dubbo是一种开源的高性能、轻量级的分布式服务框架,它致力于提供可靠的RPC(远程过程调用)通信,使得不同的应用程序可以通过网络互相调用,实现分布式系统之间的高效通信和协作。

            通俗地说,我们可以将Dubbo比喻为一个快递公司。假设有一个电商平台需要处理用户下单、支付和发货等操作,而这些操作分别由不同的子系统(例如订单系统、支付系统和物流系统)处理。在传统的架构中,这些子系统之间要进行复杂的接口对接和数据传输,非常繁琐。

            而使用Dubbo框架,我们可以将每个子系统都称为一个服务,这就像将每个子系统都是一个快递站点。Dubbo框架提供了服务注册、发现和调用的功能,就像在快递公司中有一个中央调度中心一样。每个子系统都会在中央调度中心注册自己提供的服务,其他子系统则可以通过中央调度中心查询并调用这些服务。

            举个例子来说,当用户下单时,订单系统会将订单信息提交给Dubbo的中央调度中心。支付系统会监听中央调度中心,当发现有新的订单需要支付时,就会主动调用订单系统提供的支付服务,完成支付操作。物流系统也会监听中央调度中心,当发现有新的订单需要发货时,就会主动调用订单系统提供的发货服务,完成物流操作。

            通过Dubbo框架,这些子系统之间的通信和协作变得简单高效,每个子系统只需专注于自身的业务逻辑,而不必关心其他系统的实现细节。

    把系统模块变成分布式,有哪些好处,本来能在一台机子上运行,为什么还要远程调用

    将系统模块变成分布式架构具有以下几个好处

    1. 提高性能和可扩展性:通过将系统模块分布到多台机器上,每台机器都可以独立处理一部分工作负载,从而提高系统整体的性能和吞吐量。如果系统需要处理更大规模的数据或者并发请求,可以通过添加更多的机器来扩展系统的能力。

    2. 提高系统的可靠性和容错性:分布式架构中的模块可以部署在不同的机器上,当其中一台机器发生故障时,其他机器仍然可以继续提供服务,从而提高了系统的可靠性和容错性。此外,分布式架构还可以使用数据复制、备份和冗余机制来防止数据丢失和单点故障。

    3. 实现资源共享和负载均衡:通过远程调用可以实现不同机器之间的资源共享和负载均衡。例如,在一个分布式系统中,可以将计算密集型任务分配给性能较高的机器,将存储任务分配给存储资源丰富的机器,从而充分利用各个机器的特点和优势。

    4. 降低开发和维护成本:通过将系统模块拆分为分布式服务,不同的团队可以独立开发和维护自己负责的服务,从而降低了各个模块之间的耦合度和开发协调成本。此外,由于每个模块都是相对独立的,可以更容易地进行系统的升级和扩展。

    Zookeeper是什么?

            ZooKeeper是一个开源的分布式协调服务框架,旨在提供高度可靠的分布式协调功能,用于构建和管理分布式系统。

            ZooKeeper提供了一个简单而强大的分布式协调原语集合,包括数据发布/订阅、分布式锁、分布式队列、选举等。它采用树形的数据结构来组织和存储数据,类似于文件系统的目录结构。每个节点(称为ZNode)都可以存储一小段数据,同时也可以拥有子节点。

    ZooKeeper的主要特点包括:

    1. 高性能:ZooKeeper基于内存的数据模型和异步方式的数据复制机制,具有较低的延迟和高吞吐量,在大规模分布式系统中表现出色。

    2. 可靠性:ZooKeeper采用了多副本复制机制,将数据在多个节点上进行复制,当部分节点发生故障时,仍然可以保持数据的可靠性和可用性。

    3. 顺序一致性:ZooKeeper提供了强一致性的数据访问保证,即客户端在看到的数据状态上具有全局的线性顺序。

    4. 高可扩展性:ZooKeeper支持集群模式,可以通过添加更多的节点来扩展其性能和容量。

            ZooKeeper常被用于构建分布式应用程序,如分布式数据库、分布式缓存、分布式锁等。它提供了简单却强大的API,能够帮助开发者实现分布式系统中的协调和同步操作。

    它们进行配合使用时,之间的关系

    当Dubbo和Zookeeper结合使用时,它们的关系可以分为服务注册、服务发现和动态地址管理三个方面。

    服务注册


            Dubbo将服务提供者的信息注册到Zookeeper中心,使服务消费者可以发现并调用服务。服务提供者先启动自己的服务,然后将自己的服务提供者的信息(包括IP地址、端口号、服务接口等)注册到Zookeeper上的指定节点中,完成服务注册的过程。这样,服务消费者就能从Zookeeper中获取可用的服务列表。

    服务发现

            Dubbo的服务消费者向Zookeeper订阅特定的服务接口Zookeeper会将该服务接口下的可用提供者列表返回给消费者。消费者可以根据自定义的路由规则或负载均衡策略从这些提供者中选择一个进行调用。服务消费者订阅服务接口后,Dubbo框架会监听Zookeeper注册中心节点的变化,一旦有新的服务提供者注册或注销,Zookeeper会自动通知Dubbo框架,Dubbo框架会根据更新后的服务提供者列表更新本地缓存的服务提供者列表,从而确保服务提供者列表的实时性和准确性。

    动态地址管理

            Dubbo利用Zookeeper作为注册中心,可以实现服务地址的动态管理,当有新的服务提供者上线或下线时,Zookeeper会将相应的事件通知给Dubbo,Dubbo在接收到事件后,会自动更新可用服务地址列表,使得调用方能够发现新的服务地址信息。

  • 相关阅读:
    tep完整教程帮你突破pytest
    [附源码]计算机毕业设计JAVA 停车场管理系统
    数据库的基本概念
    算法题系列8·买卖股票的最佳时机
    【C++】:关键字+命名空间+输入输出+缺省参数+函数重载+引用
    vue-echart的使用
    网络规划与设计实验+配置案例报告+pkt
    编译原理期末总结
    王道数据结构编程题 二叉树
    oracle的序列和触发器
  • 原文地址:https://blog.csdn.net/miles067/article/details/132766425