00:00
大家好,我是night killer,今天是大年初四,我昨天去了广东汕尾的陆丰市,非常愉快的度过了一天。住在深圳周边的小伙伴可以去那里玩一玩,那里的海滩尚未开发,可以拾到各种各样的贝壳啊。我昨天捡了半桶还有一些海带苗回来做了一个海鲜汤。大家是怎么过春节的呢?可以在评论区跟大家分享。在前面的视频中分享了多维度架构之网络延迟,今天分享的是多维度架构之超时时间。超时时间俗称太out,是系统响应请求的等待时间,它是引起应用程序无法响应或网络服务雪崩灾难的罪魁祸首。超市时间的设置非常讲究,太长也不行,太短也不行。什么是福气雪崩效应?福气雪崩效应类似于高速公路塞车,例如有一条单向八车道的高速公路,单向八车道就好比八个独立的县城,此时高速公路畅通无阻,这时突然有一辆车爆胎,这时能正常通行的车道只剩下七条,修好这辆汽车需要30分钟的时间,也就是说,30分钟之后,此车道才能恢复通行。该车道上的汽车此时有两个选择,一是继续等待,30分钟后恢复通行。
01:40
另一个选择是选择其他车道,此时只剩下七条车道,交通开始有压力,如果再有七车爆胎或者其他交通事故,最终八车道将全部堵死,这种连锁反应就叫服务器雪崩效应。修车时间就等于超时时间,修车时间越短,交通恢复的越快,超时时间越短,服务器故障恢复的就越快。有了超时时间就相当于把损坏的汽车移到了应急车道,此时主车道就不影响通行了。超时分为请求超时和响应超时。请求超时通常是指的网络超时,响应超时通常是指的运行时间超时。它们的作用都是设置一个阀值,当超过这个阀值将终止请求。
02:38
或者是终止程序运行。可以不设置超时时间吗?答案是当然可以。超时时间是对网络服务的一种保护,使其避免雪崩效应。而对于单机程序,我们要保证它顺利完成运行,所以通常我们不设置超时时间。给单机程序增加超时时间设置可以提高程序的健壮性,例如内存方面的超时时间,磁盘IO等待的超时时间,CPU的超时时间等等。
03:13
超时时间的设置原则是前大后小。例如应用服务器的超时时间设置为60秒,那么数据库的超时时间应当设置为小于等于60秒,这样应用服务器会等待数据库将数据完全写入。否则应用服务器就会提前断开数据库连接,导致产生脏数据或事物回滚。设置超时时间有哪些注意事项?一旦达到超时时间阀值,系统就会阻断、中断用户的请求和响应,会出现以下几种情况,数据加载一半,例如页面只显示一半,图片只显示一半,用户上传的数据没有及时写入到磁盘或者数据库,导致数据丢失,最后就是数据库的脏数据和事物回滚。超时时间是通过全面的测试后计算出来的,而不是拍脑袋决定的。最近几年非常流行微服务技术,为了防止微服务雪崩,微服务提出了熔断器的概念,我常常开玩笑说,微服务中的这种熔断技术就相当于被蛇咬了。
04:32
不管蛇有没有毒,先断臂自救。无论是微服务还是容器技术,他们都大量的使用网关以及代理技术,这种技术让微服务跟容器便于管理,但也增加了超时时间的设置难度。最后我们做个总结,多维度架构就是具备高视点、宽视野、深动差,能够跨越时间和空间去看需求,同时不受思维定式的限制。这一节就先讲到这里,有什么问题可以在评论区留言,喜欢我的视频请关注点赞转发,谢谢观看。
我来说两句