软件开发soa架构 软件开发soa架构图
大家好,今天小编关注到一个比较有意思的话题,就是关于软件开发soa架构的问题,于是小编就整理了2个相关介绍软件开发soa架构的解答,让我们一起看看吧。
软件产品架构中什么是单体架构、SOA架构、微服务架构?
软件产品架构是不断迭代演化的,从单体服务架构发展到现在的服务化、微服务的架构。
单体架构就是所有的业务模块都是耦合在一个项目中,开发、部署都在一起;如果其中一个模块需要上线升级,那么所有模块都要一起启停;
在早期,单体架构的项目团队成员需要是“全栈”,因为前端、后端、数据库都是一波人负责,后来开始进行了逻辑分层,团队也分成了前端 UI 团队、后端和 DBA 团队,每个团队都有自己负责的职责。
然而随着业务逻辑越来越复杂,模块和模块之间的耦合度越来越高;另外随着用户和数据量的增多,单体架构也不再能够支撑高并发和大数据。
为了解决上面的问题,SOA 出现了。
我在低代码开发平台领域中接触最多的就是微服务架构,微服务是指开发一个单个 小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上,而且部署方式也有多种,集群部署,双机部署,单机部署等等,天翎的myapps平台就是一个很好的例子,可以去了解一下这个架构,是三种架构里面使用得比较多也比较方便的软件产品架构
单体架构:单体架构是一种架构模式,它将所有的功能都集中在一个单一的应用程序中,这个应用程序可以是一个单独的可执行文件,也可以是一个Web应用程序。
SOA架构:SOA架构是一种架构模式,它将应用程序拆分成一组可重用的服务,这些服务可以被多个应用程序共享。
微服务架构:微服务架构是一种架构模式,它将应用程序拆分成一组小型服务,每个服务都可以独立部署,并且可以使用不同的技术栈来构建。
关于架构发展历史可参考文章:https://www.toutiao.com/article/7200765359178154500/
软件架构的发展经历了从单体架构、垂直架构、SOA架构到微服务架构的过程。
Web应用程序发展的早期,大部分web工程师将所有的功能模块打包到一起并放在一个web容器中运行,所有功能模块使用同一个数据库。
下图是一个单体架构的电商系统:
特点:
1、所有的功能集成在一个项目工程中。
2、所有的功能打在一个war包部署到服务器。
3、通过部署应用集群和数据库集群来提高系统的性能。
单体架构
* 一个典型的单体应用就是将所有的业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上。
`例如:典型的J2EE工程,它是将表示层的JSP、业务逻辑层的Service、Controller和数据访问层的Dao,打成war包,部署在Tomcat、Jetty或者其他Servlet容器中运行`
SOA架构
* SOA架构是面向服务的体系结构,主要目的是为了各个系统更加容易地融合在一起。
`例如:以购物商城为例,由于功能模块越来越多,系统非常臃肿所有对系统进行横向拆分,各个服务之间彼此相对独立,通过服务治理框架进行服务之间的通信以及管理,常用的服务治理框架有:dubbo、dubbox等`
微服务架构
微服务是将一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务模块。
表面上看这是一个大问题。
实质有内联关系。
你可以把一个单体架构的应用看作是一大整块豆腐。
SOA架构就是豆腐切块了。
微服务架构就是豆腐切块了之后又切成豆腐丁了。
大块有大块的好处,小块有小块的好处。
这里的利弊就是你打算怎么个做法能吃起来更可口。
应用切分到微服务也并不是绝对的好。
技术架构细分也是软件细化分工的一种体现。
仅此而已。
随着架构设计的演变为什么项目中需要用到SOA框架?
绝大部分的应用框架都会有一个演进的过程,这个演进的过程通常是被业务逼出来的,所以要想知道为什么要使用SOA框架,就需要了解传统的单体架构有哪些缺点。
在项目的初期,项目通常都是采用单体应用进行开发部署,软件架构分为Web层、业务逻辑层和数据持久化层,不同层次的模块化组件被聚合后运行在应用服务器上;
再往后发展,开源软件SSH崭露头角,MVC的设计模式,强制性的把应用程序的输入、处理和输出分开,让各个模块各施其职,互不干涉;
这个时代的项目大多数都是企业级应用,用户量不是很大,项目都会被打成一个包进行部署发布。
虽然单体架构有容易部署、测试等优点,但是随着需求的增多,单体应用变得越来越臃肿、越来越难以维护;用户越来越多,项目只能通过增加资源的方式来提高项目的性能;随着时间的推移,单体项目暴露的缺点也越来越多:
代码越来越多,增加了代码的复杂性;作为开发人员一定深有感触,每当修改一个老方法的时候,一定会格外的小心翼翼,生怕影响了其他的功能;
随着开发人员的流动,老员工离开项目组,复杂且庞大的项目代码又让新成员难以阅读和理解,技术债务越积越多;
在10多年前接触SOA概念的时候,以IBM、Oracle为主的头部玩家加上国内一些中间件厂商都在跟进,火爆程度不亚于现在的区块链、中台、AIOT,各公司都用自己的产品、方案组合来演绎SOA,比较典型的产品就是ESB、BPM、Portal,有时候也会带着DP开发平台,当时很多定制软件开发商、甚至ERP厂商都得跟SOA扯上关系,不然就不知道怎么讲片子、不好意思跟人打招呼。
SOA面向服务架构是一种设计理念、架构规范,用来构建敏捷柔韧的IT架构、随需应变支撑业务。
从这个角度来说跟中台理念类似,不过中台的范畴更广、跟业务关联度更高。SOA其实分两种流派,一种SOI面向服务集成、SOD面向服务开发,这就是为什么中间件厂商跟应用软件开发商都能跟SOA扯上关系的原因,不过一个是盖房子的一个是修道路桥梁的,谈不上谁比谁高级,但解决问题却是一致的:让应用软件更容易互联互通、敏捷集成,只是应用软件厂商强调的集成性更多是大系统的模块间的集成,而中间件厂商强调的是异构应用系统之间的集成。
企业系统很多的时候一定会要基于SOA来做集成,但是仅靠ESB、BPM、Portal是不行的,一定得有MDM主数据治理、还得有IDM统一权限、统一账户、统一认证。MDM是深度应用集成(比如BPM跨异构系统流程集成)、也是深度数据集成(DW、BI、BD、DSS、DAP等数据分析平台项目)的基础。做SOA综合集成项目产品是基础、只有产品也不行,得甲方高层支持、业务部门、应用厂商、信息部门高效协同配合、相互斗争妥协,这是一个很考验交付团队、甲方能力决心意志的大工程,十多年的光阴投入其中,不断入坑出坑,也沉淀萃取出很多最佳实践,有些落实在产品里、有些落实在管理制度、有些落实在解决方案、有些落实在企业文化里,成为数通畅联agileai敏捷集成的基因。
到此,以上就是小编对于软件开发soa架构的问题就介绍到这了,希望介绍关于软件开发soa架构的2点解答对大家有用。