`
QING____
  • 浏览: 2232042 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《架构与未来》摘要(三)

 
阅读更多

《确立架构原则》(特别推荐)

    1、目标和原则

    目标树的主题是:在降低成本基础上创造更多的盈利机会和更大的收入。这一主题可以进一步分解为:质量(体现在错误率和故障级别、测试覆盖率等)、可用性(服务的可用时间,SLA)、成本(软硬件投入、团队规模等)、市场响应时间(体现在SLA、发布时效性、自动化水平)、效率(需求迭代与人员投入时间比、自动化水平等)

    理想情况下,架构原则将基于高层次的目标树主题,而不是具体的目标。目标可能会随着时间的推移而改变,因此,原则应该广泛地支持未来的和当前的目标。

    架构原则非常抽象,以至于实际上无法直接应用在设计和架构审查上,无法协助驱动性价比高、可扩展性好和高可用的架构。同样,在本质上原则是高高在上的,在实践中,常常为了便于或者其他的原因把这些原则置之不理。

 

    一个经常被提到,高高在上的不幸的架构原则是“无限可扩展”。无限可扩展是根本无法实现的,因为那将需要无限的成本。此外,这原则不允许验证。没有不是架构可以满足定义的目标。最后,我们必须考虑架构原则在指导组织工作习惯中的作用。在理想情况下,原则应该有助于设计,并指出一条通往成功的道路。像“无限设计”这样高高在上的理想原则不提供通往目的地的地图,使其作为一个无用的指南。

 

    好的架构原则:

    原则应该影响团队的行为和文化。它们应该帮助指导设计,并以此测试和确定这些设计是否符合公司的目标和需求。有效的架构原则和公司的目标、愿景和使命紧密地结合在一起。一个好的原则有以下几个特点:

    1)具体的:原则不应该被混淆在它的措辞中。

    2)可度量的:原则不应该包含“无限”这样的词汇。

    3)可达到的:尽管原则应该是鼓舞人心的,它们应该能够在设计和执行上实现。

    4)现实的:团队应该有能力达成目标,有些原则是可以实现的,但是需要时间和天赋。

    5)可测试的:修改后的原则可以用于测试设计,以验证它是否符合需要。

 

    2、架构选择

    我们把维恩图减少到三个区域:可用性/可扩展性/质量,成本/效率,TTM(市场响应时间)



 

    逐步孵化的原则:你希望团队能够拥有指导可扩展性项目的架构原则。达成此目的最好的方式是让他们参与原则的制订和选择。一个好的制订原则过程涉及下述步骤。

    1)确保所有参与方应用这些原则。

    2)通过将这些原则与公司的愿景、任务和目标关联,创建一个成功的因果图。

    3)为原则拟定主题,维恩图对显示重叠的原则很有用。

    4)把大团队分成小团队,然后由每个小团队分别提出他们的原则。虽然所提出的原则可能措辞不同,但是你会惊讶有这么多重叠原则出现。

    5)把团队集合起来做个小型展示,然后再分成小团队来修改他们的原则。

    6)进行另一轮的陈述,然后选择那些重叠的原则。

    7)进行投票。

    在架构原则制定的过程中一定要应用RASCI方法,因为你不希望团队认为没有最终的决策者。如果在制定架构原则的过程中只有架构师参与,而没有包括关键的团队成员,那么可能会形成“象牙塔”架构文化,工程师认为架构师没有适当的掌握客户的需求,架构师认为工程师不拥有和不遵循架构标准。

 

    3、AKF采用的最普遍的架构原则

    1)N+1设计:

    简单来说,这个原则所要表达的是要确保任何你所开发的系统在发生故障时,至少有一个冗余的实例。该原则广泛地应用在从大型数据中心设计到网络服务实施的一系列活动中。(避免单点问题

    2)回滚设计:

    回滚设计是提供网络、WEB 2.0或者SaaS服务公司的一个重要架构原则。无论你构建什么,都要确保它可以向后兼容。通过预先的设计允许产品或者平台回滚、发布或部署。(系统设计时,考虑回滚与兼容)

    3)禁用设计:

    当设计系统,特别是与其他系统或者服务通讯的高风险系统系统时,要确保这些系统能够通过开关来禁用。这将为修复带来额外的时间,确保系统不因为错误引起的诡异需求而宕机。(比如流量控制、安全限制等

    4)监控设计:

    如果监控做得好,不仅能够发现服务的死活,检查日志文件,还能够收集系统相关的数据,评估终端用户的响应时间。如果系统和应用在设计和构建时就考虑好监控,那么即使不能自我修复,也至少可以自我诊断。如果系统在设计时做好监控和日志收集,那么很容易确定系统的预留空间,并采取适当的行为尽早纠正可扩展性问题。(面向监控设计)

    5)设计多活数据中心

    6)使用成熟的技术:

    我们都喜欢学习和实施最新和最有吸引人的技术。采用这样的技术通常可以帮助我们降低成本、减少上市时间、降低开发成本、提高可扩展能力、减少终端用户的响应时间。在许多情况下,新技术甚至可以创造一个短暂的竞争优势。不幸的是,新技术也往往有较高的故障率。因此,如果应用在架构的关键部分,可能会导致对可用性有显著的影响。如果可用性对解决方案或服务很重要,那就要应该采可靠的技术

    7)异步设计:

    同步系统比那些异步行为设计的系统具有较高的故障率。此外,同步系统的可扩展性被在通信链中最慢的和最不具备可扩展性的系统所限制。如果系统或服务减慢,整个链条的速度减慢,吞吐量降低。因此,同步系统更难以实现实时扩展。

    在处理一个请求时,有一个服务在等待响应。虽然吞吐量大致相同,但它们更能容忍慢速处理,因为可以继续处理请求。在某些情况下,反应可能会有所减缓,但是真个系统不会停顿下来。因此,如果只有一个周期性的缓慢,异步系统将允许交易缓慢通过而不是停止整个系统。

    8)无状态系统:

    状态系统中的操作都是在前后关联的情况下进行的。因此,对任何给定的执行或系列的请求,其过去的操作信息必须要暂时存储在某个地方。在维持交易状态的情况下,工程团队通常开始收集并保存大量有关请求的信息。状态消耗资金、处理能力、可用性和可扩展性。

    只要有可能,就要避免开发需要状态的产品。在必要的情况下,可以考虑存储在用户端,而不是系统里(cookie,agent)。如果这是不可能的,考虑一个集中的状态缓存机制避免把状态数据分散存储在多个服务器上。

    9)水平扩展非垂直升级:

    如果你想达到近乎无限的扩展,那么就必须分散系统、组织和流程以利于扩展。

    其中一些面临着与试图依靠更大、更快的系统相关的扩展性危机。所有那些不做水平扩展,而做垂直升级的人都面临这些危机。

    10)设计至少要有两个步骤的前瞻性:

    领导者、管理者和架构师都要考虑未来。你的设计不只是为了今天,而是要搭建一个可以使用和修改的未来系统

    11)非核心则购买:

    虽然非核心则购买是一个成本效益原则,它也影响扩展性、可用性以及生产力。基本的前提是,无论你和你的团队是多么聪明,你不可能什么事情都做得最好。此外,股东希望你能关注真正创造差异化竞争,进而提高股东价值的事情。做你真正擅长的事情,形成产品、平台或系统方面的显著差异。

    12)小构建、小发布,快试错:

    小版本的失败率较低,因为失败率和解决方案中的变更数量直接相关。对染我们可以而且应该目标远大,但是我们必须要有原则,迫使我们聚焦在以小型和迭代的方式实施。(MVP,最小可用产品

    13)故障隔离:

    故障隔离的原则类似于建立一个有断路器的电气系统。细分你的产品、服务或子系统,确保服务或者子服务不会影响其他的服务。另外,把客户分入不同的组里,如果系统出现任何问题,不至于影响到全体客户。(服务隔离,泳道

    14)自动化:

    我们认为所有系统都应该在开始设计的阶段就要考虑自动化。自动化部署、构建、测试、监控甚至报警。(程序设计之初,考虑到自动化部署、测试、监控,非常重要)

--第十二章《确立架构原则》

  • 大小: 228.7 KB
分享到:
评论

相关推荐

    核心网未来网络架构演进

    摘要:针对移动数据流量爆发式增长的现状,基于移动通信网络向NFV/SDN、5G技术的发展演进趋势,提出了核心网未来网络架构的演进方向,主要介绍了业务发展、技术演进对核心网的需求,核心网的网络架构现状和未来演进...

    工业通信网络现有架构的梳理总结和未来运营商的发展策略1

    摘要:工业通信网络向网络化、数字化、智能化方向发展,已经不能被视为简单的通信网络,而是组成自动化控制系统的关键子系统。从现有的工业通信网络系统架构出发,对工业模

    分布式实时处理系统架构设计与机器学习实践(卢誉声)

    摘要:机器学习与实时处理系统应用、分布式计算拓扑搭建、消息算法调优、Hurricane计算框架与未来展望

    云计算的体系架构.doc

    云计算的体系架构 摘要 关键词: 云计算从概念的提出到现在为止也近3年了,目前仍然云计算没有一个准确的、统一 的定义。 云计算概述 Markus Klems认为云计算机是包含了研发、负载均衡、合理架构的一种软件开发的新...

    5G安全通信与计算融合演进中的需求分析与架构设计1

    摘要5G是未来网络空间的核心基础设施,因而5G安全是网络空间安全的重要组成部分。5G 安全技术应打破以往移动通信系统成型后“打补丁式”的升级演进模式, 与 5G

    Home.Net模型/架构研究

    摘要:通过分析信息家电、家用电脑、家居网络的现状与未来发展趋向,提出Home.Net模型/架构体系,并从硬件平台与软件平台方面详细地论述该模型/架构体系。主要希望能够在信息化时代,就如何构造家居网络信息平台,更...

    基于SpringBoot技术博客设计与实现.docx

    第三章 SpringBoot博客系统架构设计 12 3.1 博客系统架构设计概述 12 3.2 博客系统模块划分 14 3.3 博客系统技术选型 15 第四章 SpringBoot博客系统实现 17 4.1 博客系统环境搭建 17 4.2 博客系统数据库设计 18 4.3 ...

    JAVA3D的网络三维技术的设计与实现(源代码+论文+说明)

    基于Java3D的网络三维技术的设计与实现 摘要:互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新话题,在图形工作站以至于PC机上早已日臻成熟,并已应用...

    AI大语言模型架构图.rar

    GPT-3是一个由OpenAI开发的自然语言处理模型,它包含1750亿个参数,能够完成许多任务,如文本生成、翻译、摘要等。 Codex是GitHub于2021年推出的一个基于GPT-3的代码生成模型,可以自动生成代码。 WebGPT是一款...

    基于Java3D的网络三维技术的设计与实现(源代码+论文+说明书)

    基于Java3D的网络三维技术的设计与实现 摘要:互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新话题,在图形工作站以至于PC机上早已日臻成熟,并已应用...

    JAVA3D的网络三维技术的设计与实现(源代码+论文+说明).zip

    JAVA3D的网络三维技术的设计与实现(源代码+论文+说明) 基于Java3D的网络三维技术的设计与实现 摘要:互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新...

    基于Java的3D网络三维技术系统设计与实现毕业设计(源代码+项目报告+说明).zip

    基于Java3D的网络三维技术的设计与实现 摘要:互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新话题,在图形工作站以至于PC机上早已日臻成熟,并已应用...

    基于JAVA毕业设计-JAVA3D的网络三维技术的设计与实现(源代码+论文+说明).rar

    基于JAVA毕业设计-JAVA3D的网络三维技术的设计与实现(源代码+论文+说明).rar 摘要:互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新话题,在图形工作...

    LED护眼电子台灯创业计划书 (2).doc

    未来三年发展计划 1.第一年 2.第二年 3.第三年 六.可行性分析 1.计划的可行性分析实施计划的关键因素及必要条件 2.己经具备的条件 3.目前不具备或不确定的条件 4. 方案可行性分析 七.SWOT 1.竞争优势分析 2.竞争...

    通信与网络中的三种LTE语音解决方案

    摘要:LTE是未来国际主流的新一代宽带无线移动通信技术。由于LTE面向分组域提供业务,不能象传统的3G和2G网络那样提供电路域业务,因此如何在LTE网络提供语音业务成为业界关注的一个问题。本文主要介绍了LTE网络的...

    基于Java聊天室的socket设计和实现.docx

    摘要 3 关键词 3 第一章 Java聊天室概述 3 1.1 Java聊天室的定义 3 1.2 Java聊天室的发展历程 4 1.3 Java聊天室的应用场景 5 第二章 Socket编程基础 6 2.1 Socket编程的概念 6 2.2 Socket编程的基本流程 8 2.3 ...

    物联网与IPv6.doc

    物联网与IPv6 作者:马凤霞 来源:《消费电子》2012年第07期 摘要:本文介绍了物联网的基本情况,指出了物联网通信技术发展的瓶颈问题 ,最后分析IPv6在解决未来物联网通信技术中扮演的重要角色和关键技术。...

    基于云计算运维毕业设计.docx

    摘要 3 关键词 3 第一章 云计算运维概述 4 1.1 云计算运维的定义 4 1.2 云计算运维的发展历程 4 1.3 云计算运维的重要性 6 第二章 云计算运维技术 7 2.1 云计算运维的技术架构 7 2.2 云计算运维的关键技术 8 2.3 ...

Global site tag (gtag.js) - Google Analytics