规则二:方案中包含扩展

规则二 方案中包括扩展

留出可扩展空间!设计可扩展方案,实现可扩展程序

内容:提供及时可扩展性的DID方法

场景:所有项目通用,是保证可扩展性的最经济有效的方法(资源和时间)

  • Design(D)设计20倍的容量[这里的容量是指:压力容量等]
  • Implement(I)实施3倍的容量
  • Deploy(D)部署1.5倍的容量

原因:DID为产品扩展提供了经济、有效、及时的方法

要点:在早期考虑可扩展性可以帮助团队节省时间和金钱。在需求发生大约一个月前实施(写代码),在客户蜂拥而至的几天前部署

这个规则是最不清晰的一个规则,但是,他的意思很明确:要在设计,实施,部署的时候,都要提供可扩展的部分,每个阶段的部分有所不同!在设计的时候,就要考虑到,要对需求有20倍的容量的扩展!也就是设计上是可以允许有这么大的扩展空间的,在实施上,是要实施需求的3倍的容量的【实施了3倍,并不代表以后不会在扩展,以后还可以继续实施的】

我们的每个设计都应该是基于一套定义和指导设计的架构原则和标准

设计(D, Design)

讨论和设计很明显要比我们在代码中具体实现该设计成本更低,鉴于成本相对低,我们可以未雨绸缪讨论和草拟好如何扩展平台的设计。

例如,我们显然不想部署比现在的生产环境需要高10倍、20倍甚至100倍的容量。但是,讨论和决定如何扩展到这些维度的成本相对来说比较低,因为设计是智力活动,我们完全有可能在设计的时候,就将其设计成可以扩展的!

然后,在DID方法的D(设计)阶段聚焦在扩展到20倍和无限大之间。因为聘请“思想家”来思考“大问题”,所以我们的智力成本很高,然而,由于我们不编写代码或部署昂贵的系统,所以技术和资产成本较低。

通过召集可扩展性大会,把领导者和工程师团队聚集在一起,共同有讨论产品的扩展瓶颈,这是在DID设计阶段发现和确定需要扩展部分的一个好办法

实施(I,Implement)

随着时间的推移,我们逐步接近对未来扩展预想的需求,于是开始编写软件实现设计。

我们把规模需求的范围缩小到更接近现实,例如当前规模的3~20倍。“规模”在这里指被视为扩展最瓶颈的系统组件,这部分最需要亟待解决以实现业务目标。

可能有些情况下,把当前的规模扩大100倍或更多倍的成本与扩大2倍没有区别。假设如此,也许我们可以一次完成所需要的改变非反复折腾。

但是,有些成本确实是跟数据量的大小有关的话,我们就必须要悠着来,不要一次实现过大的容量,因为,那样会带来很多的技术成本和人力资源!

我们在每个阶段,只需要20倍的容量实现就好了,这样的话,足以应对意外情况,也不会有太高的技术成本和经济损失!

部署(D, Deploy)

DID的最后阶段是部署(D)。

当你的程序可以实现扩展的时候,你一点要在部署的时候,悠着来!

该阶段的总成本往往是最高的,部署相当于现有规模100倍的系统容量将会使许多公司破产

记住,扩展具有弹性,它既可以扩张也可以收缩,我们的解决方案应该认识到这两个方面因此,灵

活性是关键,因为你需要响应客户的请求,随着规模的收缩张,在系统之间调整容量

这个阶段是真金白银的阶段,最好的部署就是:刚刚够用!最好的部署就是:可以灵活扩展,应对压力

你需要响应客户的请求,随着规模的收缩张,在系统之间调整容量。

在基础设施即服务(IaS)的环境下,我们没有必要在需求到来前购买容量,在系统接近所需和接近实时的情况下,可以在部署阶段很容易地把计算资产“旋转”起来,自动扩容即可,这就是虚拟硬件,云资源的好处,大大的降低了成本,提高了灵活度

对可扩展性的设计和思考的成本相对低,因此应该经常进行。理想情况下,这些活动会产生某些书面文件,可以作为基础文档在需要时快速参考。架构或设计解决方案的整体成本更高,可以留在日后处理,而且实际上也没必要在生产中实现

时间: 2024-10-09 16:19:55

规则二:方案中包含扩展的相关文章

UML用例图中包含、扩展和泛化的区别

