01-应用扩展和架构演进


前言

随着项目从使用者范围到用户体积的不断扩大,最原始的单体项目已经无法很好地支撑现代项目所需的要求。因此,项目的架构也随之不断演进。本文将介绍架构的演进过程,初步了解微服务架构。

一、项目扩展

AKF扩展立方体,取自畅销书《The Art of Scalability》,是AKF公司的技术专家对应用扩展的精妙总结。
在这里插入图片描述

这一理论为我们揭示了单体系统无限扩展的三个重要维度。

  • X轴:水平复制
  • Y轴:业务拆分
  • Z轴:数据分片

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扩展立方的阐述,说明了单体系统不断扩展的三个方向。随着项目的扩展,底层框架也在不断演进,来适应新的需求。为了项目有更好的可扩展性、可维护性和可靠性,同时也是为了可以从容应对技术栈的升级,微服务架构也就应运而生,成为云原生中的一员。

  • 39
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值