Java软件架构师结合实际项目经验总结软件架构的发展进程与原理(重点讲微服务架构怎么来的)

news2024/10/9 16:51:36

软件架构师结合实际项目经验总结软件架构的发展进程与原理

一、前言

笔者自己一直从事软件开发工作,算上大四实习1年,一直到今年整整12年,这期间有些人已经转了管理岗或者转行,已经完全不敲代码了!笔者依然在一线编码!
笔者做开发是因为出自对计算机的兴趣,不单单是为了谋生!是一种兴趣与爱好!
笔者的我,头发茂密,肌肉发达,发际线良好,并且没有皱纹与白发!我不喜欢穿格子衫,但是确实去哪里都背着电脑!33岁依然青春永在!我的计算机人生才刚刚开始!
这期间前前后后、左左右右接触了大大小小几十个不同行业不同业务实际应用的项目!笔者结合自己的实际项目经验总结一下软件的架构的近10年的发展进程,刚好笔者处于离职状态,正好为进军软件架构师的新的职业旅途做铺垫!

包括微服务架构当前应用很广泛,微服务服务到底是啥?微服务架构是怎么来的?为啥要用springcloud啊?dubbo与springcloud什么区别?
跟着笔者的职业生涯项目递进!

二、软件架构发展的演进

在这里插入图片描述

(一)单体架构

在这里插入图片描述

A B C D 代表功能模块,都放在一起!
优点:部署方便,开发简单!
缺点:随着功能研发越来越多,启动慢! 应用部署包越来越大!
可靠性差,功能都写在一起,会互相影响,D模块引起宕机,ABC都受影响!高耦合!
可伸缩性差
扩展性可维护性差
性能低

小型项目应用场景多,比如学校政务的网站系统、企业内部的OA系统、不对外的小型项目!就算宕机了也影响不是很大!

(二)垂直架构

在这里插入图片描述
垂直架构是指将单体架构的多个模块拆分为多个独立的项目,形成多个独立的单体的架构!

改进点:启动快一点!
可靠性有所提升
可伸缩性有所提升
扩展性可维护有所性提升
性能有所提升

缺点:重复功能太多,如果大家都需要公用的功能,就比较重复!
在这里插入图片描述
E模块重复,多个应用要重复的包含这个模块!比较臃肿!多个应用还得保证E模块的同步性,容易出错!
实际应用场景:银行、政务项目的数据推送共享的子项目经常用到这种架构!功能需求比较独立的项目!与主体项目拆分解耦单独部署!

(三)分布式架构

在这里插入图片描述
将垂直架构的重复模块拆分出来,当作独立服务项目,供其他服务的消费者消费,以实现服务的共享与重用!就是分布式架构!
比如:APP1与APP2都需要短信的功能,E就单独做短信的服务功能!APP1需要短信的时候就调用E、同理APP2需要的短信业务的时候也调用E实现!就算垂直架构的改进!
在这里插入图片描述
E为短信服务的提供者(生产者), APP1与APP2为短信服务的消费者!

分布式架构主要解决就算垂直架构的重复功能的短板!

实际应用场景:银行、政务系统的短信服务!企业内部的邮件服务!加密、统一认证服务!公用性的服务单独拆分作为独立服务提供其他服务消费者消费!小型的互联网OA、协同项目!

分布式架构应用场景实际应用场景比较多,并发数、用户量不是特别大的应用系统,公共的服务个数没有那么多,消费者服务也比较固化!

分布式架构存在的缺点:
服务的提供者如果变了地址,所有服务的消费者都要改,跟着调整比较麻烦!
如果这个服务的提供者很多个,这个服务器消费者调用的时候,就很乱!如果有几十个服务提供者,越多,服务的消费者调用就越来越乱,就像是一团乱麻!

这个弊端情况笔者亲自在早期的银行项目中真正感受过这个架构的弊端!比如一笔交易操作,需要调用多个服务的提供者,最终完成一个整体的事务!这个过程就就需要频繁服务消费,整个过程就会很乱,并且服务提供者的地址服务器会经常调整维护,可靠性或者未来的维护成本就比较高!

