【期刊信息】

Message

刊名:计算机光盘软件与应用
主办:中国大恒公司大恒电子出版社
主管:中国科学院
ISSN:1007-9599
CN:11-3907/TP
语言:中文
周期:半月
影响因子:0
期刊分类:计算机软件及计算机应用

现在的位置:主页 > 期刊导读 >

从编辑的角度看软件架构变迁

来源:计算机光盘软件与应用 【在线投稿】 栏目:期刊导读 时间:2021-07-26

作者:网站采编

关键词:

【摘要】1 软件架构的定义 软件架构在IT 界历来没有一个统一的定义,众说纷纭,国际著名的面向对象分析设计、UML、模式等方面的专家,敏捷开发方法的创始人之一马丁·福勒(Martin Fowler)就

1 软件架构的定义

软件架构在IT 界历来没有一个统一的定义,众说纷纭,国际著名的面向对象分析设计、UML、模式等方面的专家,敏捷开发方法的创始人之一马丁·福勒(Martin Fowler)就曾说过:“很多人都试图给‘架构’下定义,而这些定义本身却很难统一。”因为软件架构有组成派和决策派之分,每个流派对架构均有不同的看法和定义,如:

而本文又需要去探索软件架构变迁,因此从纯技术的角度出发,采用的是IEEE 软件工程标准词汇中的定义:

架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理(Principle)。

由此可见,软件架构中“架构”的是一种生态,最终目的是让软件好用,从而让软件更好地为业务服务,因此,本文主要分析的是软件架构在整个业务生态的作用,这里以电子商务为例,这一业务的核心利益点在于成交。而成交这一过程又包括:平台、消费者、产品、物流这4 个要素。在这4 个要素当中又会发生:

买卖,即平台吸引买家购买、卖家入驻。

合作,即平台与买家、商家、物流等外在合作者的合作关系。

服务,即平台要为相关人员提供良好的服务,促成成交。

因此,要实现电子商务,软件架构设计必须考虑如何更有利于让信息流、资金流、物流等得以顺畅。而软件架构又以访问量的逐渐增大或者突然激增而不断演变,接下来就会详细阐述这一演变过程。

2 单体软件架构

21 世纪初期,中国的电子商务刚刚萌芽,此时网站只是简单的ASP“个人网站系统”,四五位技术人员即可实现线上下单,只需要初步实现MVC 架构即可,如图1所示。

普通用户接触的是展现层,即界面。当普通用户在界面上执行一个操作时,业务层在背后就会读取数据,MVC(Model、View、Controller)软件架构就会处理用户操作请求,反馈操作结果到展现层。其中,Model 是核心程序,View 用于展现Model 数据,Controller 则控制着整个操作完成过程的交互。这种将核心程序、展现与控制分离的模式因其易维护、易重用、易管理,再加上有应用非常广泛的MVC 框架(Spring 等)而流行至今。

图1 基本的MVC 架构

随着电子商务日益普及,流量猛增,每日从几单到上千单,再到数万单,平台系统变得越来越复杂,平台架构也会不断演化,从ASP 架构到.NET 架构,.NET 和Java系统并行之后,再到基础Java 的整体系统架构,如图2所示。这种架构更为稳固。

图2 京东首页架构(引自《决战618》)

3 分布式软件架构

随着用户量和订单量的激增,原有架构已无法适应发展需求,因此在整个产业的发展期,软件架构发生了如图3 所示的变化。

由图3 可见,分布式应用架构是将系统“分而治之”以应对亿级乃至更多的流量和请求。分而治之所带来的问题:

如何将原有系统“分”成各个小系统(即微服务)?

如何管理各个小系统?

如何管理各个小系统的交互?

如何拓展系统?

如何保证各个小系统交互的安全性和可靠性?

……

这也是这个阶段架构师所必须面临的问题。

合久必分,分久必合,这一经典名言放在软件架构当中也是适用的。在软件系统发展到要承担海量的用户访问时,拆分是必然的,然后如何拆分能保证系统的可靠性又是一种艺术。微服务是其中一种拆分方法,即面向服务拆分,这是一种对用户极为友好且易理解的方案,每个微服务仅关注于如何很好地完成一个任务,每个任务代表着一个小的业务能力。以电子商务系统为例,我们要增加一种结账支付方式,则只需要修改“结账服务”即可,无须修改其他子系统,因为整体系统采用“微服务”架构,拆分为各个独立运行的子系统。

微服务中的“微”有好有坏,好处在于能快速交付软件,很多子系统可重用,非常适合电子商务这种互联网项目,但是坏处在于维护成本和难度均高,“微”意味着背后需要基础设施的巨量维护支撑。

4 云原生

当云于2006 年出现在国人视野之中发展至今时,软件于大众也如同水电一样使用了,云为软件架构带来的转变,当然就是翻天覆地的。软件架构在云上,享受云厂商提供的各种资源和服务,不再是从零开始开发软件系统,而是基于云厂商的基础设施与软件产品,改造和定制现有软件系统,让开发者更专注于业务本身,带来更多便利。比如,2019 年阿里巴巴双十一的2684 亿元交易全部发生在云上,可见云所能承载的算力可以是海量的;2020年新冠疫情之后,健康宝让大家能顺畅地行走于各地,大数据精准地防疫抗疫,这都得益于云的力量。


文章来源:《计算机光盘软件与应用》 网址: http://www.jsjgprjyyy.cn/qikandaodu/2021/0726/1497.html


上一篇:基于工程实例的非线性问题数值软件选取分析
下一篇:基于的智能光电搬运工程车设计