前言
随着项目从使用者范围到用户体积的不断扩大,最原始的单体项目已经无法很好地支撑现代项目所需的要求。因此,项目的架构也随之不断演进。本文将介绍架构的演进过程,初步了解微服务架构。
一、项目扩展
AKF扩展立方体,取自畅销书《The Art of Scalability》,是AKF公司的技术专家对应用扩展的精妙总结。
X轴,通过水平复制,可以增加系统的节点数量,实现负载均衡和故障容忍。这种扩展方法既提高了系统的可用性和可伸缩性,又增强了系统的弹性和可靠性。
Y轴,通过业务拆分,可以将系统拆分成多个服务,实现服务化架构和微服务架构。这种扩展方式可以提高系统的模块化程度,降低系统间的耦合度,从而更好地应对复杂的业务需求和变化。
Z轴,通过数据分片,增加单个节点的处理能力,提高系统的性能和吞吐量。这种扩展方式能够轻松地满足系统的需求,同时也降低了系统复杂度和维护成本。
单纯的定义,可能不是很好理解,这里我们举个例子。大家应该都用过打车软件,比如滴滴。
假设这个打车软件从开始就是一个单体应用。在司机和乘客不多的时候,都可以正常使用。但是到了下班高峰期或者旅游高峰期,数据量忽然增长,打车软件就出现了问题。这个时候就可以通过水平复制来进行处理,多加几套相同的服务,支撑住用户的请求即可。为了让打车软件收益更多,推出了很多招揽司机和给乘客发送红包的促销活动,单个地区的数据量又再次暴涨。这时,就需要将目前的单体应用切分,推出乘客服务模块,司机服务模块,订单模块,投诉模块等等。以此来应对客户的各项需求。但随着用户群体的不断扩大,这个打车软件已经覆盖了不止一座城市,数据量再次增加。这个时候就可以通过地区进行切分,每个地区使用自己独立的数据库。
总之,AKF扩展立方体为我们呈现了一种系统化的应用扩展方法。遵循这三个扩展模式,我们能够构建一个无限扩展的单体系统,从而实现系统的持续增长和优化。
二、架构演进
通过以上的示例可以明显地观察到,在项目的扩展过程中,架构的不断演进是不可避免的。从单体应用到微服务应用,也是ORM到SOA的转变。
下面看下图中框架的一些基本特点。
ORM框架:
- 对象关系映射(ORM)框架用于简化应用程序和数据库之间的交互,将对象模型和关系数据库模型进行映射。
- 提供了编程接口来方便地进行数据库操作,避免了手动编写大量的SQL语句。 增加了开发效率,减少了对数据库操作的重复性工作。
- 支持对象化的数据访问,降低了数据库操作的复杂性,提高了代码的可维护性。
MVC框架:
- MVC(模型–视图–控制器)框架是一种软件架构模式,将应用程序分为模型、视图和控制器三个部分。
- 模型负责处理应用程序的业务逻辑和数据操作,视图负责呈现数据给用户,控制器负责处理用户的输入和控制应用程序的流程。
- 提供了良好的代码组织和可维护性,使得开发者可以更好地分离关注点,降低了耦合度。 使得前端和后端的开发可以更好地分离,提高了团队协作的效率。
RPC框架:
- 远程过程调用(RPC)框架是一种用于实现跨网络通信的技术,使得应用程序可以像调用本地函数一样调用远程服务。
- 提供了透明的远程调用,隐藏了网络通信的细节,使得分布式系统的开发更加简单和高效。
- 支持多种协议,如HTTP、TCP等,使得不同的系统可以进行跨语言和跨平台的通信。
- 提供了良好的性能和可靠性,使得分布式系统可以更好地进行扩展和集成。
SOA框架:
- 面向服务的架构(SOA)框架将应用程序分解为一组小型、相互独立的服务,每个服务都围绕着特定的业务功能进行构建。
- 提供了松耦合和高内聚的特性,使得系统更加灵活、可维护和可扩展。
- 支持服务的复用和组合,使得系统可以更好地满足不断变化的业务需求。
- 提供了良好的可伸缩性和可靠性,使得系统可以更好地适应不同的负载和故障情况。
通过上面打车软件的例子,结合几个框架的特点,不难看出,在项目构建初期,由于用户人数不足、服务过于单一,仅通过简单的ORM架构或者MVC架构就可以满足初期的项目需求。但随着业务扩大,用户增多,RPC架构和SOA架构逐渐取代之前的架构,以便满足更加丰富的用户需求。每个架构的演进,都是为了解决上一个架构带来的问题。
其实,面向服务的SOA架构,已经有了微服务架构的雏形。微服务架构是一种更加轻量化的面向服务的架构风格,它将应用程序划分为一组小型服务单元,每个服务单元都具有自己的独立部署、运行和监控能力。微服务架构的出现是解决SOA架构在大型组织中的复杂性问题。SOA架构演进成为微服务架构的关键是将服务分解为更小的服务单元,并使用容器化的方式进行部署和运行。
总结
通过对AKF扩展立方的阐述,说明了单体系统不断扩展的三个方向。随着项目的扩展,底层框架也在不断演进,来适应新的需求。为了项目有更好的可扩展性、可维护性和可靠性,同时也是为了可以从容应对技术栈的升级,微服务架构也就应运而生,成为云原生中的一员。
原文地址:https://blog.csdn.net/moon_ly/article/details/134718368
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_42218.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!