背景
对于目前创业成长型的企业来说,离线计算已经必不可少了,通过离线计算我们可以生成复杂的业务报表,通过离线计算我们也能精确的算出用户画像。离线计算已经当今的企业中成为了不可或缺的存在。那么使用弹性计算能够对离线计算领域带来什么好处呢?小编告诉你好处肯定是有的,且听小编娓娓道来。
常见离线计算架构
从上图中我们用最常见的离线计算开源产品Hadoop作为例子,如上图所示大家会把存储服务跟计算符合放在一台ECS上。但是随着业务的扩张,我们对计算的需求越来越大,我们需要用数据做各种运算,为了增强离线集群的计算能力,我们会想到直接通过添加计算节点的方式来获得。但是随着计算节点的添加我们会遇到另一个问题,那就是资源利用率不够的问题。虽然计算通过扩容能够提升计算能力,但是数据可不会像计算那样突然猛增,所以对于存储来说扩容操作会暂时导致资源利用率的下降。再加上离线计算每天的计算时间只有一段时间,扩容之后的ECS在每天离线计算完成之后将大量空闲,这段时间将是对成本极大的浪费!那么很多客户会想是否有一种方法能够将计算存储分开进行扩容,并且在离线计算的时候对计算节点扩容,在计算完成之后将扩容的计算节点释放掉,从而达到节省成本的目的。这个架构肯定是有的,不过为了让大家更好的理解接下来的架构,小编先要给大家介绍一下竞价实例和弹性伸缩。
竞价实例简单介绍
从上面的图中大家可以发现竞价实例是一种按照供需关系变化价格波动的一种后付费类型实例,相对于按量付费实例价格有较低的折扣。不过同时竞价实例是有可能随时被阿里云释放的,这点请大家务必注意。简而言之就是竞价实例便宜,但是可能随时被释放。
弹性伸缩简单介绍
弹性伸缩总共有如下三个优点:
提升容错能力
弹性伸缩会定时检查ECS健康状态,如果发现ECS不健康,那么ECS将会创建一台新的ECS去替换它并且将不健康的ECS释放掉。
增强可用性
弹性伸缩能够通过定时、自动伸缩保证应用程序始终有合适的容量去满足当前的请求流量。
优化成本
弹性计算通过自动动态的方式按需增减实例,在需要的时候添加实例,不需要的时候释放实例,从而节约IT成本。
存储计算分离之后的离线计算架构
经过上面对竞价实例以及弹性伸缩简单的介绍,现在小编可以大声的告诉大家,存在一种基于弹性计算的架构能够不仅能够满足用户对于海量数据的计算能力需求,而且还能降低大家的计算成本。
- 将Hadoop的存储计算节点分离
- 使用弹性伸缩来按时、按需创建、释放计算计算节点
- 计算节点的付费类型采用竞价方式
这里相信大家肯定又有疑问了,竞价实例不是会被阿里云释放吗,这里使用竞价实例合适吗?答案是绝对合适的。第一竞价实例的价格变量付费便宜很多,第二就算竞价实例被阿里云释放了,影响的也紧紧只是我们离线计算的速度。在上面的架构图上小编也留了一台ECS没有加入伸缩组,这一台ECS我们可以采用预付费的方式为我们计算资源提供“保底”的计算能力,当然我们也可以根据自身的需要来设置“保底”ECS的数量。
使用竞价实例+弹性伸缩搭建离线计算架构Tips
Spot Instance出价策略
通过阿里云ECS的售卖页面查看竞价实例多可用区的历史价格,从而选择一个合理的出价。
AutoScaling伸缩组配置
- 不要在整点触发定时扩容任务,整点扩容的客户比较多,大家可以选择整点过后5-10分钟进行扩容,这样价格相对会低一些
- 通过监测计算节点的CPU/MEM指标来触发报警任务
- 通过在伸缩组选择多可用区来增加成功购买竞价实例的概率
- 在伸缩组内配置最大ECS数目防止弹性伸缩创建ECS数量超过预期
- 创建一条伸缩任务进行手动扩容以备不时之需