单体架构

网友投稿 928 2022-09-29

单体架构

单体架构

一、什么是单体架构

功能集中、代码和数据中心化、一个发布包、部署后运行在同一进程的应用程序,称之为单体架构应用,也叫单块架构应用。与单体架构对应的,是微服务架构。

前一篇文章说到三层架构,虽然系统分成3层,但最终运行,忽略负载均衡、水平扩展的情况下,仍然是同一台机器同一进程。

我估计,我们当前开发的信息系统,除了微服务架构,其他都是单体架构。SOA,由多个单体架构程序组成;微服务的每个服务,粒度往往更小。微服务架构中的服务,是指一个单体系统拆分出来的一个个模块,依附于容器进行独立运行,每个模块不算一个完整的系统,叫组件可能更合适一些。SOA架构,当然也提供许多服务,但它多个业务种类的服务,可能都是由一个子系统来提供的,比如登录服务,订单服务,都由一个所谓的专门提供对外接口的系统来完成。但微服务也算是SOA的一种,二者之间的分界线并不是很清晰的。假如SOA中,每个子系统只提供一种服务,那其实也就是微服务了。这是我的理解。

二、单体架构的优势

1、易于开发

2、易于测试

3、易于部署

4、易于水平伸缩 由于是一个程序,水平扩展无非就是新部署一个服务器节点而已。由于单体架构本身部署方便,因此水平伸缩比较容易。当然,前提条件是处理好负载均衡的策略。

三、单体架构面临的挑战

但现在,单体架构的优势已逐渐无法适应互联网时代的快速变化,面临越来越多的挑战。体现在:

1、维护成本增加 因为程序功能越来越多,代码量也越来越大,相应团队也变大,沟通成本、管理成本等也显著增加。开发过程中,调试,错误定位等时间变长,也不容易掌握全局功能,维护修改难度增加。

2、持续交付周期长 代码量增加,越来越复杂,编译、构建、部署时间变长,自动化集成、交付、部署的周期变长,与此同时,部署流水心运行过程中,开发人员能够提交代码的时间窗口变小。

3、新人培养周期长

4、技术选型成本高 单体架构系统倾向于采用单一技术栈,一经选定,后期再想调整或尝试,风险和工作量可能会很大

5、可扩展性差 单体架构程序,运行在同一进程;水平扩展,部署容易,但由于系统内部侧重点不同,不同模块间,数据缓存,计算量等差别较大,服务器必须按照最大需求量进行配置,成本较高;如果系统保存使用上下文,对负载均衡等策略配置要求也高。

6、构建全功能团队难 单体架构的开发模式,在分工时往往以技能为单位,比如数据库,服务端,前端,一个功能,需要跨工种跨团队沟通协调。系统越大,要求就越高。

四、总结

随着业务扩大,需求持续增加,单体架构很难满足业务快速变化的需要。一方面,代码的可维护性,扩展性,灵活性在降低,另一方面,系统的测试、构建、维护成本在增加,于是随着系统越来越庞大,最终需要进行改造和重构。

互联网时代,创新要求高,需求变化快,相对庞大和僵硬的单体架构,面临越来越多的挑战。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:聊聊小程序中怎么同步或异步操作本地存储(微信小程序处理同步异步的问题)
下一篇:iView 表单重置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~