相关文章推荐
苦恼的山羊  ·  通俗地理解面向服务的架构(SOA)以及微服务 ...·  2 月前    · 
苦恼的山羊  ·  面试官灵魂三问:什么是SOA?什么是微服务? ...·  2 月前    · 
苦恼的山羊  ·  什么是SOA(面向服务的架构)? | IBM·  2 月前    · 
苦恼的山羊  ·  单体应用、SOA架构、微服务架构有哪些优劣势 ...·  2 月前    · 
苦恼的山羊  ·  架构设计-SOA架构和微服务架构的区别- ...·  2 月前    · 
小百科  ›  单体应用、SOA架构、微服务架构有哪些优劣势?开发者社区 ...
面向服务的架构(SOA)
苦恼的山羊
2 月前
凡泰极客

单体应用、SOA架构、微服务架构有哪些优劣势?

原创
前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
腾讯云架构师技术同盟
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 腾讯云架构师技术同盟
返回腾讯云官网
凡泰极客
首页
学习
活动
专区
工具
TVP 腾讯云架构师技术同盟
返回腾讯云官网
社区首页 > 专栏 > 单体应用、SOA架构、微服务架构有哪些优劣势?

单体应用、SOA架构、微服务架构有哪些优劣势?

原创
作者头像
凡泰极客
发布 于 2023-02-10 10:08:55
发布 于 2023-02-10 10:08:55
1.3K 0
举报
文章被收录于专栏: 凡泰极客科技Blog

目前大部分的企业系统和互联网应用都是采用的Web形式提供服务能力,根据系统的组织和部署结构,软件架构的演化过程大概分成以下阶段:1、单体架构; 2、SOA架构;3、微服务架构

这也是软件架构从简单到复杂的演进过程,但正如业界常说的,没有最好的架构,只有最合适的架构。一个合适的架构能够充分考虑到“业务的复杂度+数据规模大小+团队的技术栈+时间成本”,并提供一个最好的结果。以下简单说说架构的发展与其优劣势,便于大家在项目开发过程中选择合适的方案。

(1)单体架构

单体架构就是把所有的业务逻辑和控制逻辑全部都放在了一起,一个程序里包括了所有的相关功能。(All in one)。比如一个 ERP 系统中包括了商品模块,订单模块,销售模块,库存模块,报表统计等等。

单体架构基本解决了所有简单的问题,由于开发时所有业务代码都在一起,测试的时候不需要联调各种服务,发布维护非常轻松。但缺点也很明显,每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个BUG都会造成隐含的缺陷。一旦某一个模块出了问题,那基本就是全盘 GG。如果想针对某个具体模块提升性能,难度也比较大。

总的来说单体架构前期开发成本低、开发周期短,适合小型项目。对于大型项目来说不易开发、扩展和维护。技术栈受限,只能使用一种语言开发。系统性能扩展只能通过扩展集群节点,成本高。

单体架构优劣势:

(2)面向服务架构(SOA)

随着业务系统越来越复杂,单体架构垂直拆分演变出了SOA( Service-Oriented Architecture),即面向服务的架构。它可以根据需求通过网络对松散耦合的粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进程中。比如上面举的这个 ERP 系统,可以按照功能,将用户,商品,交易等不同的部分拆分为了独立的服务(当然,数据库也需要进行拆分)。

从架构上来说,是将重复功能或模块抽取成组件的形式,对外提供服务,在项目与服务之间使用ESB(企业服务总线)的形式作为通信的桥梁。而ESB 就是一根管道,用来连接各个服务节点。为了集 成不同系统,不同协议的服务,ESB 做了消息的转化解释和路由工作,让不同的服务互联互通;

听起来这种方式比之前的单体架构厉害了不少,但还是会有一些对应的问题,比如每一个拆分之后的服务“依然还是单体服务”,有一些每个模块中都会使用的公共模块没有拆分(这也会导致 ESB 比较复杂)。总结来说,面向服务架构有这些优劣势:

面向服务架构优劣势:

(3)微服务架构

那如果我们不仅按照垂直方向拆分,同时也按照水平方向进行进一步拆分,那也就是微服务的架构模式了,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。其实和 SOA 架构类似,微服务是在 SOA 上做的升华。

还是以ERP系统举例,系统里的商品,用户,订单,库存等不同的部分都成为了独立的微服务,每一个服务之间都可以进行直接的通信沟通。

那么也就是说,微服务其实就是在移除了 ESB 之后,更为轻量和更为松耦合的服务,并把 ESB 的控制逻辑以 SDK 的方式注入到每个微服务中进行服务控制和治理,架构更为的分布式。

由于微服务的要素之一就是“微”,所以大多数微服务都是基于容器进行调度管理的(这也是我们为什么经常会在微服务的相关介绍中看到 Docerk,k8s 的相关字样)

微服务架构优劣势:

从工作到现在经历过大大小小的几十个项目,每个项目都会基于当前的项目阶段、技术情况去选择合适技术架构。(很多大型企业的应用目前都还是单体架构)。随着技术的发展,随着业务的发展App版本不断迭代,新功能不断增加,业务上的处理逻辑越变越复杂。许多企业可能都面临着是否要将单体架构进行微服务升级改造的问题。但从一个大一统的系统,拆分成一个一个单独的小服务,企业需要投入的人力、物力、财力是非常巨大的。在没有足够的资源投入之前,不妨选择一些折中的方案。

传统架构的最大问题就是紧耦合,在应用迭代、升级的过程中,除了升级微服务架构之外,选择一些可插拔式的技术工具也可以很好的解决问题。比如:FinClip小程序容器技术 ,这是一种以小程序技术为载体,发展成组装式的企业应用架构技术。

从应用层来说,只要把FinClip SDK嵌入到企业的App中,就能立刻获得小程序运行能力。不管你的项目是什么软件架构,都可以通过这种嵌入式的小程序技术去获得APP并行开发、热更新、敏捷迭代的能力。

从开发角度来说,这是一种「Native + 小程序」的混合开发模式,借助这种模式可以让小程序运行在自有 App 中,将臃肿的 App 功能打散,功能模块互相解耦实现模块化开发,各业务模块间互不影响,通过管理后台即能实现实时动态更新与发布。对于一些积重难返的项目来说,采用这种入侵性小、可插拔式的技术是一种值得尝试的解决方案。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

微服务
erp
小程序
微信

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

微服务
erp
小程序
微信
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
推荐阅读
LV.
文章
0
获赞
0
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
产品介绍 产品文档
2025春季采购节
领券
  • 社区

    • 技术文章
    • 技术问答
    • 技术沙龙
    • 技术视频
    • 学习中心
    • 技术百科
    • 技术专区
  • 活动

    • 自媒体同步曝光计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2025 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
苦恼的山羊  ·  通俗地理解面向服务的架构(SOA)以及微服务之间的关系-阿里云 ...
2 月前
苦恼的山羊  ·  面试官灵魂三问:什么是SOA?什么是微服务?SOA和微服务有什么 ...
2 月前
苦恼的山羊  ·  什么是SOA(面向服务的架构)? | IBM
2 月前
苦恼的山羊  ·  单体应用、SOA架构、微服务架构有哪些优劣势?-腾讯云开发者社区 ...
2 月前
苦恼的山羊  ·  架构设计-SOA架构和微服务架构的区别- 秦羽的思考- 博客园
2 月前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号