《大规模Java平台虚拟化与调优》——2.3 Active-Active架构与现代化数据平台

2.3 Active-Active架构与现代化数据平台

图2-25展现了位于两个数据中心中的4个active-active端。在数据中心-1中,有Active-1A和Active-1B端,在数据中心-2中,有Active-2A和Active-2B端。Active-1A、1B、2A和2B端都包含了典型企业级应用的所有分层。在本例中,我们使用SpringTrader作为参考应用。对于数据中心-1来说,企业级应用实例可能同时分布于Active-1A和1B中,对于数据中心-2来说,情况类似。如果Active-1A出现了故障,Active-1B中的应用实例将会继续为访问流量提供服务,而不管Active-1A何时恢复在线状态。这表明Active-1B必须要准备承担Active-1A

完整的峰值负荷。当然,有时候这不一定是可行的,因此部分额外的流量会转向数据中心-2,尤其是数据中心-2的地理位置在60英里的距离之内时。SLA需求会决定采用什么样的方式,如何平衡硬件成本和位置对SLA和响应时间的影响。你还可以使用如上所示的一种变体,也就是数据中心-1和2在60英里以内,而数据中心-3可以通过WAN连接。
如图2-26所示,联合使用了全局负载平衡器(global load balancer,GLB)和本地负载均衡器(local load balancer,LLB)来实现应用的快速响应,使其不受地理位置的负面影响。GLB会将用户的流量转移到本地地理位置的LLB。(例如,伦敦的流量会被转移到位于伦敦的LLB上,纽约的用户访问会被转移到纽约的LLB上,而东京的流量会转发到东京的LLB上)。GLB会保持与所有LLB的心跳连接并作出最优的路由决策。

地理位置节点的LLB配置池中都具有到每个SpringTrader应用服务的入口。图2-26展现了3个LLB配置。
东京的LLB池配置实际上是在负载均衡器池中所配置的4个SpringTrader应用服务。LLB有4个分发流量的入口。这4个入口在逻辑上分为Active-1A和Active-1B,这表明Active-1A应用服务的VM位于相同的vSphere主机上,而Active-1B SpringTrader应用服务的VM位于另外一个vSphere主机上。这种模式的LLB配置在纽约和伦敦站点上是类似的。要注意的是,对SpringTrader应用服务的流量是通过负载均衡的,但是每个应用服务到SQLFire数据fabric的通信是通过定位器的(locator),在这个调用中并没有涉及负载均衡器架构。在SpringTrader应用服务和SQLFire数据成员之间如果使用负载均衡器拦截调用的话是一种多余的行为,vFabric SQLFire定位器进程能够胜任对数据fabric访问的负载均衡和负载调节功能。
此外,为了更清晰地展现配置的其余部分,此处省略了Web服务器池的细节。如果你要添加对Web服务器池的单独配置,Web服务器会将LLB的流量分发到应用服务的LLB池中,理想情况下,要按照最少连接(least-connection)类型的调度算法。这意味着前端池(在本例中,也就是本地LLB Web服务器池)从GLB接收到访问流量,然后Web服务器池会将流量转发到应用服务的本地LLB中。在流量分发到具体的SpringTrader应用服务时,很重要的一点就是维持会话黏性(session stickiness)。注意,建议避免只有一个LLB Web服务器池(这意味着每个Web服务器池成员只指向一个具体的SpringTrader应用服务),这会提供一种不准确的容错性服务水平。SpringTrader应用服务,本质上也就是一个vFabric tc Server实例,可能会出现故障,但因为服务水平的测试是针对LLB Web服务器成员的,因此可能会产生误报(false positive)。最好是遵循双LLB的方式,在本地LLB所管理的地理节点中,有一个池用于Web服务器,另一个池用于SpringTrader应用服务。从active-active部署架构的视角来看,企业级应用层包含了两个主LLB池。第一个池中是一组vFabric Web服务器实例,它会将请求流量分发到第二个池中。到第二个池的典型分布式算法是最少连接算法。第二个池由vFabric tc Server实例组成,以无状态的方式运行,实际上,Web服务器和tc Server本身都是无状态的。没有必要再配置额外的Web服务器和tc Server集群,LLB会负责分布式流量。从Web服务器池到tc Server池的分发基于最少连接分布式算法,因此SpringTrader的会话一旦被初始化,在整个用户-会话/浏览器生命周期活动中,会话会保持粘性。
图2-27扩展了图2-26中的LLB池配置,在这个图中展现了2个LLB池,一个用于vFabric Web服务器,另一个用于vFabric tc Server实例。

时间: 2024-09-17 03:38:30

《大规模Java平台虚拟化与调优》——2.3 Active-Active架构与现代化数据平台的相关文章

《大规模Java平台虚拟化与调优》—— 导读

前 言 本书是9年来我在VMware vSphere上运行Java应用的经验结晶,这些经验来源于VMware本身以及VMware的众多客户.实际上,很多VMware客户都在VMware vSphere上运行企业级的核心Java应用,并取得了效果更好的总拥有成本(total cost of ownership,TCO)以及服务水平协议(service level agreement,SLA).我的第一本书是<Enterprise Java Applications Architecture on

