SOA:面向服务架构,将应用程序不同功能单元进行拆分,通过良好的接口和契约联系起来
ESB:企业服务总线,提供服务与服务之间的交互,包括负载均衡,流量控制,加密处理,服务监控,异常处理,监控告急
微服务时SOA的升华,服务实现组件化,服务间交互使用TEST API,每个微服务都有自己的数据库持久化业务数据,自动化部署
dubbo是一个高性能,轻量级的Java RPC框架,提供高性能透明化的RPC远程服务调用方案以及SOA服务治理方案
Provider: 服务提供方
Container: 服务运行容器
Consumer: 服务消费方
Registry: 服务注册与发现的注册中心
Monitor:统计服务的调用次数和调用时间的监控中心
dubbo-admin 图形化管理平台
注册中心挂了,服务可以正常访问,在第一调用服务的时候会将地址缓存到本地,当服务提供者地址发生变化,注册中心会通知消费者
超时重试:@Service(timeout = 3000,retries=0)
负载均衡
- Random:按权重随机
- RoundRobin:按权重轮询
- LeastActive:最少活跃调用数
- ConsistentHash:一致性Hash,相同参数请求给同意提供者
集群容错
- Failover Cluster:失败重试。默认重试2次,使用retries配置。一般用于读操作
- Failfast Cluster:快速失败,失败立即报错。通常用于写操作。
- Failsafe Cluster:失败安全,出现异常时,直接忽略。返回一个空结果。
- Failback Cluster:失败自动恢复,后台记录失败请求,定时重发。
- Forking Cluster:并行调用多个服务器,只要一个成功即返回。
- Broadcast Cluster:广播调用所有提供者,逐个调用,任意一台报错则报错。
服务降级:当服务器压力剧增时,根据流量对一些服务采用不同的策略处理
mock= force:return null:消费方对该服务的方法调用直接返回null值,不发起远程调用。屏蔽不重要服务不可用时对调用方的影响。
mock=fail:return null:消费方对该服务的方法调用在失败后,再返回null值,不抛异常。容忍不重要服务不稳定时对调用方的影响。