(四)SOA面向服务架构

在这里插入图片描述

概念:

SOA(Service-Oriented Architecture),即面向服务的架构!
SOA 将应用程序的不同功能单元(称为服务)通过定义良好的接口和契约联系起来。每个服务都具有明确的业务功能,可以独立地进行开发、部署、升级和维护。

企业服务总线(ESB)
ESB 是 SOA 架构中的核心组件之一,它充当服务之间的通信中介。
ESB 提供了服务的注册、发现、路由、转换和监控负载均衡,流量控制、加密过滤等功能,使得不同的服务可以方便地进行集成和交互。

笔者通俗的解释:
ESB企业总线是各个服务之间互相调用的中间件代理中介!
ABDCEF项目服务之间会互相调用,分布式架构是直接按服务的生产者与消费者的角色直接物理的调用,SOA架构是服务之间都经过这个ESB中间件来实现调用!
SOA是架构是把每个服务按照服务的提供者、消费者的划分好,并且接口契约已经定好公共化!

比如你想买房,有人卖房,你得通过房产中介去交易,
你是买房服务的消费者,卖房的人是服务的提供者,房产中介就是ESB企业总线!
房源业主的信息都注册在中介公司,你们买房的整个交易都要按照中介的定好的规范来执行,这个规范就是SOA的概念!中介公司有交易规范化的数据,就知道那些客户是优质客户,那些买卖的比较频繁,这就是对应到ESB的服务的注册、发现、路由、转换和监控!对于银行的企业总线就是数据挖掘息息相关!那些交易操作频繁,那些是优质客户,那些存在金融风险!

实际应用场景:
笔者亲自参与某银行的企业总线的构建过程,并且亲自对业务的进行服务治理!
用到IBM 的企业总线 ESB 产品 IIB(IBM Integration Bus)!因为亲自参与研发,对这个SOA架构理解还是比较深刻,因为真正参与做过!现在回看做过的项目,才能领悟核心思想!ESB产品比较重量级!

Dubbo框架也是基于SOA时代的产物!相对springcloud老一点!

(五)微服务架构

在这里插入图片描述

微服务架构是SOA架构的升华,微服务架构强调的一个重点是“业务必须彻底的组件化与服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用,这些小应用之间通过服务完成交互和集成!

微服务架构=80%SOA服务架构思想+100% 的组件化架构思想+80%领域建模思想

特点:对比SOA架构升华,比较侧重组件化服务化的维度!拆分更细小,轻量级!

springcloud是微服务时代的产物!SOA架构是上一代时期的产物!

微服务架构在 SOA 架构的基础上有以下几方面的改进:
微服务架构粒度更小,更轻量级!
在 SOA 架构中,服务的粒度通常较大。一个服务可能包含多个业务功能,较为复杂。
而微服务架构将服务粒度进一步细化。每个微服务专注于单一的业务功能,具有高度的内聚性。这样使得系统更加灵活,易于开发、维护和扩展。比如在一个电商系统中,SOA 架构下可能将订单管理、库存管理等多个功能集成在一个较大的服务中;而在微服务架构下,订单服务、库存服务等分别独立为一个个小的微服务,各自只负责特定的业务功能。

总结微服务与SOA架构类似,微服务颗粒感更小,更轻量级!比较新!

某些旧的维护的互联网项目用的是SOA架构(Dubbo框架的)产品,新型互联网高并发高用户量大的用的大多是是springcloud!比较成熟!

三、总结

把近10年软件架构发展进程与笔者自己的软件开发的工作历程一起合并起来讲一下!时代在变化,应用场景就在变化,技术革新迭代就非常快,但是基本的原理思想还是不变的!复杂问题都是多个简单的问题组合而来!
笔者也开启从一个“软件开发者”身份向“软件架构师”新职业征程进军!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

