微服务架构

旧应用程序的问题

许多较旧的云应用程序都使用整体架构。 尽管这些旧版应用可以为多个租户提供服务,但它们是作为一组庞大而繁琐的高度相互依赖的组件构建的。 一个组件的故障可能会对另一个组件造成毁灭性影响,导致许多或所有租户的服务中断。 更新这些系统需要使它们脱机,这会限制用户在升级过程中的访问权限。 在硬件限制进一步限制了软件资源的可用性和可扩展性的专有数据中心部署在硬件 有限的专有数据中心时,整体服务的问题会更加严重。

Genesys Cloud 的微服务解决方案

Genesys Cloud 通过使用微服务解决了整体架构的问题。 借助微服务,我们可以使用简单的无状态对象解决复杂的问题。 我们的微服务架构还在多个地理位置不同的数据中心的数千台服务器上提供了几乎无限的 可扩展性

单声道 vs 微

Genesys Cloud 不使用几个紧密耦合的组件,而是将其功能划分为服务,每种服务都处理给定类型的请求。 每个 Genesys Cloud 服务都使用弹性负载均衡器 (ELB) 来分配工作;每个分组包含多个服务器,这些服务器可根据负载动态扩展。 我们会持续监控服务级别的流量,并根据使用水平和请求类型优化微服务。

下图说明了 Genesys Cloud 的主要服务。

按需扩展 

大多数 Genesys 云服务都使用带有弹性伸缩组 (ASG) 的 ELB。 Genesys Cloud 根据特定于服务的策略(计算密集型服务的 CPU、查询服务的平均响应时间等)来分配负载和监控组。 当我们超过阈值策略时,该组会根据需要自动添加或删除其他资源。 例如,如果一个组织突然需要发送一百万份传真,关联的微服务会自动扩展以满足需求,而不会影响其他功能或其他租户。

故障安全处理

因为它们独立运行,所以一个微服务的问题不会影响另一个微服务,这极大地限制了出现问题的可能性。 例如,三个独立的微服务处理语音邮件检索、出站传真和路由来电客户。 如果语音邮件检索微服务失败,来电的客户呼叫微服务将继续运行而不会中断。

恢复实现可靠性

当单个服务器发生故障时,相应的 ELB/ASG 会检测运行状况检查失败或超时,并将运行状况不佳的组件从负载均衡器中分离出来。 如果此错误不是暂时的,则额外的逻辑会触发自我修复行为,即停止错误节点并创建一个全新的服务器来取代它。 流量持续增长,组中的其他服务器可以无缝地容纳额外的工作。 Genesys Cloud 会在任何用户注意到服务缺口之前恢复。 此恢复过程确实需要大量资源,但我们可以通过 Amazon Web Services (AWS) 获得充足的按需带宽访问权限。

Genesys Cloud 建立在 AWS 之上,AWS 是国际基于云的部署领域无可争议的领导者。 我们与亚马逊密切合作,测试和完善他们的监控和 ELB 系统。

AWS 区域

Genesys Cloud 部署在全球多个独立的 AWS 区域中。 每个区域由多个 Amazon “可用区” 组成,每个 “可用区” 由一个或多个物理数据中心组成。 即使在这个级别,系统的结构也内置了冗余,每个可用区都有单独的电源、骨干网络连接、复制的数据存储器以及(在某些情况下)跨越构造断层板的物理隔离。 客户数据跨区域和区域内的数据中心进行复制。 丢失整个数据中心只会暂时降低容量;这种情况将自动恢复,而且不会丢失任何数据。 除了确保数据的持久性之外,数据主权也是云部署的重要方面。 Genesys Cloud 架构使组织能够定义其 “记录区域”,以确保数据不会跨越我们基础架构中的区域边界。

Genesys Cloud 的 AWS 区域

适用于 Genesys 云语音部署的 AWS 区域

浏览器和移动客户端

在许多方面,Genesys Cloud 客户端都反映了微服务使用的无状态方法。 当浏览器渲染 Genesys Cloud 时,浏览器内存中内置了一组对象,包括用于数据更新的事件通知。 当浏览器收到新信息时,它会更新内存中的对象,然后为用户更新视图。

每当用户更改视图或启动新任务时,在发出检查更新请求时,会立即显示现有的本地数据。 这些数据请求经过调整以匹配可用的服务,并经过优化以减少数据带宽并提高客户端视图的速度。

持续更新

我们不断将新代码推送到我们的生产 Genesys Cloud 系统中。 如果检测到小缺陷,我们只需立即修复它,然后推出受影响服务的新版本。

我们的分布式架构使我们能够发布滚动更新,而无需停机整个系统进行维护。 我们使用负载平衡和诸如 “红黑部署” 之类的技术来确保客户不会受到我们的更新过程的不利影响。 当微服务的新版本(包含新功能或修复程序)可用时,我们会为该服务创建一个全新的服务器映像。 此映像用于创建全新的服务器,而不是在适当的位置修补系统。 随着这些新服务器上线并确定运行状况良好,它们随后会连接到负载均衡器,一小部分流量现在开始由它们处理。 假设新服务器按预期运行,则会增加更多容量,旧服务器(使用先前版本的服务)将从负载均衡器中移除,并耗尽未完成的请求。 在几分钟之内,可以更换提供给定微服务功能的整个服务器队列。 除了使服务的持续交付无缝之外,这还提供了无与伦比的可靠性。 避免就地升级可确保我们在预生产环境中测试的系统在功能上与生产环境中部署的系统完全相同,从而减少脆弱性。 此外,它允许在新版本无法正常运行的情况下快速回滚到微服务的已知良好变体。

微服务的独立性以及我们广泛的自动化测试和构建推广流程使 Genesys 能够推出错误修复,而不必担心会无意中破坏其他内容。 此外,Genesys 可以在不影响现有服务的情况下为新功能创建微服务。 在数百万客户积极使用 Genesys Cloud 的同时进行更新。