微服务中任务失败后如何进行重试
摘要
应用所使用的资源是共享的,比如docker、虚拟机、物理机混布等,如果多个虚拟单位(docker镜像、虚拟机、进程等)之间的资源隔离没有做好,就可能产生一个虚拟单位侵占过多资源导致其它共享的虚拟单元出现错误。这些错误可能是短时的,也有可能是长时间的。
现在服务器都是用比较便宜的硬件,互联网公司的通常做法也是通过冗余去保证高可用。贵和便宜的硬件之间有个很重要的指标差异就是故障率,便宜的机器更容易发生硬件故障,虽然故障率很低,但如果把这个故障率乘以互联网公司数以万计、十万计的机器,每天都会有机器故障自然是家常便饭。
除掉本身的问题外,现今的互联网架构所需要的硬件组件也更多了,比如路由和负载均衡等等,更多的组件,意味着通信链路上更多的节点,意味着增加了更多的不可靠。
应用之间的网络通信问题,在架构设计时,对网络的基本假设就是不可靠,我们需要通过额外的机制弥补这种不可靠。
欢迎在评论区写下你对这篇文章的看法。