SOA和微服务(应用和数据的垂直拆分及水平拆分)
引出问题
互联网发展迅猛,互联网系统也由原来的单机服务逐步的演化为分布式服务,同样,服务架构也由原来的单体架构逐步演化为如今的分布式架构,由此衍生出许多架构类型。今天就谈谈微服务架构和传统的SOA架构到底有什么区别。
近年来微服务火遍中小型企业,似乎看起来SOA已经成为将要过时的技术,事实是真的这样子吗?
重要概念
当单体架构满足不了日益增长的客户需求时,就要将数据库和应用程序等拆分开,也就是将一个应用程序部署到多台服务器上。通常服务和数据的拆分,分成垂直拆分和水平拆分。
同步分层的架构和异步分层架构只差了一个消息队列(MQ),异步操作虽然可以增强用户的体验,但是其弱一致性会带来许多数据不一致的问题(这个问题在后续博文中会做出解释和解决方案,关注我哟~)。
垂直拆分
对业务的不同进行分类,不同的业务划分到不同的应用和数据库中。这种拆分往往是根据系统的改造,将原来的功能模块按照更加细粒度的拆分成多个弱耦合的服务。
水平拆分
数据库层面的水平拆分,就是将一个数据表中的数据按照某种规则分化到不同的数据库中,也就是分库分表。
应用层面的水平拆分,最经典的就是将整个应用分层。数据库访问层和业务逻辑层拆分、网关层和业务逻辑层拆分等等。
同步分层架构
异步分层架构
SOA是什么?
(铺垫了这么多,终于到正题了)
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。(这是百度的解释)
SOA其实是按照业务进行垂直方向的拆分的,每个服务其实还是单机,对ESB依赖严重。
微服务是什么?
微服务的终极目的就是为了项目的快速迭代和持续交付。
微服务架构既进行垂直拆分,又进行了水平拆分。
数据库拆分
数据库拆分也分为垂直拆分和水平拆分。
垂直拆分比较容易理解,就是按照业务进行拆分;水平拆分就比较难了,其实一般的能不用水平拆分就不用水平拆分。
这里我推荐一个专门用来做分布式的数据库,TiDB。(在后续博文中会介绍它的使用和应用场景,关注我哟~)
分布式AKF拆分原则:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
2020-08-25 activiti app 6.0 乱码