《大规模Java平台虚拟化与调优》——第1章 大规模Java平台简介1.1 大规模Java平台的分类

第1章 大规模Java平台简介 本章定义了3类大规模的Java平台: 第1类:大量的Java虚拟机(Java Virtual Machine,JVM)(100-1000个JVM). 第2类:JVM的数量较少但是堆很大. 第3类:前两类的组合,其中第1类使用的数据来源于第2类的平台之中. 除此之外,本章还讨论了各种趋势,并且大致描述了一些技术性的考量因素,以帮助你理解设计大规模Java平台时与之相关的技术问题. 1.1 大规模Java平台的分类 基于与客户的交流,大规模的Java平台主要可以分为如

《大规模Java平台虚拟化与调优》——第2章 现代化可扩展的数据平台

第2章 现代化可扩展的数据平台 尽管你可以采用多种方式现代化应用的架构,但是核心的趋势如下:-围绕Spring框架所提供的灵活性现代化应用架构:-现代化数据. 就数据现代化来说,现在有很多不同的方式.本章主要关注的是日渐流行的一种趋势,那就是使用可水平扩展的内存数据库来提升扩展性和响应时间.在这里使用VMware vFabric SQLFire来阐述内存数据管理系统的功能,你可以使用它来构建可水平扩展且支持硬盘持久化的数据fabric.讨论这种工作负载也会帮助Java平台的工程师强化其Java平

《大规模Java平台虚拟化与调优》——1.3 大规模Java平台的技术因素

1.3 大规模Java平台的技术因素 当设计大规模Java平台时,需要考虑很多的技术因素.例如,对于构建良好的大规模Java平台来说,需要很好地理解Java垃圾回收(garbage collection,GC)以及JVM架构.硬件和hypervisor架构.本节中,概要讨论了GC.非一致内存架构(Non-Uniform Memory Architecture,NUMA),以及在理论和实际操作中的内存限制.稍后的章节会给出更为详细的描述,但首先在整体上理解围绕大规模Java平台设计有哪些问题是非常

《大规模Java平台虚拟化与调优》——1.2 大规模Java平台的趋势与需求

1.2 大规模Java平台的趋势与需求 在大规模Java平台的迁移工程中,计算资源合并.JVM实例合并.弹性和灵活性以及性能是主要的发展趋势.以下的各个子章节更为详细地讨论了每种趋势.1.2.1 计算资源合并很多VMware客户发现他们的中间件部署快速地膨胀,并且因为成本的不断增长日益成为管理方面的挑战.因此,客户希望虚拟化的方式能够减少服务器的数量.与此同时,客户也希望借助合并的机会来合理化某个特定负载所使用的中间件组件的数量.中间件组件通常会运行在JVM之中,并且规模是成百上千个的JVM实例

《大规模Java平台虚拟化与调优》——1.4 本章小结

1.4 本章小结 本章介绍了大规模Java平台的概念并描述了它们的3种分类: 第1类:大量的JVM. 第2类:JVM数量更少,不过堆空间的规模较大. 第3类:第1类和第2类的组合. 本章还探讨了JVM中的各种理论和实际限制,并介绍了各种工作负载类型及其常见的JVM规模.本章还讨论了NUMA以及水平扩展.垂直扩展.JVM合并和VM合并的优势和劣势.

《大规模Java平台虚拟化与调优》——2.2 SQLFire特性

2.2 SQLFire特性 本节将会介绍SQLFire的关键特性,这些特性使其成为一个面向内存同时支持磁盘持久化的数据管理系统.SQLFire的特性如下:服务器分组(server group):这能够让你对SQLFire成员(JVM)进行逻辑分组,使其具有更好的可扩展性权重(也就是在SQLFire数据fabric的特定分区上部署更多的计算资源).服务器分组指明了为某个表保存数据的SQLFire成员.你可以使用服务器分组来对SQLFire的数据存储进行逻辑分组,以管理表中的数据.存放数据的任意数量

《大规模Java平台虚拟化与调优》——2.4 本章小结

2.4 本章小结 本章介绍了vFabric SQLFire的特性,你可以使用这些特性来现代化各种类型的企业级数据.当企业级数据的可扩展性和性能出现了问题,并且不能通过简单的硬件调节和已有应用的重新配置来解决时,那就可能需要重新架构数据层了,应该关注内存数据管理系统.

【北京】淘宝、美团、石墨4位核心工程师分享“Node.js 大规模应用设计以及性能调优实践”

2016年线下活动第一弹: Node.js 大规模应用设计以及性能调优实践 北京 2016. 01. 09 京仪大酒店 会议介绍: 从「现象级」的新潮服务端编程语言真正成为「工业级」,Node.js 依然面临无数的淬炼,特别是在「生产环境」中.邀请到了淘宝.美团.石墨等 Node.js 大规模应用设计以及性能调优的4位核心工程师深入分享. 嘉宾介绍: 1. 淘宝竹暄<Node.js 助力淘宝大促活动> 峰值4万QPS的大促会场催生了百亿成交量的全球狂欢节.支撑着这些玲琅满目的会场和频道页面的,