SOA和微服务之间的区别(应用和数据的垂直拆分水平拆分)

目录

引出问题

重要概念

垂直拆分

水平拆分

同步分层架构

异步分层架构

SOA是什么?

微服务是什么?

数据库拆分

写在最后


引出问题

互联网发展迅猛,互联网系统也由原来的单机服务逐步的演化为分布式服务,同样,服务架构也由原来的单体架构逐步演化为如今的分布式架构,由此衍生出许多架构类型。今天就谈谈微服务架构和传统的SOA架构到底有什么区别。

近年来微服务火遍中小型企业,似乎看起来SOA已经成为将要过时的技术,事实是真的这样子吗?

重要概念

当单体架构满足不了日益增长的客户需求时,就要将数据库和应用程序等拆分开,也就是将一个应用程序部署到多台服务器上。通常服务和数据的拆分,分成垂直拆分水平拆分

同步分层的架构和异步分层架构只差了一个消息队列(MQ),异步操作虽然可以增强用户的体验,但是其弱一致性会带来许多数据不一致的问题(这个问题在后续博文中会做出解释和解决方案,关注我哟~)。

垂直拆分

对业务的不同进行分类,不同的业务划分到不同的应用和数据库中。这种拆分往往是根据系统的改造,将原来的功能模块按照更加细粒度的拆分成多个弱耦合的服务。

水平拆分

数据库层面的水平拆分,就是将一个数据表中的数据按照某种规则分化到不同的数据库中,也就是分库分表

应用层面的水平拆分,最经典的就是将整个应用分层。数据库访问层和业务逻辑层拆分、网关层和业务逻辑层拆分等等。

同步分层架构

异步分层架构

SOA是什么?

(铺垫了这么多,终于到正题了)

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。(这是百度的解释)

SOA其实是按照业务进行垂直方向的拆分的,每个服务其实还是单机,对ESB依赖严重。

微服务是什么?

微服务的终极目的就是为了项目的快速迭代持续交付

微服务架构既进行垂直拆分,又进行了水平拆分

数据库拆分

数据库拆分也分为垂直拆分和水平拆分。

垂直拆分比较容易理解,就是按照业务进行拆分;水平拆分就比较难了,其实一般的能不用水平拆分就不用水平拆分。

这里我推荐一个专门用来做分布式的数据库,TiDB。(在后续博文中会介绍它的使用和应用场景,关注我哟~)

写在最后

写文章目的就是交流分享,如有问题还请指正,本人邮箱[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章