��ǰλ�ã�首页 > 集团企业

集团企业

绝对不要信任单点故障

����:ʱ��:2019-04-13
永远不要实施,必须减少单点障碍。我在架构图上有一个单点实例。尝试使用主动/主动配置。通过多个真实场景提高可用性。尝试使用主动/主动配置而不是主动和被动解决方案。使用均衡器来平衡跨服务实例的流量。对于单例模式,使用具有主动/被动配置的控制。 TR TR 在数学中,单元素集只是一个元素的集合,例如{A}。在编程中,单例模式指的是模仿数学概念并限制类实例化对象的能力的设计模式。这种设计模式对于协调资源非常有用,但程序员经常过度使用它以节省麻烦。稍后将讨论该主题。在系统架构中,单例模式或更合适的单例反模式称为单点故障(SPOF)。也就是说,当系统中只有一个组件实例时,一旦实例失败。 ,它将产生全系统的影响。 TR TR TR SPOF在系统中无处不在,从单个Web服务器到单个网络设备,但系统中最常见的SPOF是数据库。原因是数据库最难扩展到多个节点,因此它只有一个实例。在图9Q1中,即使登录,搜索和检出服务器是冗余的,数据库仍然是SPOF。更精确的是,所有服务池都依赖于这一个数据库。虽然任何SPOF都不好,但数据库SPOF的问题更大。如果数据库速度下降或读取,则对此数据库进行同步调用的所有服务池都将受此事件的影响。 TR TR 我们经常说客户的口头禅是“一切都会失败”。此句子适用于服务器,存储系统,网络设备和数据中心。只要你知道,它就会失败。 TR   尽管许多人认为数据中心不会失败,但多年来我们经历了十几次数据中心中断。高可用存储区域网络也是如此,尽管它们比旧的SCSI磁盘阵列更可靠,但它们仍然失败。 TRTR 解决SPOF的大多数方法是申请另一个硬件,例如XQAxis扩展中显示的克隆服务,以便每个服务都有两个或更多实例在运行。不幸的是,事实并非总是那么简单。让我们回过头来看看编写单例模式的步骤。虽然并非所有单例类都不允许在多个服务器上运行服务,但某些实现肯定会使您免于可怕的后果。在最简单的情况下,如果代码中有一个用于从用户帐户中减去资金的类,则以单例模式实现它将使用户的余额免于意外,例如变为负面。如果将此代码放在两个单独的服务器上,则没有其他控制或联系信号,可能会同时在用户帐户中记录两个事务,从而导致错误或不需要的条件。在这种情况下,我们需要修复代码或依靠外部控件来防止它。但最令人满意的解决方案是修复代码并在多个主机上实现服务,通常我们需要快速修复SPOF。作为这一原则的最后一点,我们接下来将讨论几个快速解决方案。 TR TR 第一种方法最简单的方法是使用主动/被动配置。一个服务在一个服务器上主动运行,在另一个服务器上被动运行(不接收流量)。此热/冷配置通常用作删除数据库SPOF的第一步。下一种方法是使用系统中的另一个组件控制数据访问。如果SPOF是服务,则可以使用数据库锁来控制对数据的访问。如果SPOF是数据库,则可以设置主从配置,应用程序控制数据访问,主数据库完成写更新操作,并且从数据库执行读选择操作。用于修复SPOF的最后一个配置是负载均衡器。如果Web服务器或应用程序服务器的服务是SPOF且无法在代码中消除,则可以使用负载平衡器将用户的请求仅发送到池中的一个服务器。这是通过会话  cookie完成的,该cookie设置用户的浏览器并允许负载均衡器每次将用户的请求重定向到同一个Web或应用程序服务器,从而产生一致的状态。 TRTR 我们介绍了几种消除SPOF的方法,可以在不修改代码的情况下轻松实现它们。但最终的方法是最好的,修复代码,允许网站设计服务的多个实例在不同的物理服务器上运行,以尽可能地消除SPOF。请记住,“一切都会出错”,所以当SPOF失败时不要感到惊讶。 TR TR
���ű�ǩ:

��һƪ: 结构化设计的原理

��һƪ: 缓存Ajax调用