本系列旨在揭示现代软件行业的关键主题——云原生应用程序。这篇文章涉及微服务、容器和无服务器应用程序。在这里,我们将讨论这些技术的实际优点和缺点。
微服务
微服务架构作为构建现代软件应用程序的强大方法而享有盛誉。那么什么是微服务?微服务可以简单地描述为,将软件应用程序所需的功能分离为多个独立的小型软件服务或“微服务”。每个微服务负责自己专注的任务。为了使微服务协同工作以形成大型可伸缩应用程序,它们之间进行通信和交换数据。
微服务的诞生是因为需要克服单体应用程序的复杂性和不灵活性。单体应用程序是一种应用程序,其中所有必需的功能一起编码到同一服务中。例如,这是一个表示单体活动(如音乐会、演出等)预订应用程序的图表,负责预订支付处理和活动预订:
用户可以使用该应用程序预订音乐会或演出。需要一个用户界面。此外,我们还需要一个搜索功能来查找活动、一个预订处理程序来处理用户预订然后保存该预订、一个活动处理程序来帮助查找活动(确保有可用的座位,然后将其链接到预订)。在生产级应用程序中,需要更多的任务,例如支付处理,但是现在我们主要关注上图中概述的四个任务。
这种单体应用程序适用于中小负载。它在单个服务器上运行,连接到单个数据库,并且可能使用相同的编程语言编写。
现在,如果业务呈指数级增长,需要处理数十万或数百万用户,会发生什么?最初,短期解决方案是确保运行应用程序的服务器具有强大的硬件规格以承受更高的负载,如果没有,则向服务器添加更