架构设计的核心:从多个维度理论分析@[TOC]一如何实现高内聚低耦合的架构内聚就是,一个模块之间,各个组件各个类

内聚就是,一个模块之间,各个组件、各个类之间的关系,耦合就是一个模块和另一个模块或者多个模块之间的交互关系。

边界分多层,包含系统边界、领域边界;子系统(子域)边界、模块边界、聚合边界;分层边界。

可以通过DSSA、ABSD、定制的方式对边界进行划分。

(1)功能内聚:功能模块中,每一个组成部分都执行同一个功能并且只执行这一个功能。

(3)通信内聚:模块各部分使用相同输入或输出数据,本身两个部分并没有什么相同的功能。比如说通过ID查询用户的基本信息和用户的订单信息,输入是相同的。

(4)过程内聚:模块各部分受同一控制流支配。

(6)逻辑内聚:模块内各组件逻辑功能类似,逻辑的处理由传输给模块的判断参数来确定(flag字段标识)。

(7)偶然内聚:模块中各组成部分彼此没有关联。

(2)数据耦合(推荐):两个模块之间,用数据值(参数)进行耦合。可以是应用的直接调用,可以是API的发送,可以是消息队列的沟通。这种耦合是模块间影响非常小的耦合。

(6)公共耦合:一组模块都访问同一全局数据区。公共耦合是一种不良耦合,它给模块维护、修改带来障碍。公共耦合的弊端:软件可理解性降低,模块间关系复杂;公共软件可维护性降低,修改变量名和属性困难;软件可靠性降低,公共区域和全部变量无保护措施。

(7)内容耦合:一个模块直接操作或修改另一模块的内部数据。这就意味着一个模块不通过正常入口访问另一个模块,这是最糟糕的耦合清空,必须避免。

一个模块对另一个模块的调用。一个模块向另一个模块传递的数据量。一个模块施加到另一个模块的控制的多少。模块之间接口的复杂程度。

多用接口隐藏实现的细节。遵循一个定义只在一个地方出现。(公共的model最好放在公共模块中)少用全局变量。少用public,多用private关键字,对外减少暴露。多用设计模式。避免直接用SQL语句操作数据库,尽量封装一个Dao层。避免直接操作或调用其他模块或类(内容耦合),如果要调用尽量用API方式。尽量使用数据耦合,少用控制耦合。限制公共耦合的范围。

模块的功能划分尽可能的单一(单一职责原则)。模块只对外暴露最小限度的接口(接口隔离原则)。一切向功能内聚靠拢,杜绝偶然内聚。

对于无状态应用来说,多个节点进行克隆复制,通过负载均衡器可以很容易的进行服务器的扩展。对于有状态应用,我们可以先将状态剥离(比如说Session使用redis共享)。

使用横向克隆的方案,可以很轻松的实现应用的弹性扩缩容,根据当前服务器压力动态扩缩容;实现性能规划,测试环境1台服务器支持1000QPS,生产上就意味着10台服务器支持1wQPS;实现业务解耦,业务规模扩大可以扩充服务器来进行支撑;实现环境同构,测试环境与生产环境参数一致,不存在环境不一致的情况。

前端应用,对URL进行拆分,也就是微前端。后端应用,拆分为子系统、模块、聚合,实现应用的解耦。后台数据相应的进行Y轴分割。

使用服务分割,可以实现服务互不干扰,实现服务互相隔离。实现资源迭代分配,应用的功能逐渐完善,服务器资源也对应着慢慢增加。实现数据一致性,相同的业务都将数据分配在相同的服务器上,所以数据一致性可以得到保障。但是缺点,业务耦合性强,需要根据不同的业务进行动态调整。

根据用户UserId分割(hash或者其他),多节点水平复制。根据地理位置分割,Set单元化。根据产品ID分割,SPU/SKU。

使用特征分割,可以加速查询搜索。Z轴也可以支持有状态服务。实现业务解耦。实现环境同构。

传统的关系型数据库,如果采用强一致性,但是只能扩展有限的几个节点。如果想要实现数据库的水平复制,通常来说会实现读写分离,或者1写多读(binlog+cdc)。NoSQL数据库,天生就支持多副本replica。缓存读取也可以支持多副本横向扩展,比如redis。

水平复制可以通过CAP(最终一致性)、CDC便捷复制来实现数据的高可用。但是多副本会造成存储空间的浪费,相当于用空间来换可用性。

配合应用,对业务进行库表分割。表、库享有独立的数据库集群/节点。库表分割有点相似于微服务的按业务分割,相当于数据跟着服务走。

