zoukankan      html  css  js  c++  java
  • 了解dubbo+zookeeper

    一、Dubbo是什么?
    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
    它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
     
    二、为什么要用Dubbo?
    因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证了高性能高可用性。
     
    好处:
    1、使用Dubbo可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用
    灵活扩展,使前端应用能更快速的响应多变的市场需求。
    2、分布式架构可以承受更大规模的并发流量。
    3、
    当我们的业务越来越多、应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来。
    此时,可以将公共业务逻辑抽离出来,将之组成独立的服务Service应用 。而原有的、新增的应用都可以与那些独立的Service应用交互,以此来完成完整的业务功能。
    所以此时,我们急需一种高效的应用程序之间的通讯手段来完成这种需求,这个时候,RPC的作用可以发挥了!RPC框架就是实现服务化 、微服务和分布式系统架构的场景的有力方式
    4、透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入
    5、软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点
    6、服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者
    Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

    本质:一个Jar包,一个分布式框架,,一个远程服务调用的分布式框架。

    什么是分布式和远程服务调用,为什么要分布式,为什么要远程调用

    「dubbo专题」dubbo其实很简单,就是一个远程服务调用的框架(1)


    你想一下,以前什么的都在一个服务器上,调用方法直接就自然而然调用了,没啥问题。现在因为需求增多拆分了这么多个,部署在不同的服务器上,那是不是相对以前都在一个服务器上,现在分布式后,web层调用service层的服务变成了远程调用?那怎样像以前那样都在一个服务器上自然而然调用方法呢?dubbo来解决。这就是下面dubbo的好处。

    dubbo架构图:

    讲解他的架构图之前,我们先普及下几个概念。

    节点角色说明:

    Provider(生产者): 暴露服务的服务提供方。

    Consumer(消费者): 调用远程服务的服务消费方。

    如图,我们可以简单理解为web1234需要调用service1234的服务,所以web1234是消费者,service1234是生产者。 

     那如果按照上面,消费者调用生产者的服务,那是不是如下图:

    你看着晕不晕?晕不晕?晕不晕?反正我是晕了,万一分布式得更多呢?,所以我们需要他:

    Registry(注册中心): 服务注册与发现的注册中心。dubbo推荐的是zookeeper。什么是zookeeper?zookeeper是用于分布式中一致性处理的框架。更多的可以查看我之前的文章:这么说吧,zookeeper 很简单,其实就是个框架,是一致性处理用的。简单的讲,zookeeper就是个中介,卖楼的(生产者)把楼盘信息放在中介(注册中心)那里,想买楼的(消费者)去中介那里获得楼盘资源清单。于是,我们的图变成了这样:

    是不是好很多了?还不够, 我们还需要个监控中心(干嘛用的?当然是监控用的,调用失败怎么办?挂了怎么办?): Monitor: 统计服务的调用次调和调用时间的监控中心。(不画图了)

    然后,Provider放在容器里运行,就叫做Container服务运行容器。(不画图了)

    最终dubbo架构,如图(从0开始看起):

    0 服务容器负责启动,加载,运行服务提供者。

    1. 服务提供者(生产者)在启动时,向注册中心注册自己提供的服务。

    2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

    3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

    4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

    5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

    • provider:暴露服务的服务提供方
    • consumer:调用远程服务的服务消费方
    • registry:服务注册于发现的注册中心
    • monitor:统计服务调用次数和调用时间的监控中心
    • container:服务运行容器

     

    转载:https://blog.csdn.net/zxljsbk/article/details/81626559

  • 相关阅读:
    04构建之法阅读笔记之四
    冲刺周期第十天
    冲刺周期第九天
    第二阶段冲刺--每日立会(4)
    第二阶段冲刺--每日立会(3)
    第二阶段冲刺--每日立会(2)
    第二阶段冲刺--每日立会(1)
    第十二周学习记录表
    第一阶段冲刺--每日立会(10)
    第一阶段冲刺--每日立会(9)
  • 原文地址:https://www.cnblogs.com/nongzihong/p/11842744.html
Copyright © 2011-2022 走看看