深入理解微服务:架构、特性与设计
1. 单体应用与微服务对比
为了更好地掌握微服务这一概念,将其与已知的单体应用进行对比是很有启发性的。下面通过一个折扣申领应用的例子来对比单体应用和微服务。
1.1 单体版本的折扣申领应用
假设前150名响应者可以为一款新的人工智能代码编辑器申领折扣。代码编辑器供应商在其网站上设置了一个网页,响应者可以在该网页上申领折扣。他们只需提供姓名和电子邮件地址,之后会收到一封包含折扣码的电子邮件,用于订购代码编辑器。
从技术上讲,这个网页是一个单体单页应用,它按顺序执行以下任务:
1. 响应者输入数据。
2. 将响应者的数据存储在数据库中,以备后续参考。
3. 向客服发送内部消息。
4. 向响应者发送包含折扣码的电子邮件。
5. 写入日志消息并结束用户体验。
然而,发送电子邮件的任务需要近10秒才能完成,这会冻结用户体验。响应者虽然最终收到了电子邮件,但开始在社交媒体上开玩笑说代码编辑器是否会像申领页面一样慢。
1.2 微服务版本的折扣申领应用
为了避免社交媒体上的负面宣传,供应商咨询了后端开发人员,开发人员提出了一个微服务替代方案。
当响应者输入电子邮件地址和姓名时,应用程序会向任务队列发送一条消息,并立即结束用户体验。每个微服务都是一个独立的任务,它们异步并行运行,并监听队列中是否有新消息。如果有,微服务会解析消息并执行相应的任务。
微服务执行的顺序和持续时间无关紧要,因此发送电子邮件的微服务不会影响其他微服务和用户体验。实施微服务架构后,响应者不再开玩笑,并在社交媒体上做出