通过库表分割,可以实现数据故障隔离、对资源进行迭代分配,数据的强一致性。但是业务耦合性很强,每个库与业务强绑定。

通过各种key的id,通过哈希取模来决定数据存放在哪一个数据区。

比如说传统的关系型数据库,分库分表可以使用的MyCat。非关系型NoSQL数据库,天然支持多分片(shard/chunk)。

通过哈希取模的方式,可以加速查询搜索,扩展无上限,不需要考虑业务,每一个分片都是强一致性。

通常来说,生产环境会通过XYZ轴混合使用。

康威定律是马尔文·康威在1967提出的,写在论文里发表出来。它的出名是被“软件开发神书”《人月神话》引用并总结成四条定律,成为软件架构设计的神律。

第一定律,设计系统的架构受制于产生这些设计的组织的沟通结构。沟通成本=N(N-1)/2,N代表沟通的总人数沟通的问题会影响系统设计,软件架构最终会是沟通(组织)结构的映射。

第三定律,线性系统和线性组织架构间有潜在的异质同态特性。什么样的系统对应什么样的组织,什么样的组织设计出什么样的系统。架构由组织关系决定,架构服务于技术,同样服务于组织中的人

亚马逊的“两块披萨”团队机制。

组织中的人,每天目标一致:吃披萨。

组织人员较少:贝索斯推荐幸运数字:6、12

配合应用和数据的Y轴,通过业务的分割,对组织也进行扩展。

ITIL流程管理、ITSM服务管理、CI/CD、JAD联合架构设计、6西格玛、ARB架构评审会。

CMM是一种用于评价软件承包能力并帮助其改善软件质量的方法,侧重于软件开发过程的管理及工程能力的提高与评估。CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。

SMART原则(S=Specific、M=Measurable、A=Attainable、R=Relevant、T=Time-bound)是为了利于员工更加明确高效地工作,更是为了管理者将来对员工实施绩效考核提供了考核目标和考核标准,使考核更加科学化、规范化,更能保证考核的公正、公开与公平。

制定的过程也是自身能力不断增长的过程,经理必须和员工一起在不断制定高绩效目标的过程中共同提高绩效能力。

目标设定:业务指标(UV、PV、交易量),系统目标(CPU、内存、磁盘、网络),应用目标(TPS、QPS、Session、并发数)。

规划方法:容量评估方法(基线、水位)。(在此不展开讨论,后续单独成篇讨论)

实战:压测、监控和预测。

测试手段:标准(历史为基),环境(QA、准生产、生产),定义(测试案例),执行(自动化),分析(统计),报告(录入),迭代(反复)。

测试核心思想:负载测试是一个长期的过程。

测试目标:发现系统的拐点(失效点)、远高于正常负载。

测试手段:目标,关键服务(关键服务、负载测试瓶颈),负载(大量测试数据),环境(减少差异),监视,执行,分析(录入)。

性能监控:(利用普罗米修斯)时序数据,纬度聚合,性能指标,报表告警。

链路监控:全局唯一ID——TraceID、SpanID、DyeID等,出错归因,延时瓶颈。

业务追踪:业务、应用、系统关联、告警去重。

APM监控+扩缩容决策引擎(AutoScale策略)+资源管理(虚拟机、容器、网络负载、Serverless)。

通常我们把读缓存成为Cache,写缓存称为Buffer。

什么是写Buffer?比如说每次写100字节的一个IO,我们可以把十个写Buffer合成一个,也就是1k,一次性写进去,这就是写缓存的一个技术实现。写缓存三大技术:网络缓存、应用缓存、对象缓存。能用网络缓存就用网络缓存解决,不行才用应用缓存,最后才是对象缓存。

什么是读缓存呢?读缓存的技术比写缓存远远复杂的多,也是我们主要他讨论的。

网页缓存:在用户浏览器中缓存的网页数据(Cache-Control),用户打开浏览器不需要访问网站,直接从浏览器读取到缓存打开网页。

CDN缓存:边缘缓存(Edge),CDN根据用户所在的位置,解析到最近的机房的IP地址,访问最近的服务器,提高响应速度。在CDN节点上做缓存,也是一种缓存的实现方式。

使用异步,可以:减少等待:磁盘、SQL、API、URL;Y轴扩展:微服务解耦、Y轴扩展更随意;削峰填谷:泊松分布、排队等待。

X轴扩展:吞吐能力和QPS明显提升;Y轴扩展:出错率明显降低;Z轴扩展:延时降低、TPS/QPS明显提升。

