一。在分布式架构中,各个模块之间相互依赖调用,为了降低由于网络波动带来的不确定性因素并提升系统安全性,生产环境中所有模板一般都运行在内网环境中,并单独提供一个工程作为网关服务,开放固定的端口代理所有模块提供的服务,并通过拦截器验证所有外部请求以达到权限管理的目的。外部引用有可能是App,网站或者其他的桌面客户端,为了达到通用性,网关服务一般为web服务,通过HTTP协议提供RESTFUL风格的API接口。
二。为了提供系统可用性,将服务提供方部署成多个组成服务集群,在消费方调用服务失败或超时,Dubbo可以配置多种策略重新调用集群中的其他服务提供方。
在提供方的@Service和消费方的@Reference注解中配置cluster参数,或者用application.properties中的spring.dubbo.service.cluster参数来指定容错策略.
Failover Cluster
失败自动切换,当出现失败时,重试其他服务器。(默认)
通常用于读操作,但重试会带来更长的延迟.
可以通过在服务提供方的@service或消费方@Reference注解中设置retries参数来指定重试次数(不含第一次)
Failfast Cluster
快速失败,只发起一次调用,失败立即报错
通常用于非幂等性的写操作,不如新增记录.
Failsafe Cluster
失败安全,出现异常时,直接忽略。
通常用于写入审计日志等操作
Failback Cluster
失败自动恢复,后台记录失败请求,定时重发
通常用于消息通知操作
Forking Cluster
并行调用多个服务器,只要一个成功即立即返回
通常用于实时性要求比较高的读操作,但需要浪费更多的服务资源。
Broadcast Cluster
广播调用所有提供者,逐个调用,任意一台报错则报错
通常用于通知所有提供者更新缓存或日志等本地资源信息.