架构模式(微服务架构概述)
一、前言
微服务(MicroServices)是一种架构风格,一个大型复杂软件应用由多个微服务和前端展示层组成 。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的 。每个微服务仅关注于完成一件任务并很好地完成该任务 。在所有情况下,每个任务代表着一个小的业务能力 。
以往我们开发应用程序都是单体应用(可以理解为一个部署包包含了项目的所有功能),虽然开发和部署比较方便,但后期随着业务的不断增加为了能够达到响应业务需求,单体应用的开发迭代和性能瓶颈等问题愈发明显,微服务就是解决此问题的有效手段 。
想要回答为什么要使用微服务架构的问题,首先应该了解一体化架构 。
二、什么是一体化架构
一体化架构顾名思义,将应用各层打成一个包来部署 。为了让代码正常工作,一体化应用的所有组件缺一不可 。
以典型的3层传统web应用为例,该应用由用户界面、数据库、服务器端应用组成 。这里的服务器端应用被称为monolith(一体化或者单体),包含表现、业务层、数据层 。所有代码都存在于同一个代码库中 。为了让代码工作起来,它被部署成为一个单元 。任何一个小的改动变化,都需要重新构建和部署整个应用 。
单体应用架构
二、什么是微服务架构
微服务架构是一种架构风格,整个应用被划分并设计为以业务域
为模型的松散耦合的独立服务 。微服务中的“微”非常具有欺骗性,事实上它没有规定服务的规模有多小或多大 。
这里的重点是每个独立服务都有一个业务边界,可以独立开发、测试、部署、监控和扩展,甚至可以用不同的编程语言开发它们 。
微服务架构
在基于微服务的架构中,理想情况下
每个组件或服务都有自己的数据库 。没有集中式数据库,我们可以根据需要为每个单独的微服务使用NoSQL、RDBMS或任何其他数据库,这也是让微服务真正独立的原因之一 。
三、一体化架构的问题
或者说是微服务架构所解决的问题 。
3.1难以扩展
一体化架构应用只能通过在负载均衡器后面放置整个应用程序的多个实例来进行水平扩展 。如果应用中的特定服务需要扩展,则没有简单的选项 。我们需要完整地扩展应用程序,这显然会造成不必要的资源浪费 。
相比之下,基于微服务的应用程序允许我们根据需要独立扩展单个服务 。在上图中,如果需要缩放服务B,则可以有10个实例,同时保持其他实例,并可以根据需要随时更改 。
3.2交付时间长
一体化架构在单个应用的任何部分/层中进行的任何更改都需要构建和部署整个应用程序 。个人开发人员还需要下载整个应用程序代码来修复和测试,而不仅仅是受影响的模块,这就影响到了持续部署的效率 。
推荐阅读
- 如何开微店,微店开设的基本流程
- 李幼斌演过哪些电视剧
- 微波炉烤花生 如何用微波炉烤花生?
- 可爱炸了的微信昵称 微信名女
- 微商应该怎么引流
- 微信可以订电影票吗 微信怎么买电影票
- 微信名字女唯美大气 四字押韵唯美古风网名
- 数码知识:华为p40微信视频带美颜吗 视频通话美颜方法
- 开网店能赚钱吗 开网店一年赚多少钱
- 长期施肥对茶园土壤微生物群落功能多样性的影响