使用缓存:需要搭建CDN、多机房、额外的内存消耗等等,提高了大量的成本。使用异步、分布式:需要额外拆分新的服务,使用新的中间件,增加了系统的复杂性,提高了开发成本、维护成本、服务器成本。

将不重要的功能暂停,以全力应对关键业务。

CAP理论,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、PartitionTolerance(分区容错性),不能同时成立。

虽然CAP理论定义是三个要素中只能取两个,但放到分布式环境下来思考,我们会发现必须选择P(分区容忍)要素,因为网络本身无法做到100%可靠,有可能出故障,所以分区是一个必然的现象。如果我们选择了CA而放弃了P,那么当发生分区现象时,为了保证C,系统需要禁止写入,当有写入请求时,系统返回error(例如,当前系统不允许写入),这又和A冲突了,因为A要求返回noerror和notimeout。因此,分布式系统理论上不可能选择CA架构,只能选择CP或者AP架构。

对于多数大型互联网应用的场景,主机众多、部署分散,分区容忍性是基本要求,否则就失去了价值,而且现在的集群规模越来越大,所以节点故障、网络故障是常态,而且要保证服务可用性达到N个9,即保证P和A,舍弃C(退而求其次保证最终一致性)。虽然某些地方会影响客户体验,但没达到造成用户流程的严重程度。

应用集群:Unix(PowerHA)、Linux(RedHatClusterSuite)、第三方(VeritasClusterServer)中间件集群:WebLogic、WebSphere数据集群:OracleRAC、DB2pureScale、GeneralParallelFileSystem、磁盘RAID阵列

分布式应用、分布式中间件、分布式数据库。

需要解决一致性、脑裂、雪崩、击穿等问题。

(详细内容后续再谈)

第一道防线:预防。经常做数据备份、快照数据,应用与系统架构需要非常演进,N与N-1版本共存,彻底的变更审核。第二道防线:发现。全自动的系统监控,全自动的脚本,检测应用于系统的正常、异常行为。第三道防线:修复。应用与系统的回滚,一键恢复、自动恢复、快速数据恢复。

用户所有的业务系统同时在同城的两个数据中心运行,同时为用户提供服务,当某个数据中心的应用系统出现问题时,有另一个数据中心的应用来持续的提供服务。好处是服务能力是双倍的,且对用户来说不可感知。

将同一个网络扩展到多个数据中心,并且实现服务器和应用的虚拟化数据中心互联技术:随着高可用远程集群技术以及虚拟机迁移技术在数据中心容灾以及计算资源调配方面的广泛应用,在数据中心间需要大二层网络连接。(比如说移动+联通双活)

是一种独特的存储技术,使信息能在数据中心内部以及数据中心之间共享、存取或移动,从而将各种不同的存储系统联合成为单一资源。它允许位于地理上分离站点的存储系统同时进行数据存取,对客户透明,且保证了数据可靠性和可用性。

异地之间采用双活目前不够现实。因为尚无很好的技术能够实现远距离的实时数据同步。当两个站点距离超过100公里以上,数据同步只能采用数据异步的存储数据复制的方式。

指两个数据库系统可以在相隔比较远的情况下同时运行、支持相同的应用负载,并且在一方出现故障时能够迅速切换到另一方(分钟级),保证业务高可用。

技术路线选择:SAN网络层容灾。优势是数据一致性通过SAN层数据复制功能保证、适用于异构存储环境、多平台存储汇聚资源池统一管理、不占用主机资源及性能、对上层应用及数据库透明、远程异步FCIP。但是缺陷是可能是新的故障节点、可能产生性能瓶颈。(小型项目用)

技术选择路线:存储层容灾。数据一致性由存储控制器数据复制机保证、不占用主机资源及性能、对上层应用及数据库透明。

在应用处理层面上实现了完全冗余,交易通过负载均衡自动路由到不同的应用服务器,但是,应用层面上还是依赖在某一个数据库。

纸上谈兵:核查性测试(看文档)、结构化的排练(读文档)。大事化小:模拟测试(非生产)、并行测试(生产)。搞大了:全中断测试(切换和回切)。

DRP:BCP的绝对主体。其他专题:本地高可用、数据逻辑保护、系统安全运营。非技术性:人员、沟通、财务、损失估算。

SRE文化、混沌工程、监控、错误预算、业务高可用评估、系统高可用评估。

可用性(Avaliability)、完整性(Integrity)、机密性(Confidentiality)。

Zachman、P2DR、Sabsa、IPDRR、IATF。

自适应安全、网络韧性、COBIT、NIST、ITIL、六西格玛。