tp5 fastadmin列表页图片批量压缩并下载

记录&#xff1a;tp5 fastadmin对列表页选中数据的多张图片进行压缩并下载。 html代码 <a href"javascript:;" class"btn btn-info btn-apple btn-disabled disabled {:$auth->check(zhuanli/zhuanli/xiazai)?:hide}" title"批量下载专利证书…

关于学习神经网络的一些感悟

intro 本文主要是笔者学习神经网络时一些思考的感悟&#xff0c;由于本人对人工智能方向了解甚浅&#xff0c;所以记录的理解会有不正确的地方&#xff0c;欢迎批评指正&#xff01; 深度学习与传统机器学习算法的一个显著区别&#xff1a;对于传统的机器学习算法&#xff0c;可…

Sealos Devbox 发布,珍爱生命,远离 CI/CD

水滴攻击太阳系用的是最原始的攻击方式&#xff1a;撞击&#xff01;却又如此有效率。 当我们搞了一堆容器、编排、CI/CD、DevOps&#xff0c;发明了一大堆没什么用的名词之后&#xff0c;最终发现这些操作都是花里胡哨&#xff0c;让开发者越陷越深。 最终你会发现一个真理&…

2句话说通 一体化模型与矢量模型的不同

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道࿰

Mendix 创客访谈录|平台造平台真的可以吗?– 记西门子自由流业务系统的实战

本期创客 瞿凯歌 北京无尖科技有限公司 实施部技术负责人 大家好&#xff0c;我叫瞿凯歌&#xff0c;毕业于计算机科学技术&#xff0c;7年软件开发经验。目前任职于北京无尖科技有限公司&#xff0c;担任实施部技术负责人。 我们公司专注于企业数字化转型业务&#xff0c;利用…

Java8新特性, 函数式编程及Stream流用法大全

用了多少年的java8了&#xff0c;Lambda表达式和stream流也经常用&#xff0c;但是也仅限于某些用法比较熟练&#xff0c;看见了 Function、Consumer 等函数式接口还是一脸懵逼&#xff0c;现在来全面总结一下java8这些新特性&#xff0c;也为自己后续查找做个备忘。如果你只是…

体系指南|如何从0到1建设一套软件测试CMA体系

软件测试实验室在申请CMA测试认证时&#xff0c;需要根据CMA的要求&#xff0c;建立一套质量管理体系&#xff0c;还需要参照相关标准建立一套技术体系。本文我们重点介绍质量管理体系的建设。这部分内容我们可以参照《检验检测机构资质认定能力评价 检验检测机构通用要求》中&…

Python神仙级思维导图+入门教程(非常详细,入门从这篇开始)

入门 Python 绝非难事&#xff0c;但如何让自己坚持学下去是如今很多学习者面对的一大难题。为了避免像背单词永远停留在 abandon 一样&#xff0c;积极展开自救的小编在尝试过一些入门方法后&#xff0c;终于找到了一个超级棒的一份思维导图视频教程 这是我刚开始学习python时…

谷歌发布建筑数据,高度误差达惊人的1.5米

建筑数据对规划人口增长、应对危机和深入了解城市化带来的影响有很大的帮助&#xff0c;这里为大家分享谷歌全球南方带高度的建筑数据集。 数据介绍 到2050年&#xff0c;全球城市人口预计将增加25亿&#xff0c;其中近90%的增幅将出现在亚洲和非洲的城市。 但恰巧是这些地方…

World of Warcraft [WeakAuras](WA)

https://addons.wago.io/addons/weakauras WeakAuras-5.13.1 复制到自己游戏的AddOns目录 D:\Battle.net\World of Warcraft\_classic_\Interface\AddOns 启动命令 /wa

职场基本功:击退欺凌

文章目录 引言I 什么是职场欺凌?不友好行动确认对方是不是真的有敌意II 反击欺凌信任领导找到敌营里的薄弱点,击溃打手,各个击破。别急着跟欺凌者和解III 应对特殊情况的欺凌引言 面对职场欺凌,有明确敌意的。这时候需要你反击,千万别认怂。 但不是所有的欺凌行为都值得我…

