Dubbo初体验

标签说明

  • <dubbo:application name=“practice-server” /> 配置服务名称
  • <dubbo:registry address=“N/A” /> 服务中心注册
  • <dubbo:protocol name=“dubbo” port=“20880” /> 暴露服务协议以及端口
  • <dubbo:service interface=“xxx” ref=“loginService” /> 暴露接口
  • <dubbo:reference id="loginService"interface="xxx"url=“dubbo://192.168.13.1: 2 0 com.gupaoedu.practice.LoginService”/> 消费端(客户端)引用提供者的接口
  • <dubbo:registry address=“zookeeper://192.168.13.102:2181” /> zk做服务中心的注册

dubbo 服务的多注册中心注册

<dubbo:registry address="zookeeper://192.168.13.102:2181" 
id="registryCenter1"/>
<dubbo:service interface="xxx" ref="loginService" registry = "registryCenter1"/>
<dubbo:registry address="zookeeper://192.168.13.102:2181" 
id="registryCenter2"/>

dubbo 特性

  • 支持多注册中心:redis nacos
  • 支持多种协议:dubbo webservice rest

客户端 reference

服务端 service

  • 服务暴露时,可以指定注册中心(registry),可以指定连接协议(protocol)
  • 服务暴露时,针对某一单一接口,可以使用多种协议暴露服务 protocol = dubbo ,webservice

注解方式的使用

  • dubbo.protocal.name
  • dubbo.protocal.port
  • dubbo.registry.address
  • dubbo.application.name
  • dubbo.scan.base-packages
  • @DubboService 暴露服务
  • @DubboReference

负载均衡

@Reference(loadbalance = “random”)

  • RandomLoadBalance 权重随机算法,根据权重值进行随机负载
  • LeastActiveLoadBalance 最少活跃调用数算法
  • ConsistentHashLoadBalance hash 一致性算法
  • RoundRobinLoadBalance 加权轮询算法

集群容错

cluster = “failsafe”

  • Failover(缺省)
失败自动切换,当出现失败,重试其它服务器。(缺省)
通常用于读操作,但重试会带来更长延迟。
可通过 retries="2" 来设置重试次数(不含第一次)
  • Failfast
快速失败,只发起一次调用,失败立即报错。
通常用于非幂等性的写操作,比如新增记录。
  • Failsafe
失败安全,出现异常时,直接忽略。
通常用于写入审计日志等操作。
  • Failback
失败自动恢复,后台记录失败请求,定时重发。
通常用于消息通知操作。
  • Forking
并行调用多个服务器,只要一个成功即返回。
通常用于实时性要求较高的读操作,但需要浪费更多服务资源。
可通过 forks="2" 来设置最大并行数。
  • Broadcast Cluster
广播调用所有提供者,逐个调用,任意一台报错则报错。

remark:在实际应用中 查询语句容错策略建议使用默认 Failover Cluster ,而增删改 建议使用
Failfast Cluster 或者 使用 Failover Cluster(retries=”0”) 策略 防止出现数据 重复
添加等等其它问题!建议在设计接口时候把查询接口方法单独做一个接口提供查询。

服务降级

实现:定义一个降级类处理降级相应操作
代码实现:客户端接口实现配置

mock = 降级处理类

timeout = 防止超时

cluster = 快速失败,只发起一次调用,失败立即报错

@Reference(
loadbalance = "random",
mock = 
"com.springboot.practice.springbootdubboclient.MockSayHelloService",
timeout =1000,
cluster = "failfast")

启动时检查

Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 
初始化完成,以便上线时,能及早发现问题,默认 check="true"。
可以通过 check="false" 关闭检查,比如,测试时,有些服务不关心,或者出现了循环
依赖,必须有一方先启动。

Dubbo 架构设计及分层

角色

  • 注册中心registry:服务的注册与发现
  • 服务提供者provider:暴露服务
  • 服务消费者consume:调用远程服务
  • 监控中心:服务之间的调用次数,调用时间
  • 容器container:服务容器

调用流程

  • container容器负责启动,加载,运行provider
  • provider向注册中心注册自己的服务
  • consume向注册中心订阅自己的服务
  • registry向consume提供服务提供者列表,如果provider有变更,则registry通过长连接将变更数据推送到consume
  • consume调用provider,基于负载均衡进行调用
  • consume调用provider的统计,基于短链接规定每分钟统计一次到monitor

分层

  • 接口服务层(service):面向开发者,接口,实现等
  • 配置层(config):对外配置接口,以serviceConfig和ReferenceConfig为中心
  • 服务代理层(proxy):对于生产者和消费者,Dubbo会产生一个代理类封装调用细节
  • 服务注册层(registry):封装服务地址的注册与发现,以服务URL为中心
  • 路由层(cluster):封装多个提供者的路由和负载均衡
  • 监控层(Monitor)
  • 远程调用层(Protocal)
  • 信息交换层(Exchange)
  • 网络传输层(Transport)
  • 数据序列化层
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值