Dubbo实践(十六)集群容错】的更多相关文章

1.简介 LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载"均摊"到不同的机器上.避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况.通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载.在为高负载的服务器分流的同时,还可以避免资源浪费,一举两得.负载均衡可分为软件负载均衡和硬件负载均衡.在我们日常开发中,一般很难接触到硬件负载均衡.但软件负载均衡还是能够接触到一些的,比如 Nginx.在 Dubbo 中,也有负载均衡的概念和相应的实现…
1. 简介 上一篇文章分析了集群容错的第一部分 -- 服务目录 Directory.服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由.上一篇文章关于服务路由相关逻辑没有细致分析,一笔带过了,本篇文章将对此进行详细的分析.首先,先来介绍一下服务路由是什么.服务路由包含一条路由规则,路由规则决定了服务消费者的调用目标,即规定了服务消费者可调用哪些服务提供者.Dubbo 目前提供了三种服务路由实现,分别为条件路由 ConditionRouter.脚本路由 ScriptR…
1.简介 为了避免单点故障,现在的应用至少会部署在两台服务器上.对于一些负载比较高的服务,会部署更多台服务器.这样,同一环境下的服务提供者数量会大于1.对于服务消费者来说,同一环境下出现了多个服务提供者.这时会出现一个问题,服务消费者需要决定选择哪个服务提供者进行调用.另外服务调用失败时的处理措施也是需要考虑的,是重试呢,还是抛出异常,亦或是只打印异常等.为了处理这些问题,Dubbo 定义了集群接口 Cluster 以及及 Cluster Invoker.集群 Cluster 用途是将多个服务提…
服务引用无非就是做了两件事 将spring的schemas标签信息转换bean,然后通过这个bean的信息,连接.订阅zookeeper节点信息创建一个invoker 将invoker的信息创建一个动态代理对象 时序图: 最终返回一个被调用接口的动态代理对象. 在调用代理对象的方法时,会进入InvokerInvocationHandle类的逻辑. 跟踪源码的时候,发现消费端调用invoke的时候要调用一连串的Invoker实现类,一直纠结这些Invoker是用来做什么的? Invoker的创建应…
Remoting:网络通信框架,实现了sync-over-async和request-response消息机制. RPC:一个远程过程调用的抽象,支持负载均衡.容灾和集群功能. Registry:服务目录框架用于服务的注册和服务事件发布和订阅.(类似第一篇文章中的点菜宝) dubbo架构 Provider: 暴露服务的提供方. Consumer:调用远程服务的服务消费方. Registry: 服务注册中心和发现中心. Monitor: 统计服务和调用次数,调用时间监控中心.(dubbo的控制台页…
1. 简介 前面文章分析了服务的导出与引用过程,从本篇文章开始,我将开始分析 Dubbo 集群容错方面的源码.这部分源码包含四个部分,分别是服务目录 Directory.服务路由 Router.集群 Cluster 和负载均衡 LoadBalance.这几个部分的源码逻辑比较独立,我会分四篇文章进行分析.本篇文章作为集群容错的开篇文章,将和大家一起分析服务目录相关的源码.在进行深入分析之前,我们先来了解一下服务目录是什么.服务目录中存储了一些和服务提供者有关的信息,通过服务目录,服务消费者可获取…
1  Dubbo简介 Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. 作为一个轻量级RPC框架,Dubbo的设计架构简洁清晰,主要组件包括Provider(服务提供者),Consumer(服务消费者),Registry(注册中心)三部分组成.此外还有用于服务监控的Monitor,它们之间的关系如下所示: 在一个分布式系统中,为了做到系统的高可用,即服务宕机时不影响对外正常提供服务,需要组建负载集…
1.集群容错的配置项 failover - 失败自动切换,当出现失败,重试其他服务器(缺省),通常用于读操作,但重试会带来更长的延时. failfast - 快速失效,只发起一次调用,失败立即报错.通常用于非幂等性写操作,比如说新增记录 failsafe - 失败安全,出现异常时,直接忽略,通常用于写入审计日志等操作 failback - 失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作 forking - 并行调用多个服务器,只要一个成功即返回.通常用于实时性要求较高的读操作,但…
学习Dubbo源码的过程中,首先看到的是dubbo的集群容错模式,以下简单介绍10种集群容错模式 1.AvailableCluster 顾名思义,就是可用性优先,遍历所有的invokers,选择可用的 2.MergeableCluster:当接口需要多个服务组合返回值时,使用该接口 3.ForkingCluster:并行执行,当有一个返回值时,取该值,该方法中使用了线程池和LinkedBlockingQuene来并发所有的子任务,并阻塞父线程,实现很优雅.可用于查询等要求性能高的,不适用于非幂等…
方案:安装ipvsadm软件包,关于ipvsadm的用法可以参考man ipvsadm资料. 常用ipvsadm命令语法格式如表-1及表-2所示. 1.ipvsadm命令用法(proxy) 1.1 创建LVS虚拟集群服务器(算法为加权轮询:wrr) ]# yum -y install ipvsadm ]# ipvsadm -A -t 192.168.4.5:80 -s wrr ]# ipvsadm -Ln(n以数字显示端口号)查兰LVS规则表 1.2 为集群添加若干real server ]#…