购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 对高可靠性平台和基础设施的需求

前文讨论了云支持和云原生应用程序以及它们如何托管在底层云基础架构上以完成服务交付。应用程序的功能非常强大。但是,非功能性要求,例如应用程序的可伸缩性、可用性、安全性、可靠性、性能/吞吐量、可修改性等,正在被广泛使用。也就是说,开发高质量的应用程序对IT专业人员来说是一个真正的挑战。要将各种NFR纳入到云应用程序中,可使用多种设计、开发、测试、部署技术、技巧和模式。有一些最佳做法和关键准则可以用于开发高扩展、高可用、高可靠的应用程序。

另一个挑战是建立和维持高能力、高认知的云基础架构,以展现可靠的行为。高弹性、强大且通用的应用程序和基础架构的组合可实现高度可靠的IT,以满足业务的生产力、经济性和适应性等需求。

在了解了战术和战略意义及价值之后,企业开始有意识地接受开创性的云范式。也就是说,各种传统IT环境正在逐步支持云,以获得宣称的业务、技术和使用优势。但是,仅云计算并不能解决每个业务和IT问题。除了建立针对特定目的和不可知的云中心,云基础架构还有很多事情要做,才能实现业务敏捷性和可靠性。云中心运营流程需要改进、集成和编排以达到优化组织流程的目的。每个云中心的运营都需要精确定义和自动化,以实现IT敏捷性的真正含义。借助于灵活可靠的云应用程序和环境,应用程序业务能力和价值必将显著提升。

1.3.1 对可靠软件的需求

我们知道,软件可靠性对于数字时代软件工程的持续成功至关重要。但是,这实现起来并不容易。由于软件套件的复杂性不断提高,确保软件的高可靠性变得非常困难且耗时。业内相关人员已经提出了一些有趣和鼓舞人心的想法来实现可靠的软件。主要有下面两种方法。

在开发可靠的软件包时,还需要考虑下面这些因素。

下面详细讨论这些。

1.微服务架构的出现

任务关键型应用程序和通用应用程序将使用广受欢迎的MSA模式来开发。开发人员正在使用MSA范式有意识地废除单体应用程序,而且这对用户和程序开发人员来说非常正确且紧密相关。微服务是用于开发下一代应用程序的新构建块,它是一种易于管理、可独立部署、可水平扩展,而且相对简单的服务。微服务具有可被公开发现、可网络访问、可互操作、由API驱动、可组合、可替换以及高度隔离等特性。以下是MSA的一些优点。

采用快速、成熟和稳定的微服务架构,对业务和IT团队还有其他好处。工具生态系统正在崛起,因此微服务的实现和参与也得以简化。自动化工具可以简化并加快微服务的构建和运营。

2.Docker支持的容器化

Docker的理念震撼了软件世界。Docker通过容器化实现了一系列进步。软件可移植性的要求长期以来一直存在,现在可以通过开源的Docker平台得以解决。托管了各种微服务的Docker的实时弹性使得业务关键型软件应用程序的实时可扩展性成为容器化迅速普及的关键因素和原因。微服务和Docker的交叉为软件开发人员以及系统管理员带来了范式转换。Docker的轻量级特性以及与Docker平台相关的标准化打包格式在稳定和加速软件部署方面发挥了很大作用。

容器是一种打包软件的方法,它可以在任何操作环境中启用软件所需的配置文件、依赖项和二进制文件。容器有如下重要的优点。

容器还有其他重要的优点。有些产品和平台可以促进容器化和虚拟化的快速融合,以满足新兴的IT需求。

3.容器化的微服务

最近IT领域的一个范式转变是出现了用于灵活托管和运行微服务的容器。由于容器的轻型特性,因此配置容器可以用闪电般的速度完成。此外,微服务的水平可伸缩性可通过其托管环境(容器)轻松实现。因此,微服务和容器的组合为软件开发和IT操作带来了许多好处。单个物理机器中可以有数百个容器。

著名的链接(linkage)有助于在一台机器中拥有多个微服务实例。通过Docker主机上容器之间的相互通信,多个微服务实例可以找到彼此,以组成更大、更好的业务和流程感知的组合服务。因此,容器化空间的所有进步都对微服务工程、管理、治理、安全、编排和科学产生了直接和间接的影响。

容器化云环境的关键技术驱动因素如下。

容器化云环境的挑战如下。

4.用于容器编排的Kubernetes

MSA需要创建和聚合几个细粒度且易于管理的服务,这些服务具有轻量级、可独立部署、可水平扩展、容易移植等特点。容器为加速构建、包装、传输、部署和交付微服务提供了理想的托管和运行时环境,此外还提供了其他好处,比如工作负载隔离和自动化生命周期管理。随着更多的容器(微服务及其实例)被置入每台物理机器中,容器化云环境的运营和管理复杂性更高。此外,多容器应用程序的数量正在迅速增加。因此,需要一个标准化的编排平台以及容器集群管理功能。Kubernetes是目前流行的容器集群管理器之一,它由几个架构组件组成,包括Pod、标签、复制控制器和服务。下面来看一下。

