前言
promise 是 js 里面非常重要的一部分,搞懂了 promise 才能更好的去理解 async,await 和 generator。但是往往很多时候就是不理解 promise 的机制,所以这次通过一步步实现一个 promise 来加深自己的印象,提高自己的思维。
大概的架子
通过我们经常写的 promise 语法,我们可以先写一个大概的架子出来,promise 接受回调,并且调用,自身带有三种状态,pendding, onFulfilled, onRejected,并且 resolve 这个函数可以让 pendding 状态变成 onFulfilled 状态,同理 reject 函数可以让 pendding 状态变成 onRejected 状态。我们先把上面描述部分实现了。
-
利用“供需”的经济性——AWS和Azure这样的云计算服务提供商具有“Spot”实例的概念,这些实例是未使用的虚拟机(VM)容量,与“随需应变”或“现收现付”模式相比,其价格低得多(高达90%)。整个原则基于“供需”动态:云计算提供商的供给大于需求,因此将以更低的价格出售服务容量。唯一的问题是,当需求增加时,云计算服务提供商可以收回“Spot”实例。也就是说,有多种策略可用于有效地利用“Spot”实例。
-
使用“定义的持续时间工作负载”——在AWS云平台上,当用户请求“Spot”实例时,有一项原则,确保“Spot”实例在规定的时间段(1到6小时)可用,即使需求增加,云计算提供商也不会收回实例。而且,在AWS云平台中使用现场成本定义的持续时间工作负载时,每小时成本节省40%~80%(具体取决于阻止的小时数),因此,此设置对于云平台上的开发和PoC环境非常有效。
-
结合AWS上的“按需”和“Spot实例”,称为“Spot Fleet”。 Spot Fleet尝试启动Spot实例和按需实例的数量,以满足用户需要的目标容量。例如,如果需要在负载均衡环境下运行5个应用程序服务器,则不需要将所有5台应用服务器都置于“按需”定价之下。选择3个“按需”和2个“Spot”实例的组合。“按需”确保用户始终具有实例容量,并且通过运行“Spot”实例来节省成本。
-
优化数据存储成本——存储是最便宜的云计算服务之一,也是最被忽略的云计算服务。通常云计算提供商定义不同的存储类型,用户可以决定使用什么。人们会发现,根据不同的业务场景,新创建的数据在开始使用的30到60天内会大量使用。在此期间之后,很少会引用数据,或者在最糟糕的情况下永远不会使用这些数据。一个典型的例子是生成大量数据但仅在30到60天内相关的日志文件。甚至信用报告也在90天后被金融机构再次取回。
-
有些组织在未使用的云计算服务方面甚至浪费了数百万美元——为了有效地管理存储成本,需要采用数据定义生命周期策略。将数据保留30天,以“频繁访问”,然后将其移至“不频繁访问”,然后移至长期存档。通过实施这种强大的数据管理做法,用户还可以节省大量成本。对于美国东部地区的AWS,每月每种存储类型的成本差异如下:
-
S3 Standard——0.023美元/GB;
-
S3 Standard,很少访问——0.0125美元/GB;
-
S3 Glacier——0.004 美元/GB;
-
S3 Glacier Deep存档——0.00099 美元/GB。
除此之外,还请考虑:
-
删除不需要的文件;
-
删除文件的原生版本,并且仅保留当前版本;
-
删除不完整的多部分文件上传。
-
利用企业折扣——AWS和Azure都为那些与他们进行三年以上批量投资的用户提供折扣计划。组织需要在协议的每一年中做出预付款项。通常,长期的大量支出会导致云计算提供商的折扣。但是,如果用户不花费已承诺的金额,则必须支付剩余的金额(因为这是合同的一部分)。对于Azure来说,企业协议可能会节省15%到45%的成本。
持续优化是关键
这并不是提供所有企业云计算利用技术优化策略完整列表的方法。但是可以肯定的是,这些是采用云计算服务的组织中最常见的。以下是维持成本优化方法的一些关键举措:
-
安排专门的人员负责确保云计算支出在限制之内并且同等重要。
-
定义预算并在接近阈值时设置警报。
-
云平台的资源是无限的,但组织的云计算支出是有限的。组织需要确保在云平台上花费的成本是值得的。