安全测试:SAST静态测试、IAST交互式测试、安全扫描。威胁模型:攻击树分析、DREAD风险评估。渗透测试:红蓝对抗、白帽黑帽。

人员安全(保安)、访问控制(锁、墙)、入侵检测(摄像头、看门狗)。

访问权限:责任分层、最小特权。数据加密:对称秘钥、非对称秘钥、数字签名。数据保护:数据逻辑保护、数据高可用。

网络攻击:DDoS拒绝服务、DNS劫持、重放攻击、ARP地址解析欺骗。网络防御:WAF应用防火墙、IDS/IPS入侵检测和防御、VPN/IPSEC安全通道加密、PGP邮件加密、TLSHTTP隧道加密。

操作系统安全:病毒、蠕虫、特洛伊木马、零日攻击、补丁。数据库安全:防止SQL注入、防止推理攻击。Web应用安全:防止XSS跨站点脚本攻击、防止重放攻击。

AES对称加密、PKI基础架构、JWT签名、WAF应用防火墙、IDS入侵检测、RBAC访问控制、SAML安全断言、SQL注入预防、XSS跨站点攻击防治。

基础设施(云平台或者虚拟机)、系统资源(容器)、网络引流(人才)。

应用无状态;常见编程方式为函数式编程、响应式编程;常见业务模式:事件驱动、流驱动;从0资源->无穷大。

观察(CPU等资源)、决策、执行(资源扩展)。

将有状态应用进行区分:共享磁盘模式和ShareNothing模式。共享磁盘模式->变成无状态应用。ShareNothing模式->采用合适的集群管理方式和CAP目标。

结构化数据->考虑共享数据库。非结构化数据->考虑共享缓存、对象存储、搜索引擎等。减少文件系统依赖(如CDN直接对接对象存储等)。

CAP-优化可用性和分区性,弱化一致性。集群管理-优化枚举、仲裁、阶段提交、副本、分片管理。资源预配置。

