我有一些微服务(带有休息模板的spring mvc),通过REST(主要是异步)相互通信。
问题是,我想为系统增加一些容错能力;例如如果其中一个微服务在另一个系统发出请求时关闭,则该请求应该在以后自动重试。
所以,基本上我正在寻找某种REST代理,其中:
是否有任何项目/图书馆?
谢谢, krisy
答案 0 :(得分:1)
你可以看看Spring准备使用的解决方案:Spring Cloud + Eureka + Hystrix + Zuul + Ribbon 您还可以使用@Retryable @Recover annotations进行弹簧重试。
答案 1 :(得分:0)
如果您使用docker并在多个主机上拥有某种形式的容器编排(如docker swarm,kubernetes ......),那么您可以拥有每个微服务运行的多个副本,失败后自动恢复,副本之间的负载平衡和无缝的网络(不需要服务器IP只是微服务名称)。
然而,这也增加了在运行相同应用程序的情况下拥有多个副本的一些复杂性(数据一致性....)。
但是,您可以使用每个服务的一个副本运行一个群(多个服务器),并在某些外部数据库或文件系统上保留数据。然后,当其中一个服务器死机或其中一个服务遇到问题时,新实例将启动,所有请求将等待此旋转(同样,服务不知道彼此的IP只是他们想要的服务的名称与之交谈,协调者负责连接服务。)
您可以在最简单的设置中拥有一个只有一台服务器的群并在本地数据库或文件系统上存储任何内容。美丽的是你的设置已经建立了一种能够扩展的技术。