在软考复习下午题的时候,涉及UML图时会有一个知识点就是用例图中包含.扩展和泛化的区别.这里我们就来总结一下. 1.包含<<include>> 包含是指当多个用例中存在相同的事件流时,可以把这些公共事件流抽象成公共用例,这个公共用例称之为抽象用例(跟类的概念有点相像,类是多个对象的抽象定义),而原始用例称为基础用例,基础用例与抽象用例之间就是包含关系.但是值得注意的是,对于包含关系而言,基础用例是抽象用例执行中不可缺少的一部分,基础用例一般不单独存在且基础用例不知道抽象用例的存在而

此集合已经采用方案 http 的地址。此集合中每个方案中最多只能包含一个地址。

错误信息:此集合已经采用方案 http 的地址.此集合中每个方案中最多只能包含一个地址.如果服务承载于 IIS 中,则可以通过将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true,或指定“system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters”来解决此问题.参数名: item异常类型:System

解决URL中包含“%2F”导致Apache地址重写mod_rewrite失效的问题

在使用Apache地址重写mod_rewrite期间,发现,当URL和PATH_INFO中出现%2f(/)或者%5c(\), 会被认为这是个不合法的请求, Apache将会直接返回"404 (Not Found)"错误. 也就是说,Apache在调用 mod_proxy 或 mod_rewrite 模块之前,就直接拒绝请求,给出404错误. 这样做主要是为了防止CGI的安全漏洞发生,尤其是在脚本中使用了PATH_INFO但是又没有做安全过滤操作的话,很容易被注入漏洞. 假定URL是安全

C#中自定义扩展方法

在C#中,我们在不写子类的情况下,可以为类增加扩展方法,前提的被扩展的类不能使静态类. 步骤如下:   定义一个静态 类以包含扩展方法.该类必须对客户端代码可见. 有关可访问性规则的更多信息,请参见 访问修饰符(C# 编程指南). 将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性. 该方法的第一个参数指定方法所操作的类型:该参数必须以 this 修饰符开头. 在调用代码中,添加一条 using 指令以指定包含扩展方法类的 命名空间. 按照与调用类型上的实例方法一样的方式调用扩展方法

解决NSData中包含非法UTF-8编码

我们开发中常会遇上将NSData转换为NSString,或通过NSJSONSerialization解析JSON的场景,一旦NSData中包含非法的UTF-8编码,那么结果将是返回nil,但这样的结果并不符合我们预期,因为可能这其中仅仅只是一个编码错误,我们更希望将错误编码丢弃或替换为错误字符.在Google上找了一圈,有人也实现了这样的方法,但个人觉得写得不够严谨,容错性也不太好,索性自己写一个吧,严格按照RFC3629的标准. UTF-8是一种变长的编码,针对不同长度的字节有固定的格式,在R

IOS中 类扩展 xib

IOS中 类扩展 xib 一.类扩展(class extension,匿名分类) 1.格式 @interface 类名 () { // 成员变量... } // 方法声明... @end 2.作用 1> 写在.m文件中 2> 一般用来扩充私有成员变量.@property属性.方法等 二.随机数生成 1.arc4random() 会生成任意正整数和0 2.arc4random_uniform(100) 会生成0~99的整数(包括0和99) 三.UIView常见方法 1.addSubview:(U

ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法

一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归.所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然. 但是,如果手写Html标签效率又比较低,可重用度比较低.这时,我们该怎样来提高效率呢?首先,经过上篇我们知道可以通过ViewData传递数据,于是我们可以写出以下的Html代码: <input name="UserName&quo

oc中分类 扩展 协议的使用及区别

一.分类 1.适用范围 当你已经封装好了一个类(也可能是系统类.第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类,只需要给你原来的类增加一个分类. 将一个大型的类拆分成不同的分类,在不同分类中实现类别声明的方法,这样可以将一个类的实现写到多个.m文件中,方便管理和协同开发. 分类中的方法可以只声明,不实现,所以在协议不支持可选方法的时候(协议现在已经支持可选方法),通常把分类作为非正式协议使用. 2.语法格式 文件中的语法 @interface

苹果开发者应当在应用程序中包含隐私策略(附隐私策略模板)

前几日苹果在其开发者中心重申开发者应当在应用程序中包含隐私策略.为了确保用户理解应用如何使用他们的数据,开发者在以下两种情况中必须在iTunes的Privacy Policy URL字段提供一个链接: 1.开发者所在国家法律要求提供. 2.满足以下前提之一: 使用用户或者设备数据 提供账户注册程 访问用户现有的账号 使用HomeKit或者HealthKit框架 集成Apple Pay 包含键盘扩展 包含自动更新订阅和免费订阅 应用属于儿童类别 附隐私政策模板: 隐私政策  Poposoft尊重并