简述
微服务(Microservice Architecture)是近几年流行的一种架构思想,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。
单体架构的缺点
如果系统架构基于传统的MVC架构,所有的业务子模块都会被集成在一个很重的jvm进程中,导致整个项目过于臃肿带来了很多缺点。
资源无法隔离
整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。例如一个
模块把整个系统的数据库连接都用光了,其他模块就会收到影响
无法灵活扩展
当系统的访问量越来越大的时候,单体系统固然可以进行水平扩展,部署在多台机器上组成集群,但是这种扩展并非灵活的扩展,如果只
想针对某一业务进行扩展,单体系统就无法扩展了。
微服务的优点
独立部署,灵活扩展
传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立组件(例如用户服务,商品服务)为单位进行部署。
资源的有效隔离
每个微服务当然可以共享同一数据源,但微服务设计的原则之一,就是每一个微服务拥有独立的数据源。假如微服务A想要读写微服务B的
数据库,只能调用微服务B对外暴露的接口来完成。这样有效避免了服务之间争用数据库和缓存资源所带来的问题
微服务和SOA的区别
SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署
例如我们的项目在web、手机app两个系统部署,都有注册用户这一业务,那么访问数据库新增用户信息这一部分工作是不是就要写两遍了
如果要改动的话就要改两遍了,SOA就是开一台服务器完成注册用户这一业务,web和手机app端都调用这个服务器的接口完成各自的用户注册
功能。还有的好处就是如果有一天注册用户这一业务压力大时,可以多部署几台SOA用于注册用户的服务器供web和手机app端注册。
Reference
https://www.zhihu.com/question/42061683/answer/251131634