Dubbo 微服务

(一)Dubbo的优点和缺点

  1 优点: 相比httpClient少些代码,容易定位bug,容易扩展,容易发布,支持集群,支持故障转移

  2 缺点: 

    1、性能低,分布式系统是跨进程,跨网络的,性能很受网络延迟和带宽的影响。

    2、可靠性差:由于高度依赖网络状况,任何一次远程调用都可能失败。

    3、运维成本:一个系统拆成了多个服务,每个服务都得配置,部署,监控,日志处理

  3 概念介绍

    1 RPC : RPCRemote Procedure Call)—远程过程调用 (Dubbo微服务框架底层用的是RPC)

      2 SOA : SOA面向服务的架构Service-oriented architecture)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过接口联系起来。各种各样的服务可以通过接口进行交互。

(二)实现分布式有两种实现方法

  第一种 : 用httpClient

  第二种 : 用dubbo

  


(三) 引入 Zookeeper(服务注册中心

   3.1 下面来用解释引入的它的作用

     需求: 客户端直接服务提供者,无法实现集群

  解释: ZooKeeper是一个分布式应用程序协调服务。他是一个为分布式应用提供一致性服务的软件,提供的功能包括:

  1. 配置维护
  2. 域名服务
  3. 分布式同步
  4. 组服务等

  当客户端发起请求时ZooKeeper返回正确的服务器地址

  业务逻辑详解

  1.  当服务的提供者启动时,会将服务的名称: IP和端口   写入ZooKeeper 
  2. ZooKeeper内部会维护服务列表,某个服务提供者关机了,服务还能正常运行
  3. 当消费者需要访问服务时,需要先访问ZooKeeper获取服务列表信息。之后将服务列表保存到本地缓存中,方便后续的访问。在客户端内部有负载均衡算法,筛选出一台服务器,之后进行访问。
  4. 如果ZooKeeper服务器出现宕机现象。这时注册中心通过心跳检测的方式判断服务器是否宕机。如果服务器宕机则会将该服务器信息从服务列表中删除。之后将新的服务列表发送消费者(客户端)进行更新

  ZooKeeper其实也可以管理tomcat集群和redis集群.但是tomcat用nginx比较合适,redis 用mycat更为合适.

  

  

  3.2 一张图 ZooKeeper 与 nginx 和 mycat

   

  

  3.3 关于ZooKeeper的面试题

  当ZooKeeper宕机后,消费者能否正确运行

  答案: 可以

  原因:因为ZooKeeper会动态的向客户端更新服务列表信息。当ZooKeeper宕机后,由于之前已经同步了ZooKeeper的服务列表信息,所以客户端可以按照自己已经缓存的清单进行访问。如果在这个期间服务端程序发现宕机现象,那么则访问故障机时由于不能通信,则等待超时时间(无响应),则访问下一台服务器。如果这时,所有的服务端程序都宕机则整个服务陷入瘫痪。


(四)Dubbo(跨进程调用)案例 深入分析

  4.1 原理

  

  4.2分析

  


           

                 逢山开路,遇水搭桥

  

原文地址:https://www.cnblogs.com/misscai/p/9973200.html