zoukankan      html  css  js  c++  java
  • Zookeeper和Dubbo介绍

    引言

     RPC介绍 之 远程调用

    Remote Procedure Call 远程过程调用,是分布式架构的核心,按响应方式分如下两种:

    • 同步调用:客户端调用服务方方法,等待直到服务方返回结果或者超时,再继续自己的操作。
    • 异步调用:客户端把消息发送给中间件,不再等待服务端返回,直接继续自己的操作。

    需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。
    RPC是一个泛化的概念,严格来说一切远程过程调用手段都属于RPC范畴。各种开发语言都有自己的
    RPC框架。Java中的RPC框架比较多,广泛使用的有RMI、Hessian、Dubbo、gRPC等。

    RPC组件

    简单来说一个RPC架构里包含如下4个组件:
    1、 客户端(Client):服务调用者
    2、 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网
    络发送给服务方
    3、 服务端存根(Server Stub):接受客户端发送过来的消息并解包,再调用本地服务
    4、 服务端(Server):服务提供者。

     

     Apache Dubbo架构

    • 虚线都是异步访问
    • 实线都是同步访问
    • 蓝色虚线:在启动时完成的功能
    • 红色虚线(实线)都是程序运行过程中执行的功能

     节点角色说明:

    • Provider:暴露服务的服务提供方;
    • Consumer:调用远程服务的服务消费方;
    • Register:服务注册与发现的注册中心;
    • Monitor:统计服务调用次数和调用时间的监控中心;
    • Constainer:服务运行容器。

    调用关系说明:

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

    Dubbo建议使用Zookeeper作为服务的注册中心

    1.Zookeeper 的作用

    Zookeeper是一个分布式协调服务。

    Zookeeper用来注册服务和进行负载均衡,哪一个服务由那一台机器来提供必需让调用者知道,简单来说就是IP地址和服务名称的对应关系。当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉,调用者无法知晓,如果不更改代码会继续请求挂掉的机器提供服务。Zookeeper通过心跳机制可以检测挂掉的机器的IP和服务对应关系从列表关系中删除。至于支持高并发,简单来说就是横向扩展,在不更改代码的情况通过增加机器数量提高运算能力。通过添加新的机器向Zookeeper注册服务,服务的提供者多了能服务的客户就多了。

    2.dubbo

    官方说法,Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案。RPC 指的是远程调用协议,也就是说两个服务器交互数据。

    是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和提供者需要调度,dubbo提供一个框架解决这些问题。注意这里的dubbo只是一个框架,至于你在框架上放什么东西,完全取决于你,就像一个汽车骨架,你需要配你的轮子引擎。这个框架中要完成调度必须需要一个分布式的注册中心,存储所有服务的元数据,你可以用Zookeeper,你也可以用别的。

    3.dubbo和Zookeeper的关系

    dubbo将注册中心进行抽象,使得它可以外接不同的存储媒介给注册中心提供服务,有Zookeeper,memcached,redis等。

    引入了Zookeeper作为存储媒介,也就把Zookeeper的特性引进来了。首先是负载均衡,但注册中心的承载能力是有限的,在流量达到一定程度的时候要进行分流,负载均衡就是为分流而生的,一个Zookeeper群配合相应的web应用就可以很容易达到负载均衡;资源同步,单单有负载均衡还不够,节点之间的数据和资源需要同步,Zookeeper集群就天然具备有这样的功能;命名服务,将树状结构用于维护全局的服务地址列表,服务提供者在启动的时候,向Zookeeper上指定的节点/dubbo/${serviceName}/providers目录下写入自己的url地址,这个操作就完成了服务的发布。其他特性还有master选举,分布式锁等。

  • 相关阅读:
    Xamarin.Forms之ToolbarItem
    Xamarin.Forms一些常见问题
    Xamarin.Forms之页面及导航
    Xamarin.Forms 自定义控件(呈现器和效果)
    Xamarin.Forms之主题
    Xamarin.Forms之样式
    Android开发
    eShopOnContainers项目
    使用Xamarin.Forms构建企业应用
    Xamarin.Forms之XAML
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13697732.html
Copyright © 2011-2022 走看看