微服务架构 - 扩展

扩展是将软件分解为不同单元的过程。扩展也从可扩展性的角度进行定义。可扩展性是实现应用程序更多高级功能的潜力。它有助于提高应用程序的安全性、耐用性和可维护性。行业中遵循三种扩展程序。以下是不同的扩展方法以及相应的实际示例。

X 轴扩展

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

X 轴扩展

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

Y 轴扩展

Y 轴扩展也称为垂直扩展,包括任何资源级别扩展。任何 DBaaS 或 Hadoop 系统都可以被视为 Y 轴扩展。在这种类型的扩展中,用户请求通过实现某些逻辑进行重定向和限制。

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

Y-Axis Scaling

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

Z 轴扩展

X 轴和 Y 轴扩展更容易理解。但是,一个应用程序也可以在业务级别进行扩展,这称为 Z 轴扩展。以下是在业务部门的不同垂直领域扩展出租车服务应用程序的示例。

Driver Management

扩展的优势

  • 成本 − 适当的软件扩展将降低维护成本。

  • 性能 − 由于松散耦合,适当扩展的软件的性能始终优于未扩展的软件。

  • 负载分配 − 使用不同的技术,我们可以轻松维护服务器负载。

  • 重用 − 软件的可扩展性也提高了软件的可用性。