Dubbo
集群
- 一个软件,部署在多台服务器上
分布式
- 一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上
RPC
- 全称为remote procedure call,即远程过程调用
SOA: (Service- Oriented Architecture,面向服务的架构)
- 是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来
ESB: (Enterparise Servce Bus)
- 企业服务总线,主要是提供了一个服务于服务之间的交互。ESB包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等
微服务架构
- 是在SOA上做的升华,微服务架构强调的一个重点是业务需要彻底的组件化和服务化,原有的单个
业务系统会拆分为多个可以独立开发、设计、运行的小应用,这些小应用之间通过服务完成交互和集成
架构演进
Dubbo架构图
注意
- Dubbo不能单独使用,需要配套的服务注册与发现的注册中心,常用的注册中心是Zookeeper,Nacos
序列化
地址缓存
- 注册中心挂了,服务是否可以正常访问???
超时
- 注意:超时时间建议配置在服务提供方
@Service(timeout = 3000, retries = 0) // 当前服务3秒超时
重试
// timeout 超时时间 单位毫秒 retries 重试次数
@Service(timeout = 3000, retries=3)
灰度发布
当出现新功能时,会让一部分用户先使用新功能,用户反馈没问题时,再将所有用户迁移到新功能
dubbo中使用version属性来设置和调用同一个接口的不同版本
负载均衡(Dubbo提供4种策略)
Random:按权重随机,默认值。按权重设置随机概率
RoundRobin: 按权重轮询
LeastActive:最少活跃调用数,相同活跃数的随机
ConsistentHash:一 致性Hash,相同参数的请求总是发到同一提供者
集群容错(6种模式)
Failover Cluster: 失败重试,默认容错模式。当出现失败时,重试其它服务器,默认重试2次,使用retries配置
Failfast Cluster :快速失败,发起一次调用,失败立即报错。通常用于写操作
Failsafe Cluster:失败安全,出现异常时,直接忽略。返回一个空结果
Failback Cluster:失败自动恢复,后台记录失败请求,定时重发
Forking Cluster :并行调用多个服务器,只要一个成功即返回
Broadcast Cluster: 广播调用所有提供者,逐个调用,任意一台报错则报错
服务降级
当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作
mock= force:return null:表示消费方对该服务的方法调用都直接返回null值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响
mock=fail:return null:表示消费方对该服务的方法调用在失败后,再返回null值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响