2022-09-22
集成平台日常运行时出现卡顿,其中的原因之一可能就是对于系统资源的占用过高。那该如何理解系统资源,不同的集成平台架构又是如何解决资源占用的问题?这篇小短文希望能通过一种更轻松的方式,闲谈一下资源占用过多时,不同架构集成平台的解决方案,让人直观地了解不同架构的区别和特点。
以下类比中小孩子可理解为各类任务,而饺子则可以理解为系统资源,括号中的文字可理解为类比的场景
问题描述:偶发现象使单个任务占用的资源过多导致系统异常
学校中,午餐时会有一盘共100个饺子,正常情况下孩子每人吃10个饺子就能吃饱,教室内井然有序。突然有一天,其中有一个孩子没吃早饭感到很饿,一下抢了60个饺子(任务异常导致系统资源占用过多);而其他孩子只能分剩下的40个饺子,由于吃不饱纷纷开始哭闹,因此教室秩序一片混乱(由于资源不够导致系统异常)。
图1 单个任务占用的资源过多导致系统异常
设置阈值+熔断机制:单机架构集成平台的解决方式(之一):
单机架构下,同样是一盘共100个饺子,为了避免上述情况发生,老师规定每人最多只能拿10个饺子(设置阈值),这样每个孩子能吃饱。如果有的孩子拿了10个饺子后不听劝阻执意要继续拿饺子,老师就会让那个孩子罚站(熔断机制),以此保证其余孩子能正常吃饱,这样仍然能保证正常的教室秩序(即系统的正常运行)。
图2 设置阈值+熔断机制保证平稳顺畅运行
虽然通过设置阈值和熔断提升了系统整体的可用性,但设置阈值+熔断机制的本质还是牺牲了某个任务以保证其它任务不受影响,仍不能掩盖资源总量不足的问题,因此需要考虑新的解决方法。
纵向扩展资源:单机架构集成平台的解决方式(之二):
除了限制孩子们吃饺子的个数(设置阈值),还有一个方法就是增加饺子的数量(资源扩展)。于是学校更换了装饺子的器皿,用了一个更大的盘子装饺子(纵向扩展资源),一盘能装200个饺子了,这样孩子们能吃到的饺子更多,即使有孩子某天特别饿,吃了60个饺子,其余孩子也有足够的饺子能吃到饱,教室里井然有序。
图3 增加CPU核心数量纵向扩展资源
看上去一切都解决了,但纵向扩展还是存在两个问题:
1. 纵向扩展资源会受到硬件条件限制,扩展的范围有限。
2. 纵向资源扩展仅仅是为了保证某些特殊情况下任务对于大量资源占用的需求,但通常情况下任务不会用到那么多的资源,导致资源利用率较低。
横向扩展资源:集群架构集成平台是较为合适的解决方式
除了增加器皿大小(纵向扩展),增加饺子数量还有一种更通用的办法,就是根据孩子们需要吃的饺子数量端出多盘饺子(横向扩展)。尽管每一盘还是只有100个饺子,但出现如果有孩子饿了吃了90个饺子导致其余孩子不够吃,就会出现第二盘饺子,再出现新的小孩子,也会出现第三盘、第四盘饺子直到饺子数量满足孩子们的需求。这样不论有多少孩子,每个孩子食量如何,始终有充足的饺子可供食用。孩子们饿不着了,教室自然能保持秩序。
图4 集群架构横向扩展按需增加资源
由于一般情况下通过双活/多活实现的资源横向扩展仍然存在着管理监控不统一以及数据同步性等问题,相较之下集群架构是更为合适有效的横向扩展资源的解决方式。
通过集群架构集成平台中的资源调度管理,多个服务器配置同步,负载均衡等能力实现对资源的合理分配,并按需增加资源,能兼顾足量资源供给、统一配置管理、平台稳定运行、提升资源利用率等多方面的需求。
随着医疗机构业务量日渐增加,三级医院和医院集团对于集成平台的资源需求和高可用性都越来越高,具备上述功能的集群架构集成平台是目前面向三级医院和医院集团最合适的解决方案。医院可以通过该方案保证集成平台的性能及日常运行的稳定,为医疗机构信息化的长期发展打好“地基”。
注:上述内容旨在闲谈集成平台架构和系统资源,让人有更直观的了解。由于是以“吃饺子”做类比,在部分细节概念方面仍会有所出入,请各位理性看待。
百度浏览 来源 : Odin Health
版权声明:本网站所有注明来源“医微客”的文字、图片和音视频资料,版权均属于医微客所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明来源:”医微客”。本网所有转载文章系出于传递更多信息之目的,且明确注明来源和作者,转载仅作观点分享,版权归原作者所有。不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。 本站拥有对此声明的最终解释权。
发表评论
注册或登后即可发表评论
登录注册
全部评论(0)