dubbo学习之-经常使用功能

多版本支持json

  • 设置不一样版本的目的,就是要考虑到接口升级之后带来的兼容问题。
  • 在Dubbo中配置不一样版本的接口,会在Zookeeper地址中有多个协议url的体现,具体内容以下
dubbo://192.168.11.1:20880%2Fcom.gupaoedu.dubbo.IGpHello%3Fanyhost%3Dtrue%26application%3Dhello-world-
app%26dubbo%3D2.5.6%26generic%3Dfalse%26interface%3Dcom.gupaoedu.dubbo.IGpHello%26methods%3DsayHello
%26pid%3D60700%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1529498478644%26version%3D1.0.0


dubbo://192.168.11.1%3A20880%2Fcom.gupaoedu.dubbo.IGpHello2%3Fanyhost%3Dtrue%26application%3Dhello-
world-
app%26dubbo%3D2.5.6%26generic%3Dfalse%26interface%3Dcom.gupaoedu.dubbo.IGpHello%26methods%3DsayHello
%26pid%3D60700%26revision%3D1.0.1%26side%3Dprovider%26timestamp%3D1529498488747%26version%3D1.0.1

集群容错安全

  • 什么是容错机制?
    • 容错机制指的是某种系统控制在必定范围内的一种容许或包容犯错状况的发生,
    • 举个简单例子,
      • 咱们在电脑上运行一个程序,有时候会出现无响应的状况,而后系统会弹出一个提示框让咱们选择,
      • 是当即结束仍是继续等待,而后根据咱们的选择执行对应的操做,这就是“容错”。
  • 在分布式架构下,网络、硬件、应用均可能发生故障,
    • 因为各个服务之间可能存在依赖关系,若是一条链路中的其中一个节点出现故障,将会致使雪崩效应。
    • 为了减小某一个节点故障的影响范围,因此咱们才须要去构建容错服务,来优雅的处理这种中断的响应结果

Dubbo提供了6种容错机制,分别以下服务器

  1. failsafe 失败安全,能够认为是把错误吞掉(记录日志)
  2. failover(默认)   重试其余服务器; retries(2)
  3. failfast 快速失败, 失败之后立马报错
  4. failback  失败后自动恢复。
  5. forking  forks. 设置并行数
  6. broadcast  广播,任意一台报错,则执行的方法报错

配置方式以下,经过cluster方式,配置指定的容错方案:网络

服务降级架构

降级的目的是为了保证核心服务可用。app

  • 降级能够有几个层面的分类: 自动降级和人工降级;
  • 按照功能能够分为:读服务降级和写服务降级;
  1. 对一些非核心服务进行人工降级,在大促以前经过降级开关关闭哪些推荐内容、评价等对主流程没有影响的功能
  2. 故障降级,好比调用的远程服务挂了,网络故障、或者RPC服务返回异常。
    • 那么能够直接降级,降级的方案好比设置默认值、采用兜底数据(系统推荐的行为广告挂了,能够提早准备静态页面作返回)等等
  3. 限流降级,在秒杀这种流量比较集中而且流量特别大的状况下,由于突发访问量特别大可能会致使系统支撑不了。
    • 这个时候能够采用限流来限制访问量。当达到阀值时,后续的请求被降级,好比进入排队页面,好比跳转到错误页(活动太火爆,稍后重试等)

dubbo的降级方式: Mock分布式

实现步骤ide

  1. 在client端建立一个TestMock类,实现对应IGpHello的接口(须要对哪一个接口进行mock,就实现哪一个),名称必须以Mock结尾
  2. 在client端的xml配置文件中,添加以下配置,增长一个mock属性指向建立的TestMock模拟错误(设置timeout),
  3. 模拟超时异常,运行测试代码便可访问到TestMock这个类。当服务端故障解除之后,调用过程将恢复正常

配置的优先级别

  • 以timeout为例,显示了配置的查找顺序,其它retries, loadbalance等相似。
  1. 方法级优先,接口级次之,全局配置再次之。
  2. 若是级别同样,则消费方优先,提供方次之。

其中,服务提供方配置,经过URL经由注册中心传递给消费方测试

  • 建议由服务提供方设置超时,由于一个方法须要执行多长时间,服务提供方更清楚,
  • 若是一个消费方同时引用多个服务,就不须要关心每一个服务的超时设置。
相关文章
相关标签/搜索