THE END
1.2025计算机毕设选题推荐小程序方向基础功能+创新点设计?技术范围:主要包括Java、Vue、Python、爬虫、小程序、安卓app、大数据、机器学习等设计与开发。 ?主要内容:免费功能设计、开题报告、任务书、功能实现、代码编写、论文编写和辅导、论文降重、答辩答疑辅导。 文末有博主名片哦 正文: 2025计算机毕设选题推荐【小程序方向】【基础功能+创新点设计】 https://blog.csdn.net/weixin_53920044/article/details/144360183
2.基于Web技术的跨平台桌面应用开发解决方案该架构沿袭了多进程设计,与当代网络浏览器的设计颇为相似。在此架构中,开发者可以掌控主进程与渲染进程。主进程主要承担着窗口管理、生命周期管理以及原生API等关键任务。 Tauri同样采用了多进程架构,这是当前桌面应用开发领域在架构设计上的主流方向。然而,在具体实施过程中,仍存在一些区别。这些区别在开发过程中主要体https://www.7claw.com/2800002.html
3.计算机科学与技术基于安卓的网上点餐软件的设计与实现.docx随着计算机技术的不断更新变化,尤其是安卓操作系统的普及,移动互联网业务正在迅速蓬勃发展。专家的调查和研究表明,传统的餐饮点餐模式已经无法适应市场的高速发展。因此,系统结合安卓开发技术以及使用MySQL作为数据库设计完成基于卓的网上点餐软件的设计与实现,本文详细叙述了当前网络市场用户点餐的需求现状,?https://max.book118.com/html/2024/0721/8015057064006113.shtm
4.平台模式搭建+商业模式设计+互联网思维,微三云软件开发服务平台模式搭建+商业模式设计+互联网思维,微三云软件开发服务 重要介绍: 微三云云平台多场景应用 莞云 运营 总监余建峰首先对晶抖云的功能体系做了全面的展示 , 总结电商版块仍是 莞云 的主攻方向 , 而当前社交电商正成为重构零售新生态的风口。微三云如何输出适配商业方案 微三云营销总监刘缘通过回顾公 司产 品发展史http://dongguan.11467.com/info/21309986.htm
5.智能家居论文[必备15篇]但据设计者介绍,它的设计主要着眼点仍然是在房屋居住者的基本需求上:在房屋前门配备的电子钥匙和电子眼保证了屋主不在时房屋的安全;监控摄像机分散的放置在房间的周围,户主可以通过互联网或移动电话随时随地监视到每个房间的情况;另外,为了保证房间的清洁卫生,房间的底层还设计有垃圾清理通道,将前面所提到的自动除尘https://www.ruiwen.com/lunwen/7952983.html
6.软件生活教程网站源码设计素材等实用互联网资源的交流平台新老鸟虚拟资源网是一个破解软件、生活教程、网站源码、设计素材等实用互联网资源的分享平台。https://xinlaoniao.com/
7.基于jsp人才管理系统的计算机毕设源码+论文随着互联网本身的不断发展创新,网络招聘模式有很大的创新空间,而这种模式创新的背后则是充分利用网络的特点更有效率的满足用户的需求,满足用户社会化、个性化和方便便捷的需求,与传统招聘渠道相比有明显的优势。在中国这样一个高速发展的市场,网上招聘的潜力还远远没有显现出来,存在着巨大的上升空间,需要我们共同努力和把https://blog.51cto.com/u_12508287/12117827
8.东华软件笔试题目在日常学习和工作中,我们或多或少都会接触到试题,借助试题可以为主办方提供考生某方面的知识或技能状况的信息。什么类型的试题才能有效帮助到我们呢?下面是小编帮大家整理的东华软件笔试题目,希望对大家有所帮助。 东华软件笔试题目 1 1、TCP是互联网中的(1 A)协议,使用(2 C)次握手协议建立连接。当主动发出SYN连https://www.yjbys.com/qiuzhizhinan/show-488720.html
9.入行14年,我想我应该有资格来说一说设计了优设网互联网软件设计和其他设计有什么差别? 很遗憾这么多年我基本都在互联网IT相关的数字设计领域里,我也很想跨界到服装及建筑设计,但隔行隔山,最终只能就自己房子捣腾一下室内设计。另外受宝马邀请,前两年也有机会以顾问身份参与到MINI的车载智能产品的创意设计中去。 https://www.uisdc.com/experienced-designer-talk-about-designing/
10.2023上半年软考中级系统集成项目管理工程师考试大纲:基础知识4.1.2 信息系统设计 * 方案设计 * 系统架构 4.1.3 软件工程 * 软件需求分析与定义 * 软件设计、测试与维护 * 软件质量保证及质量评价 * 软件配置管理 * 软件过程管理 * 软件开发工具 * 软件复用 4.1.4 面向对象的系统分析与设计 * 面向对象的基本概念 https://www.hqwx.com/web_news/html/2023-1/16741863107905.html
11.江西农业大学软件工程专业好不好(全国排名专业介绍网友评价【培养目标】移动互联技术方向注重于培养学生系统地掌握移动通信和互联网及软件开发的基本理论、知识、技能与方法,获得移动通信和互联网设计方法、开发方法和工程管理方法的基本训练,具有互联网技术方面的研究和开发的基本能力。 【主干课程】大学英语、马克思主义基本原理、C语言程序设计、数据结构、数据库原理及应用、Javahttps://www.027art.com/jiangxibenke/HTML/13962316.html
12.澳大利亚Blastlogic露天爆破设计软件澳大利亚Blastlogic露天爆破设计软件-天河道云|基于矿山工业互联网的平台企业-集中处理所有爆破数据,并能够与领先的钻孔导航系统连接,提供众多满足用户操作需要的解决方案。https://www.thmim.com/product/106.html
13.机构简介学员还要根据自己的经济条件选择学校,笔者个人认为太过昂贵的收费学校适合专业人员短期深造,零基础学员还是选择中等学校为好。之后学员还要掌握如何做一个营销型的设计师。设计方案做出来了,怎样推销给客户。最终能够让客户接受你的设计方案。 因特驰公司的互联网金融软件设计师培训,主要是培训哪些人的?https://m.zysm.cn/school-19057/about.html
14.西安高新技师学院学校推荐就业去向:大型义齿制作企业、高端义齿工作室从事义齿设计、制作、质检等配合口腔医师美学修复的椅旁技师、咨询师;大型医疗机构口腔科口腔修复义齿制作人员;医疗机构义齿质量检验人员;社区医疗机构从事口腔预防保健等;整形、整复技术工作人员。 优秀毕业在岗生 部分企事业合作单位 8、西安高新技师学院互联网工程系 专业带http://www.zhijiaow.com/ShopStoreMallView_14740.html
15.浙江省住建厅发布《浙江省智能建造技术装备应用目录(第一版围绕智能建造技术与管理,推广适应行业(产业)协同的设计、生产、施工、运维数字系统,探索智能技术方式,融合创新链、产业链、资金链、人才链,培育全专业、全过程数字生态,推动建筑全生命期的数据共享与工作协同。 (一)互联网集中采购金融平台系统应用场景:推动供应链数字化,建立招投标、建筑材料采购、工程机械租赁互联网集https://www.zssia.cn/news/1775.html