架构设计的核心:从多个维度理论分析@[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.互联网大厂架构图设计与实践:揭秘背后的方法论与实例随着互联网的快速发展,大厂架构图设计已成为互联网公司的核心竞争力之一。一个优秀的架构图设计能够提高系统的稳定性、可扩展性和可维护性,降低开发成本,提高开发效率。本文将深入探讨互联网大厂架构图设计的方法论与实例,帮助读者更好地理解和掌握这一技术。 https://blog.csdn.net/assjyyds/article/details/136501922
2.互联网项目组织架构图mob64ca12f66e6c的技术博客以一个典型的互联网项目为例,其组织架构图可能如下所示: |职位|职责||---|---||项目经理|整体项目管理,资源分配,进度控制||开发团队|系统设计与开发,代码实现||测试团队|功能测试,性能测试,缺陷管理||运维团队|部署、监控与维护系统,保障运行稳定| 1. 2. 3. 4. 5. 6. 二、角色和职能 1. 项目经理https://blog.51cto.com/u_16213457/11975000
3.高效协作与创新驱动,网站建设小组的运营模式解析公司方案在互联网技术迅猛发展的今天,网站已成为企业塑造形象、拓展市场、与客户沟通的关键平台,在这个信息化的时代,如何高效构建并管理一个网站建设团队,成为众多企业关注的焦点,本文将深入剖析网站建设团队的运作模式,探讨其高效协作与创新引领的实践路径。 网站建设团队的构成 http://www.lanzhouzptech.com/fa/1316.html
4.问题解决方案地基设计和岩土勘察工作进行前组织两部门的工作人员进行面对面的沟通交流,要保证信息传输无障碍和信息的准确度,还要有专门的人员负责两部门定期的交流,组织设计人员去勘察场地,或者可以让勘察人员亲自去设计部门,还要组织专家进入实际的工作中,不要把审查工作当成一个形式,审查工作过后,要有专人对报告进行修改,并书写https://www.oh100.com/a/202306/6930317.html
5.互联网软件定制开发:塑造企业数字化未来的关键力量随着互联网技术的飞速发展,企业对于软件的需求日益多样化与个性化。互联网软件定制开发作为一种灵活、高效的软件开发模式,正逐渐成为企业数字化转型的重要推手。本文将深入探讨互联网软件定制开发的内涵、优势及实践策略,旨在为企业提供有价值的参考与启示。 二、互联网软件定制开发的内涵 https://www.pbids.com/aboutUs/pbidsNews/1861325712541192192
6.精选5篇互联网创业计划书范文及案例分析现代人的步伐太快,传统的服务方式已经无法满足需求。以旅行社为例,它们提供的信息常常不够全面,而且更新速度很慢。市场上的互联网平台也存在不少问题,比如信息过于零散。在杭州这样的旅游城市,许多游客都反映在一些平台上难以找到全面的旅游计划。 本项目采用新颖手段来应对问题。比如,商家赋能计划能为入驻商家提供全面https://www.7claw.com/2804379.html
7.?如何看“互联网+”下设计院主导的EPC项目一体化模式?我国现行的传统项目实施的组织模式为设计—招标—建造(design-bid-build,DBB)模式,由于该模式已长期在各地熟练运用,因而管理方法成熟。https://www.goalfore.cn/a/3889.html
8.一级结构工程师考试大纲(公共基础+专业基础)13.4 施工组织设计 施工组织设计分类 施工方案 进度计划 平面图 措施 13.5 流水施工原则 节奏专业流水 非节奏专业流水 一般的搭接施工 13.6 网络计划技术 双代号网络图 单代号网络图 网络计划优化 13.7 施工管理 现场施工管理的内容及组织形式 进度技术全面质量管理 竣工验收 十四、结构设计 14.1 钢筋混凝土结构 材料性https://www.wangxiao.cn/jg/2614844.html
9.互联网+学院组织结构图系统标签: 学院 互联网 组织 诚森 培训部 负责 祥睿龙成国际教育互联网+学院组织架构图董事长:XX总经理:XX副总经理:XX教务学管部教务总监院长财务部会计出纳财务总监设计部产品经理设计专员设计总监教务专员教务学管主任省办主任招生老师市场总监运营专员招生专员客服专员市场部招生主任助教教官教研部研发支持部平台研发部https://www.docin.com/touch_new/preview_new.do?id=2164178793
10.构建“互联网+”教师学习共同体二是学习者与同伴之间的社会性互动,互动使得学习者便于重新组织自己的思路,实现自我的发展。 教师学习共同体的构建策略 构建“互联网+”教师学习共同体的具体策略,包括人员组织策略、活动设计策略和共同体文化建设策略。 人员组织策略 “互联网+”教师学习共同体的人员组成应主要包括大学教师、中小学教师和全日制教育硕士http://www.jyb.cn/rmtzgjyb/201904/t20190406_222685.html
11.互联网+智慧党建平台设计方案解析方案馆为各位分享一份,依托深厚的技术底蕴和大数据应用经验打造“的《互联网+智慧党建平台设计方案》,通过智慧党建大数据平台的搭建,实现对党员的动态管理,同时也为各类党建学习、党务管理工作的开展提供了数据决策依据。 本期方案下载:《互联网+智慧党建平台设计方案》 https://solution.homedo.com/info/news/detail/622802859929948160.html
12.“中国制造2025”将制定33个专项规划概念股机会凸显“互联网+”是科技与经济的有机结合,在实施“互联网+”战略中,互联网+企业组织变革具有特别重要的意义,企业作为市场的重要主体和经济的细胞,除了利用互联网加强与市场的互联和联系、推动网络化协同制造和服务之外,还要下大功夫增强内生动力,焕发内部活力。如何利用信息技术改善重构生产要素,深化企业组织变革,创新生产方https://finance.eastmoney.com/news/1374,20151106563021044.html
13.何伟:移动互联网时代下企业转型与商业创新模块一:以用户为中心的组织设计 1、传统管理的三大挑战 2、扁平化:打通决策链 3、平台化:打通内部利益链 4、生态化:打通外部利益链 实战演练:设计你的互联网化组织 模块二:以效率为核心的管理方式 1、人人都是产品经理 2、自组织如何落地 3、移动互联情境下的协作方式 4、社会化协作的5个有效工具 实战演练:https://www.jiangshitai.com/course/15232.html
14.MTPDE精英层管理能力提升系统培训▲任职泰普汇虹光电集团期间:成功设计并推行配套的集团内部组织架构设置、关键管理流程、规章制度等核心机制,从0到1组建技术研发事业部团队,并获得国家级高新技术企业认证资质,人均产能逾百万。 ▲任职森强金控集团期间:搭建符合金融企业特色的培训架构和课程师资与制度体系,策划并实施领导赋能、团队再造、组织执行力、目标http://www.junenghuichuang.com/neixunkecheng/86.html
15.关于表彰2011—2012年度优秀研究成果和课题研究优秀组织单位的单位课题研究工作的积极性、创造性,鼓励多出成果、多出精品,进一步做好优秀研究成果的宣传推广和转化应用,经课题组初评、秘书处初审、评审委员会评审并报研究会领导批准,决定对2011—2012年度优秀研究成果特等奖2个、一等奖33个、二等奖64个、三等奖98个、成果奖97个(见附件1)和16个课题研究优秀组织单位(见附件2https://finance.powerchina.cn/s/1103-3823-1392.html