微服务时代:从单体应用到微服务架构的转型
1. 单体应用与微服务概述
在软件开发领域,存在着单体应用和微服务架构两种不同的模式。单体应用由一组紧密耦合的组件构成,这些组件通常使用相同的语言开发,应用作为一个整体运行。其显著特点是启动速度慢,部署也可能较慢,因为在应用启动运行前可能需要多个依赖项。
以一个简单的事件应用为例,该应用允许用户定义事件,并在事件即将开始时收到通知。它具备以下功能:
- 用户可以注册并将事件添加到日历中。
- 在事件开始前几分钟,调度器(Scheduler)组件会触发,用户会收到包含事件信息的电子邮件,这由 SMTP 组件负责。
- 用户可以通过前端界面或 API 界面使用该应用。
如果将这个应用视为单体应用,想象所有四个部分都属于同一个进程(即使它们可能在不同的线程中),并且应用直接访问数据库。对于小型应用来说,这种方式或许可行,但对于中型应用而言,这将导致混乱。一组开发人员开发新功能或进行改进会是一场噩梦,新加入的开发人员也需要花费时间来掌握基础知识才能进行修改。
为了避免这种情况,应遵循“不要重复自己”(DRY)原则,尽量减少多个组件对数据源的访问。在上述示例中,API 应该有权限访问数据源,而其他组件则应通过 API 来操作。这样一来,应用就可以拆分为两个服务:API 服务和前端服务。前端服务用于管理事件,但通过 API 服务来操作数据源。这不仅使数据源的管理更加集中,还促使开发者从外部开发者的角度思考 API 的设计,实现了双赢。
然而,这种架构仍有改进空间。前端可以作为一个独立的服务,这样可以根据用户流量进行扩展,其他部分也可以拆分为独立的服务,如调度器和 SMTP 服务。S
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



