系统架构方法论的发展历程

四个阶段

1、面向过程

面向过程的软件开发是一种基于任务和流程的开发方法。该方法主要关注程序的输入、处理和输出过程,强调在程序中将整个过程分解为一系列步骤,并通过这些步骤进行数据处理和算法操作,以实现预期的功能。此方法通常借助流程图等工具描述程序流程,以帮助开发人员理解问题和设计解决方案。面向过程的软件开发相对简单,容易理解和实现,但不太适用于大型、复杂的软件开发项目。

此时开发人员通常会关注系统流程、数据流向、过程逻辑。业务流程图、数据流图、ER图是开发人员必须掌握的技能。

2、面相对象

面向对象是一种通用的系统设计与分析方法,它以对象为中心,将系统划分成相互独立的模块,每个模块包含一个或多个对象,这些对象之间相互协作完成系统的功能。面向对象的架构具有以下特点:

  1. 封装:将数据和方法封装在一个对象中,保证数据的安全性和完整性。

  2. 继承:通过继承实现代码的复用和扩展。

  3. 多态:同一个方法可以被不同的对象调用,产生不同的结果。

  4. 抽象:将共性的方法和属性抽象成一个父类,子类继承父类后可以继承这些共性的方法和属性。

面向对象的架构有助于提高代码的复用性、扩展性和可维护性,同时也便于团队协作开发,提高开发效率。

“面相对象”的方法论符合我们对真实世界认识,现在系统分析与设计绝大多数坚持OO的思路,UML就是标准。开发人员开始关注模块、对象(class)、关系;对象的属性与行为,状态机、活动图、时序图等。

3、面向服务的架构(SOA)

SOA stands for Service-Oriented Architecture. It is an architectural style that organizes software components as services, which can be accessed and used by other components in a distributed computing environment. The services are loosely coupled, meaning they can be used independently of each other, and can communicate with each other through standardized communication protocols. SOA promotes modularity, flexibility, and reusability of software components, making it easier to develop and maintain complex applications.

OO的思想不会过时,但是互联网兴起后,我们更关心系统提供了那些服务(service),我如何去使用这些服务,服务质量如何,服务之间如何通信。IBM提出了SOA的概念,系统架构再次进行升级,在SOA时代,架构不再是单纯的技术方案,它更多地关注企业的业务目标和价值,以服务为核心,采用模块化、组件化和松耦合的设计思想,通过服务的重用和组合,提高效率和降低成本。同时,SOA时代的架构也更加注重标准化和规范化,通过采用业界通用的标准,如SOAP、WSDL、UDDI等,实现系统之间的互操作和集成。

因此,SOA时代的架构既是一种工具,可以提高企业的IT管理效率和响应能力;又是一种方法论,可以帮助企业实现业务与技术的有机融合,提升竞争力。

4、云原生架构

云计算与SOA是一脉相承的。 在云计算中,几乎一切都是服务(Service):Iaas、Paas、Saas,是大家公认的服务形态;还有Daas、Faas等等。

基于云原生的架构是云计算系统的典型特征:

  • 弹性扩缩 
  • 高可靠性(因为具有高容错性、自恢复性)
  • 可监控、运维方便
  • 分布式、微服务
  • 基于服务API协作
  • .......

云原生架构是一种面向云计算环境的软件架构,其关键特点是利用容器化、微服务、自动化和服务网格等技术来实现高度弹性、可扩展和可靠的应用程序开发和部署。以下是云原生架构的关键技术和常用工具:

  1. 容器化技术:包括Docker、rkt等,用于将应用程序打包成可移植、独立的容器。

  2. 容器编排工具:包括Kubernetes、Docker Swarm等,用于管理和编排容器,实现高度可扩展和高可用性的应用部署。

  3. 微服务框架:包括Spring Cloud、Service Mesh等,用于实现应用程序的微服务化,提供服务发现、负载均衡、故障恢复等功能。

  4. 自动化部署和管理工具:包括Ansible、Chef、Puppet等,用于自动化部署和管理应用程序和基础设施。

  5. 服务网格:包括Istio、Linkerd等,提供动态路由、流量管理、安全管理等功能,以实现复杂的微服务应用程序的治理和管理。

  6. 日志和指标收集工具:包括ELK、Prometheus等,用于收集和展示应用程序的日志和指标,以支持应用程序的监控和故障排除。

  7. 安全工具:包括Vault、TLS等,用于保护应用程序数据的安全和隐私,以及保护应用程序的安全和稳定性。

