洞察掌握android电视app开发中的安全与合规策略,提升企业运营效率
938
2022-09-29
单体架构
一、什么是单体架构
功能集中、代码和数据中心化、一个发布包、部署后运行在同一进程的应用程序,称之为单体架构应用,也叫单块架构应用。与单体架构对应的,是微服务架构。
前一篇文章说到三层架构,虽然系统分成3层,但最终运行,忽略负载均衡、水平扩展的情况下,仍然是同一台机器同一进程。
我估计,我们当前开发的信息系统,除了微服务架构,其他都是单体架构。SOA,由多个单体架构程序组成;微服务的每个服务,粒度往往更小。微服务架构中的服务,是指一个单体系统拆分出来的一个个模块,依附于容器进行独立运行,每个模块不算一个完整的系统,叫组件可能更合适一些。SOA架构,当然也提供许多服务,但它多个业务种类的服务,可能都是由一个子系统来提供的,比如登录服务,订单服务,都由一个所谓的专门提供对外接口的系统来完成。但微服务也算是SOA的一种,二者之间的分界线并不是很清晰的。假如SOA中,每个子系统只提供一种服务,那其实也就是微服务了。这是我的理解。
二、单体架构的优势
1、易于开发
2、易于测试
3、易于部署
4、易于水平伸缩 由于是一个程序,水平扩展无非就是新部署一个服务器节点而已。由于单体架构本身部署方便,因此水平伸缩比较容易。当然,前提条件是处理好负载均衡的策略。
三、单体架构面临的挑战
但现在,单体架构的优势已逐渐无法适应互联网时代的快速变化,面临越来越多的挑战。体现在:
1、维护成本增加 因为程序功能越来越多,代码量也越来越大,相应团队也变大,沟通成本、管理成本等也显著增加。开发过程中,调试,错误定位等时间变长,也不容易掌握全局功能,维护修改难度增加。
2、持续交付周期长 代码量增加,越来越复杂,编译、构建、部署时间变长,自动化集成、交付、部署的周期变长,与此同时,部署流水心运行过程中,开发人员能够提交代码的时间窗口变小。
3、新人培养周期长
4、技术选型成本高 单体架构系统倾向于采用单一技术栈,一经选定,后期再想调整或尝试,风险和工作量可能会很大
5、可扩展性差 单体架构程序,运行在同一进程;水平扩展,部署容易,但由于系统内部侧重点不同,不同模块间,数据缓存,计算量等差别较大,服务器必须按照最大需求量进行配置,成本较高;如果系统保存使用上下文,对负载均衡等策略配置要求也高。
6、构建全功能团队难 单体架构的开发模式,在分工时往往以技能为单位,比如数据库,服务端,前端,一个功能,需要跨工种跨团队沟通协调。系统越大,要求就越高。
四、总结
随着业务扩大,需求持续增加,单体架构很难满足业务快速变化的需要。一方面,代码的可维护性,扩展性,灵活性在降低,另一方面,系统的测试、构建、维护成本在增加,于是随着系统越来越庞大,最终需要进行改造和重构。
互联网时代,创新要求高,需求变化快,相对庞大和僵硬的单体架构,面临越来越多的挑战。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~