Microservice Architecture 简明教程

Microservice Architecture - Scaling

伸缩是将软件分解为不同单元的过程。伸缩还从可伸缩性的角度进行定义。可伸缩性是实现应用程序更多高级功能的潜力。它有助于提高应用程序的安全性、持久性和可维护性。我们在行业中采用了三种类型的伸缩程序。以下是不同的伸缩方法以及相应的真实示例。

X-Axis Scaling

X 轴伸缩也称为水平伸缩。在此过程中,整个应用程序被细分为不同的水平部分。通常,任何 Web 服务器应用程序都可以进行这种类型的伸缩。考虑一个遵循水平伸缩的普通 MVC 架构,如下图所示。

x axis scaling

例如,我们可以考虑任何 JSP servlet 应用程序。在此应用程序中,控制器控制每个请求,并且它会在必要时与模型通信以生成视图。通常,单体应用程序遵循这种伸缩方法。X 轴伸缩本质上非常基本,并且非常省时。在此方法中,将根据单元负责的不同任务对一款软件进行伸缩。例如,控制器负责控制传入和传出的请求,视图负责向浏览器中的用户表示业务功能,而模型负责存储我们的数据并充当数据库。

Y-Axis Scaling

Y 轴伸缩也称为垂直伸缩,包括任何资源级伸缩。任何 DBaaS 或 Hadoop 系统都可以被认为是 Y 轴伸缩。在此类型的伸缩中,用户请求被重定向并受到限制,方法是实现一些逻辑。

让我们以 Facebook 为例。Facebook 每秒需要处理 179 万用户;因此,控制流量是 Facebook 网络工程师的巨大责任。为了克服任何危险,他们遵循 Y 轴伸缩,其中包括同时运行具有相同应用程序的多个服务器。现在,为了控制这种巨大的流量,Facebook 将所有流量从一个区域重定向到特定服务器,如下图所示。基于区域的这种流量传输在架构语言中称为负载平衡。

y axis scaling

将资源分解为小型独立业务单元的这种方法称为 Y 轴伸缩。

Z-Axis Scaling

X 轴和 Y 轴伸缩很容易理解。然而,一个应用程序也可以在业务级别进行缩放,这称为 Z 轴缩放。以下是将出租车服务应用程序扩展到不同垂直业务单元中的示例。

driver management

Advantages of Scaling

  1. Cost − 软件的正确伸缩将降低维护成本。

  2. Performance − 由于松散耦合,正确伸缩的软件的性能始终优于未伸缩的软件。

  3. Load distribution − 使用不同的技术,我们可以轻松地维护我们的服务器负载。

  4. Reuse − 软件的可伸缩性还提高了软件的可用性。