架构方法论为什么有以上的历程?

是人类认知不断进步。最期初我们关注的是功能与过程,但是当“现实世界”投递到“计算机世界”后,我们意识到仅仅功能与过程是不足的,我们需要进行建模,并且努力做好模型映射,OO的方法论建模自然优于OP;当模型建好后,我们自然关注模型有什么价值,可以提供什么服务,SOA就来了;后面就是一切皆服务,云计算(Iaas、Saas、Paas)时代终于到来,至于微服务,则是对服务形态与粒度的一次重塑。

基于服务的思想不会改变。但是,还有哪些东西允许以服务的形式 提供出来?大数据、人工智能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/12257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第3章 配置与服务

1 CoreCms.Net.Configuration.AppSettingsHelper using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; namespace CoreCms.Net.Configuration { /// <summary> /// 【应用设置助手--类】 /// <remarks> /// 摘要&#x…

[华为OD] 最小传输时延(dijkstra算法)

明天就要面试了我也太紧张了吧 但是终于找到了一个比较好理解的dijkstra的python解法&#xff0c;让我快点把它背下来&#xff01;&#xff01;&#xff01;&#xff01; 文章目录 题目dijkstra算法的python实现python解答dfs解法dijkstra解法 题目 先把题目放出来 某通信网络…

RFID原理与应用课程笔记

一、RFID技术概述 1.rfid技术的特点&#xff1a; 1.1自动识别&#xff1a;1.光学符号识别&#xff08;OCR&#xff09; 2.条形码识别 3.智能卡识别 4.射频识别&#xff08;RFID&#xff09; 5.生物识别 &#xff08;指纹识别&#xff0c;语音识别&#xff09; 1.2.RFID自动…

面试手写实现Promise.all

目录 前言常见面试手写系列Promise.resolve 简要回顾源码实现Promise.reject 简要回顾源码实现Promise.all 简要回顾源码实现Promise.allSettled 简要回顾源码实现Promise.race 简单回顾源码实现结尾 前言 (?﹏?)曾经真实发生在一个朋友身上的真实事件&#xff0c;面试官让…

大数据面试题之Elasticsearch:每日三题(七)

大数据面试题之Elasticsearch:每日三题 1.Elasticsearch索引文档的流程&#xff1f;2.Elasticsearch更新和删除文档的流程&#xff1f;3.Elasticsearch搜索的流程&#xff1f; 1.Elasticsearch索引文档的流程&#xff1f; 协调节点默认使用文档ID参与计算(也支持通过routing)&a…

边缘计算在交通行业的应用有哪些?

随着我国城市化进程的不断加快。人民生活水平不断提高。随之带来的私家车辆增多导致的交通拥堵问题。智慧交通作为一种新兴的交通模式&#xff0c;对传统交通行业产生了深远的影响。 智慧交通利用边缘计算和物联网等先进人工智能技术&#xff0c;赋能传统交通行业数字化升级。…

[QT编程系列-34]:科学计算 - QT对python语言和python库的支持, C++与python混合编程

目录 第1章 QT对python语言和python库的支持 1.1 概述 1.2 C与Python的混合编程 第2章 PyQt &#xff08;在python语言环境下&#xff0c;提供QT的编程环境&#xff09; 2.1 概述 2.2 pyQT python代码示例 2.3 PyQt的一般使用方法 &#xff08;在python环境下使用QT&am…

无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。npm.ps1 cannot be loaded

目录 原因 解决方法 提示 查看当前的执行策略命令 改回默认值 "Restricted"命令 这个错误提示是因为您的系统禁止执行 PowerShell 脚本。 原因 现用执行策略是 Restricted&#xff08;默认设置&#xff09; 解决方法 以管理员身份运行 PowerShell&#xff1a;右键…

CollectionUtils工具类的使用

来自&#xff1a;小小程序员。 本文仅作记录 org.apache.commons.collections包下的CollectionUtils工具类&#xff0c;下面说说它的用法&#xff1a; 一、集合判空 通过CollectionUtils工具类的isEmpty方法可以轻松判断集合是否为空&#xff0c;isNotEmpty方法判断集合不为…

PyTorch Lightning教程二:验证、测试、checkpoint、早停策略

介绍&#xff1a;上一期介绍了如何利用PyTorch Lightning搭建并训练一个模型&#xff08;仅使用训练集&#xff09;&#xff0c;为了保证模型可以泛化到未见过的数据上&#xff0c;数据集通常被分为训练和测试两个集合&#xff0c;测试集与训练集相互独立&#xff0c;用以测试模…

【Visual Studio】无法打开包括文件: “dirent.h”: No such file or directory

VS2017/2019 无法打开包括文件: “dirent.h”: No such file or directory 1 “dirent.h”: No such file or directory 在windows下的VS2017/2019编译器中&#xff0c;发现无法打开“dirent.h”&#xff0c;主要是MSVC并没有实现这个头文件&#xff0c;但是在Linux这个头文件…

如何以管理员权限安装某个msi

介绍 如何以管理员权限安装某个msi 方法 要以管理员权限在控制台中安装一个 MSI 文件&#xff0c;你可以按照以下步骤操作&#xff1a; 打开命令提示符&#xff08;或 PowerShell&#xff09;&#xff1a;按下 Win R 键&#xff0c;在运行窗口中输入 “cmd”&#xff08;或 …

Chapter 8: Files | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介FilesPersistenceOpening filesText files and linesReading filesSearching through a fileLetting the user choose the file nameUsing try, except, and openWriting filesDebuggingGlossary Python for Everybody Exploring Data Us…

安全初级—正则表达式、This关键字、闭包

文章目录 正则表达式字面量字符元字符转义符特殊字符字符类预定义模式重复类量词符贪婪模式修饰符 This关键字使用场合使用注意点避免多层 this避免数组处理方法中的 this避免回调函数中的 this 绑定 this 的方法Function.prototype.call()Function.prototype.apply()Function.…

LLaMA 2: Open Foundation and Fine-Tuned Chat Models

LLaMA 2: Open Foundation and Fine-Tuned Chat Models Pre-trainingFine-tuningReward modelRLHF参考 Pre-training 数据层面&#xff1a; 预训练语料比LLaMA1多了40%&#xff0c;一共2T tokens&#xff0c;更关注了高质量数据的清洗。 其中数据不包含Meta产品与服务&#xf…

PHP8的注释-PHP8知识详解

欢迎你来到PHP服务网&#xff0c;学习《PHP8知识详解》系列教程&#xff0c;本文学习的是《PHP8的注释》。 什么是注释&#xff1f; 注释是在程序代码中添加的文本&#xff0c;用于解释和说明代码的功能、逻辑或其他相关信息。注释通常不会被编译器或解释器处理&#xff0c;而…

论文笔记:Fine-Grained Urban Flow Prediction

2021 WWW 1 intro 细粒度城市流量预测 两个挑战 细粒度数据中观察到的网格间的转移动态使得预测变得更加复杂 需要在全局范围内捕获网格单元之间的空间依赖性单独学习外部因素&#xff08;例如天气、POI、路段信息等&#xff09;对大量网格单元的影响非常具有挑战性——>论…

draw up a plan

爱情是美好的&#xff0c;却不是唯一的。爱情只是属于个人化的感情。 推荐一篇关于爱情的美文&#xff1a; 在一个小镇上&#xff0c;有一家以制作精美巧克力而闻名的手工巧克力店&#xff0c;名叫“甜蜜之爱”。这家巧克力店是由一位名叫艾玛的年轻女性经营的&#xff0c;她对…

iOS - Apple开发者账户添加新测试设备

获取UUID 首先将设备连接XCode&#xff0c;打开Window -> Devices and Simulators&#xff0c;通过下方位置查看 之后登录(苹果开发者网站)[https://developer.apple.com/account/] &#xff0c;点击设备 点击加号添加新设备 填写信息之后点击Continue&#xff0c;并一路继续…

靶机精讲之Brainpan1

nmap扫描 主机发现 端口扫描 服务扫描 -sT 说明用tcp协议&#xff08;三次握手&#xff09;扫描 -sV扫描版本 O扫描系统 NULL是图片 10000端口是个python服务 UDP扫描 脚本扫描 web渗透 目录爆破 显示/bin/目录有东西 gobuster dir -w /usr/share/dirbuster/wordlists/di…