HTML5实现古典音乐网站源码模板1

文章目录 1.设计来源1.1 网站首页1.2 古典音乐界面1.3 著名人物界面1.4 古典乐器界面1.5 历史起源界面2.效果和源码2.1 动态效果2.2 源代码源码下载万套模板,程序开发,在线开发,在线沟通作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/142…

一键升级 Win10 22H2 19045.5011 正式版:含9项改进和修复!

今日&#xff0c;系统之家小编给您分享2024年10月最新更新的Windows10 22H2正式版系统下载&#xff0c;该版本系统基于微软官方最新Windows10 22H2 19045.5011 64位专业版进行离线制作&#xff0c;安全无毒&#xff0c;集成万能驱动&#xff0c;且本次更新包含了9项改进和修复&…

粤港澳脑病中医药科创大会召开,助力脑病相关中药研发、转化

9月28日&#xff0c;由广州粤港澳脑病中医药产学研技术创新联盟、广州市脑病中医药大健康产学研促进会与暨南大学联合主办&#xff0c;暨南大学中医学院及中医药调控脑-外周稳态与大健康粤港澳联合实验室承办&#xff0c;中国生理学会中医药与脑稳态调控专委会、生物活性分子与…

【含开题报告+文档+PPT+源码】基于springboot的迎新系统

开题报告 大学迎新系统是为了满足大学在新生入学时的信息化处理需求而开发的系统。在传统方式下&#xff0c;我们新生接待工作是需要新生报名表&#xff0c;就使得我们需要耗费大量的纸张&#xff0c;这将造成资源浪费。在接待新生的时候需要让新生勾选、填写大量的表格&#…

电源管理芯片PMIC

一、简介 电源管理芯片&#xff08;Power Management Integrated Circuits&#xff0c;简称PMIC&#xff09;是一种集成电路&#xff0c;它的主要功能是在电子设备系统中对电能进行管理和控制&#xff0c;包括但不限于以下几点&#xff1a; 电压转换&#xff1a;将电源电压转换…

软件工程师必备技能:掌握Postman接口自动化测试

Postman 是一款功能强大的API开发工具&#xff0c;它允许用户轻松地发送HTTP请求&#xff0c;管理、测试和记录APIs。在当今的软件开发中&#xff0c;API的测试是一个至关重要的环节&#xff0c;因为它确保了不同软件模块之间的正确交互。Postman的接口自动化测试功能&#xff…

ultralytics yolo segmentation 分割 示例:加载官方segmentation 模型进行推理

Ultralytics YOLO 是计算机视觉和 ML 领域专业人士的高效工具。 安装 ultralytics 库&#xff1a; pip install ultralytics 该示例的模型地址&#xff1a;ultralyticsyolosegmentation分割模型资源-CSDN文库 大家也可以在官方连接下载&#xff0c;因为有时下载容易断开链…

【python实操】python小程序之魔法方法(__init__方法、__str__方法、__del__方法)

引言 python小程序之魔法方法&#xff08;__init__方法、__str__方法、__del__方法&#xff09; 文章目录 引言一、__init__方法1.1 题目1.2 代码1.3 代码解释1.3.1 逐行注释1.3.2 代码执行过程 二、__str__方法2.1 题目2.2 代码2.3 代码解释 三、__del__方法3.1 题目3.2 代码3…

C# HttpClient请求URL重定向后丢失Authorization认证头信息 .Net Core Web Api

问题: 使用.Net 入库Doris请求FE端口后,FE响应重定向到其他BE节点出现的认证失败问题。 搜查官方文档后发现&#xff1a; HttpWebRequest.AllowAutoRedirect Property (System.Net) | Microsoft Learn 微软提供的http类库HttpClient &#xff08;HttpWebRequest\WebClient已不…