soa架构与单体架构的区别_soa架构的优缺点

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

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

(1)单体架构

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

soa架构与单体架构的区别_soa架构的优缺点

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

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

单体架构优劣势:

soa架构与单体架构的区别_soa架构的优缺点

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

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

soa架构与单体架构的区别_soa架构的优缺点

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

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

面向服务架构优劣势:

soa架构与单体架构的区别_soa架构的优缺点

(3)微服务架构

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

soa架构与单体架构的区别_soa架构的优缺点

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

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

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

微服务架构优劣势:

soa架构与单体架构的区别_soa架构的优缺点

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

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

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

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

本文【soa架构与单体架构的区别_soa架构的优缺点】由作者: Web服务 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4075.html

(0)
上一篇 2023-03-08 10:59:44
下一篇 2023-03-08 11:08:02

相关推荐

  • linux软件安装在哪个目录

    1、通过rpm查看 1)、查看是否安装,如果安装显示安装的文件,如果没有安装不返回任何值 2)、rpm -ql 列出软件包安装的文件 3)、rpm -qal |grep mysql 查看所有安装包的文件存储位置 rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。…

    2023-03-12
    400
  • linux必学的60个命令解释_linux系统一般用来干嘛

    公众号【传智播客博学谷】回复关键词:前端 PS Java(100G) Python(80G) 大数据 区块链 测试 PPT JS(40g+300教程) HTML 简历 领取相关学习资料! 公众号【传智播客博学谷】回复关键词:前端 PS Java(100G) Python(80G) 大数据 区块链 测试 PPT JS(40g+300教程) HTML 简历 领取…

    2023-03-14
    100
  • s60v3软件打不开

    在上一个手机时代,可谓是工业设计的巅峰时期,翻盖、滑盖、旋屏、直板等样式百花齐放,比现在清一色的全面屏手机有意思多了。其中诺基亚就是佼佼者,每年至少推出10款新品。 其中诺基亚3250可谓是一代经典了,它不仅是一款超棒的音乐手机,还是一部不错的拍照手机,更是一部外观能载入史册的“直板旋转”手机,屏幕和键盘竟然可以90度转动。 只要将诺基亚3250底部那个模块…

    2023-03-14
    200
  • matlab求导后赋值计算_matlab导数怎么求

    MATLAB作图像、求极限及导数,小编整理材料不容易,喜欢的记得关注收藏哦谢谢支持

    2023-03-22
    000
  • void指针作为函数参数

    我们知道,函数传址可以产生副作用,如一级指针做函数参数可以对一个普通变量产生副作用: int x = 0; void demo(&x);#include <stdio.h> #include <malloc.h> void demo(int* p); main() { int x = 0; demo(&x); prin…

    2023-03-09
    800
  • 二分法查找是什么意思

    引入: 二分法思想无处不在,我们经常玩的猜数字游戏,0-99的范围,最多需要多少次我就可以猜对呢? 使用二分法思想,最多仅仅需要7次就可以查找到。 二分法查找是非常恐怖的,以2的倍数缩小范围。所以时间复杂度O(logn) 局限性: 1.针对二分法查找的数据必须是有序的。 2.二分法查找依赖于顺序表结构,也就是数组。因为二分法需要随机访问元素,也就是O(1)的…

    2023-03-12
    400
  • sql数据库开发是什么,sql数据库常用命令

    SQL 是一种非常常见但功能强大的工具,它可以帮助从任何数据库中提取、转换和加载数据。 数据查询的本质在于SQL。 随着公司和组织发现自己处理的数据量迅速增加,开发人员越来越需要有效地使用数据库来处理这些数据。 所以想要深入数据领域,SQL是必须的! 要掌握这门语言,你需要知道如何使用一些命令——其中大部分命令都基于一些基本命令。 对于整篇文章,我使用的是一…

    2023-03-15
    700
  • ftp站点名称和物理路径,ftp站点怎么设置

    1、点击“开始”菜单,选择“服务器管理器” 2、在接下来弹出页面中选择“添加角色和功能” 3、接下来点击“下一步” 4、接下来选择“基于角色或基于功能的安装”并点击“下一步” 5、选择“从服务器池中选择服务器”并点击“下一步” 6、接下来选中“Web 服务器(IIS)”后会弹出来一个“添加角色和功能向导”的页面,在弹出的页面中选择“添加功能” 7、在第6步完…

    2023-03-19
    000
  • administrator账户默认密码(怎样取消administrator账户)

    很多用户想要关闭Windows 10 的开机密码,但不知道如何操作,本篇文章教大家如何操作。 方法一:设置 打开电脑左下角的开始菜单,找到齿轮图标,点击进入设置。如下图: 进入设置以后,在弹出的界面里找到帐户。如下图: 点击进入帐户,在弹出的界面左侧找到并点击登录选项,右侧界面会自动切换,在切换的界面里找到密码,点击密码会看到更改。如下图: 点击更改以后,会…

    2023-03-18
    100
  • 如何用随机数表产生随机数_生成随机数的方法

    今天跟大家分享一下如何利用Excel生成和为指定数的随机数 1.如下图我们想要生成和为100的12个随机数。 2.选中D2:F5单元格区域 3.点击下图选项(Excel工具箱,百度即可了解详细的下载安装信息,本文这里就不做具体解说) 4.依次点击【随机重复】、【随机分摊】 5.点击【按总和分摊】,然后在【目标总和】中录入100. 6.调节离散程度选项,设置随…

    2023-03-09
    600

发表回复

登录后才能评论
返回顶部
错说博客上线啦!