Kubernetes促进了应用程序和数据容器在复合服务开发中的快速扩展,并加快了容器化时代的进展。传统和现代的IT环境都在采用这种划分技术,以克服虚拟化技术的一些关键挑战和问题。

API网关和管理套件 :这是另一个引入可靠客户端和服务交互的平台。API网关的各种特性和功能如下。

用于微服务弹性的服务网络解决方案 :分布式计算是运行Web规模的应用程序和进行大数据分析的发展方向。在面向客户的应用程序中,各种应用模块(微服务)可以进行横向扩展,其生命周期也可以单独进行管理,因此IT资源的分布式部署(可高度编程和可配置的裸机服务器、虚拟机和容器)得到了业内人士的坚持。也就是说,我们必须实现对IT资源和应用程序的分布式部署进行集中管理的目标。这种类型的监控、测量和管理是必需的,可以确保对应各种设备和组件进行主动、及时的故障预测和纠正。换句话说,在分布式计算时代,实现弹性目标非常重要。策略的制定和执行是引入一些特定自动化的可靠方法。有一些特定于编程语言的框架可以将额外的代码和配置添加到应用程序代码中,以实现应用程序的高可用性和容错性。

因此,在微服务领域拥有与编程无关的弹性和容错框架是至关重要的。服务网格是创建和维持弹性微服务的适当方式。Istio是一个业界知名的开源框架,它提供了一种创建服务网格的简便方法。图1.1所示为传统的基于ESB工具、面向服务的应用程序集成与基于轻量级、弹性微服务的应用程序交互之间的区别。

图1.1

服务网格是一种软件解决方案,用于建立从各种参与服务的网格。服务网格软件可以建立和维持服务间的通信。服务网格是一种基础设施解决方案。我们来看下面这些情况。

也就是说,核心和公共网络服务正在通过服务网格进行识别、抽象和交付,这可以让服务开发人员专注于业务功能。特定于业务的功能与服务有关,而所有水平的服务(技术、网络通信、安全、中介、路由和过滤)都在服务网格中实现。例如,断路器模式如今在服务代码中得以实现。现在,这种模式正在通过服务网格解决方案来实现。

服务网格适用于多种语言。也就是说,可以使用任何编程和脚本语言对服务进行编码。此外,服务网格还有几种文本和二进制数据传输协议。微服务在与其他微服务交互时,必须先与服务网格交互以启动服务通信。这种服务到服务的网格通信可以发生在所有的标准协议上,例如HTTP1.x/2.x、gRPC等。可以使用任何技术实现编写微服务,而且编写的微服务仍然可以使用服务网格。图1.2所示为服务网格在使微服务具有弹性方面的贡献。

图1.2

最后,将弹性微服务组合起来,就可以生成可靠的应用程序。因此,所有参与的微服务的弹性构成了高度可靠的应用程序。

5.弹性微服务和可靠的应用程序

渐渐地,世界被连接起来,并以软件为基础。我们经常听到、读到和体验到软件定义的计算、存储和网络能力。日常环境中的物理、机械、电气和电子系统都被精心地“塞进”了软件,使其在行动和反应中变得灵巧,有意识,有适应性,有表达力。在产生和维持受数字影响与变革的社会方面,软件注定要发挥重要作用,新一代软件支持系统的一个突出特点是通过一种或多种方式始终保持响应性。也就是说,它们必须得到正确的响应。如果一个系统没有响应,则另一个系统必须正确且快速地响应。换言之,如果系统出现故障,替代系统必须做出响应。

这通常称为系统弹性。如果由于用户和数据负载过重而导致系统压力过大,则必须配置其他系统以响应用户的请求,确保不会出现任何响应变慢和发生故障的情况。也就是说,对于当今的软件系统来说,自动扩展是一个重要的属性,而且与企业和用户相关。为了使系统具有弹性,产生消息驱动系统是关键的决策。消息驱动系统称为响应式系统。我们在这里解释一下系统弹性背后的概念。

可扩展的应用程序可以自动扩展,从而可以持续运行。在某一时刻,可以有更多的用户访问该应用程序。尽管如此,该应用程序必须不断进行交易,并能恰当地处理流量峰值和流量下降。通过仅在需要时添加和删除虚拟机、容器,可扩展应用程序可以执行其被分配的任务,而不会出现任何响应变慢或发生故障的情况。通过动态配置额外资源,可扩展应用程序的利用率是最佳的。可扩展应用程序支持按需计算。可能有许多用户请求应用程序的服务,也可能有更多的数据被推送到应用程序中。容器和虚拟机是应用程序组件的主要资源和运行时环境。 xmriLLTw/MCUoSmBEmg9IfLCalH6PN3lFYIk6z6IrAxG3BHvuCgM4dDrHloErYiC

点击中间区域
呼出菜单
上一章
目录
下一章
×