Dubbo 微服务
Posted 朝才
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo 微服务相关的知识,希望对你有一定的参考价值。
(一)Dubbo的优点和缺点
1 优点: 相比httpClient少些代码,容易定位bug,容易扩展,容易发布,支持集群,支持故障转移
2 缺点:
1、性能低,分布式系统是跨进程,跨网络的,性能很受网络延迟和带宽的影响。
2、可靠性差:由于高度依赖网络状况,任何一次远程调用都可能失败。
3、运维成本:一个系统拆成了多个服务,每个服务都得配置,部署,监控,日志处理
3 概念介绍
1 RPC : RPC(Remote Procedure Call)—远程过程调用 (Dubbo微服务框架底层用的是RPC)。
2 SOA : SOA面向服务的架构(Service-oriented architecture)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过接口联系起来。各种各样的服务可以通过接口进行交互。
(二)实现分布式有两种实现方法
第一种 : 用httpClient
第二种 : 用dubbo
(三) 引入 Zookeeper(服务注册中心)
3.1 下面来用解释引入的它的作用
需求: 客户端直接服务提供者,无法实现集群
解释: ZooKeeper是一个分布式应用程序协调服务。他是一个为分布式应用提供一致性服务的软件,提供的功能包括:
- 配置维护
- 域名服务
- 分布式同步
- 组服务等
当客户端发起请求时ZooKeeper返回正确的服务器地址
业务逻辑详解
- 当服务的提供者启动时,会将服务的名称: IP和端口 写入ZooKeeper
- ZooKeeper内部会维护服务列表,某个服务提供者关机了,服务还能正常运行
- 当消费者需要访问服务时,需要先访问ZooKeeper获取服务列表信息。之后将服务列表保存到本地缓存中,方便后续的访问。在客户端内部有负载均衡算法,筛选出一台服务器,之后进行访问。
- 如果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分析
逢山开路,遇水搭桥
以上是关于Dubbo 微服务的主要内容,如果未能解决你的问题,请参考以下文章