Design patterns 什么是计算机科学?

Design patterns 什么是计算机科学?,design-patterns,akka,computer-science,dispatcher,Design Patterns,Akka,Computer Science,Dispatcher,我正在读阿卡的书,我了解到它是用于散货运输的。什么是计算机科学 解决方案:用于阻塞操作的专用调度器 隔离阻塞行为以使其不影响系统其余部分的最有效方法之一是为所有这些阻塞操作准备并使用专用调度器。这种技术通常被称为“批量标题”或简单的“隔离块” 引用Jonas Bonér在2016年4月发表的一篇文章: 故障隔离—能够在不级联的情况下控制和管理故障—是一种模式,有时被称为Bulkheading 几个世纪以来,船舶建造行业一直采用舱壁舱壁作为一种将船舶划分为独立水密舱室的方法,这样,如果少数舱室充

我正在读阿卡的书,我了解到它是用于散货运输的。什么是计算机科学

解决方案:用于阻塞操作的专用调度器 隔离阻塞行为以使其不影响系统其余部分的最有效方法之一是为所有这些阻塞操作准备并使用专用调度器。这种技术通常被称为“批量标题”或简单的“隔离块”


引用Jonas Bonér在2016年4月发表的一篇文章:

故障隔离—能够在不级联的情况下控制和管理故障—是一种模式,有时被称为Bulkheading

几个世纪以来,船舶建造行业一直采用舱壁舱壁作为一种将船舶划分为独立水密舱室的方法,这样,如果少数舱室充满水,泄漏不会扩散,船舶可以继续运行并到达目的地

恢复力——从故障中恢复的能力取决于故障的隔离和遏制,只有打破同步通信的强耦合才能实现


在Akka系统中,通常通过调度程序调优实现散装,正如Jamie Allen在a中所描述的,以下是其中的摘录:

我在Akka用户中遇到的最大问题之一是如何使用dispatchers创建故障区域并防止应用程序某个部分的故障影响另一个部分。这有时被称为舱壁模式

将参与者划分为故障区的关键是确定其风险状况。任务是否特别危险,例如网络IO?这是一项需要阻塞的任务,例如数据库访问吗?在这些情况下,您希望将这些参与者及其线程与那些从事危险性较小的工作的人隔离开来。如果某个线程发生了某些事情,导致它完全死亡并且无法从池中使用,那么隔离是您唯一的保护,这样不相关的参与者就不会受到资源减少的影响

您还可能希望通过分析来确定计算量大的领域,并使用诸如路由器(没有共享邮箱,因此没有工作窃取)和BalancingDispatcher(一个邮箱用于所有“路由对象”,因此本质上是工作窃取)等工具来分解这些任务。对于您分配给路由器的那些任务,您可能还希望它们在自己的调度程序上运行,以便密集的计算任务不会使其他参与者在等待线程执行其工作时感到饥饿

Akka文档还描述了


除了调整调度器外,在Akka还可以使用它来实现散货航向。断路器是防止级联故障的可配置机制。本文档给出了以下示例:

例如,我们有一个与远程第三方web服务交互的web应用程序。 假设第三方的容量超卖,数据库在负载下崩溃。 假设数据库出现故障,需要很长时间才能将错误返回给第三方web服务。这反过来又会使调用在长时间后失败。回到我们的web应用程序,用户已经注意到他们的表单提交似乎需要更长的时间才能挂起。用户会做他们知道要做的事情,就是使用刷新按钮,在已经运行的请求中添加更多的请求。由于资源耗尽,这最终会导致web应用程序失败。这将影响所有用户,甚至那些不使用依赖于此第三方web服务的功能的用户

在web服务调用中引入断路器会导致请求快速失败,让用户知道出现了问题,他们不需要刷新请求。这还将故障行为限制为仅使用依赖于第三方的功能的用户,其他用户不再受到影响,因为没有资源耗尽。断路器还允许精明的开发人员标记站点中使用功能不可用的部分,或者在断路器打开时适当显示一些缓存内容


不管是谁否决了这个有用的问题,请回到你的工作中去,不要反应过度。我不知道Hystrix是什么(老实说,我来这里是因为Akka,这个问题正是我想要的。