开源最大的特征就是开放性,云生态则让开源技术更具开放性与创造性,Elastic 与阿里云的合作正是开源与云生态共生共荣的典范。值此合作三周年之际,我们邀请业界资深人士相聚云端,共话云上Elasticsearch生态与技术的未来。
本篇内容是由邓万禧带来的云上Elasticsearch驱动新未来
分享人: 阿里巴巴集团资深技术专家邓万禧
视频地址:https://developer.aliyun.com/live/246147
正文:本篇主要通过2个部分介绍云上Elasticsearch如何驱动新未来
- 阿里云Elasticsearch三周年回顾
- 新产品发布
一、阿里云Elasticsearch三周年回顾
阿里云Elasticsearch在2017年云栖大会由阿里云和Elastic公司共同发布。在产品设计之初,阿里云作为产品开发团队就坚持源于开源而不止于开源的理念,希望能够给客户提供百分百兼容开源生态和软硬件一体化设计的云原生产品,降低企业上云的成本,提升效率。
随着云原生的发展和云服务的发展,我们认为应该从更广义的角度去理解云原生的概念。因云而产生的软件、硬件、架构,就是真正的云原生。从企业客户的角度,云原生的服务需要能够给客户带来极致的弹性和完善的运维能力,通过上云能够给企业带来降本增效的收益,而阿里云ES就是通过长期大规模的云上实践而发展起来的云原生产品。
我们主要围绕以下三个方向进行了探索,主要包括:
- Elastic开源技术站和阿里云基础设施的高效集成;
- 软硬一体化的架构演进;
- 场景化内核的增强。
以下是产品发展过程中的几个关键性指标和milestone。
2017年,阿里云ES发布商业化的Elastic Stack5.5版本,全部架构都基于云原生的基础设施,包括ECS、VPC、SRB和云盘等等,完全兼容ES的API。此产品主要从云管控的角度解决企业客户,多集群的运维效率低的痛点问题,比如一键拉起、平滑升级等等。希望在云上的客户可以更高效的方式使用和运维自己的Elasticsearch服务。
2018年,主要工作的重点是发挥阿里云基础设施上的优势,覆盖更多的区域和更多的产品形态进行输出。通过部署Elasticsearch的集群提升了ES服务的稳定性,也希望借助于异构的存储架构,降低用户在实际场景的存储成本。同时阿里云发布了智能运维产品EYou1.0,进一步提升了多集群的运维效率。
2019年,我们主要实现了ES全栈的组件托管,具备全栈的云原生能力,并且演进为计算存储分离的架构,为进一步提升弹性扩缩能力奠实基础。另外,也降低了热节点存储的成本,提升了一些性能,尤其是在时序和日志场景。
2020年,我们对云原生服务能力进行了升级,发布了智能弹性伸缩和DevOps相关的能力,另外也包括自研的报警监控服务等。
通过以上几个服务,阿里云团队进一步打磨了产品,并且也继续深入到业务场景中,持续优化业务的架构,为云上客户带来更好的产品体验。
经过三年多的发展,技术架构经过多轮的迭代和演进,阿里云ES已经发展成为覆盖开源ES全栈组件的云原生产品。
下图展现了阿里云ES的整体产品架构,从上到下包括场景化的能力,内核,和平台架构三部分。
(一) 场景化能力,包括多模态的搜索,可观测性,和安全分析。
1、多模态搜索
阿里云ES集成了达摩院的向量检索、内核和阿里NLP分词,增强了对文本和图片的理解能力,并且针对用户DB加速场景的需求,我们也针对性地做了多项改进,大大提升了在订单,交易等场景的稳定性。
2、可观察性
针对海量日志存储和写入成本问题,发布了阿里云日志增强版本,不仅时序场景的性能达到150%,并且降低了40%的成本。从数据前链路上,云原生的beats数据采集,从产品层面和阿里云ACK无缝打通,可以方便地采集coordinates日志做安全审计。另外,高级监控服务基于Elasticsearch作为存储实现了独立的一个产品,通过更细粒度和更高精度的matrix,极大地提升了ES集群的监控能力,提升了运维效率。
3、安全分析
除了针对Ad-hoc查询做了定制优化之外,我们也和阿里安全团队合作,对安全场景的可视化能力做了增强,方便用户使用。
(二)内核相关的增强
我们的策略是尽可能地跟进社区的版本,为云上的客户带来最新版本的能力。另外,也结合阿里云的基础设施对内核做了增强,我们也希望能够把通用的部分贡献给社区,为开源社区发展贡献我们的一份力量。
下面列举一些比较重要的改进给大家分享。
1、通用物理复制
主要效果为写入性能提升了70%,它的原理主要是在Elasticsearch的主节点做索引构建,而副本只读,主节点构建完成之后利用高效的网络分发section到副本,节省了索引构建的计算消耗。
2、 阿里云QoS插件
由于查询侧针对DB加速的场景对稳定性的高要求,我们发布了阿里云QoS插件,基于阿里云智能引擎的长期实践,我们结合自研的网络管理组件Dig, 实现了对查询和节点级别更精准的流控和降级能力。它可以在网络基础设施抖动的情况下,对查询的影响降到最低。
3、Fast Bulk
另外一个显著上的优化称之为Fast bulk,可提升写入性能接近30%。
以上就是部分优化的一些例子,也希望有更对同学对内核感兴趣的话与我们交流。
(三) 云管控平台
在架构层面,我们基于阿里云存储和计算的基础设施,完成了多次的架构迭代。首先在高可用上,我们完成了一健的多可用区部署,通过多可用区的高可用,更好地实现了高可用的能力。我们主要解决的问题是一键部署和秒级切流,让用户可以在出现故障的情况下快速地完成业务切流,把影响降到最低。 第二,基于hot-warm架构和计算存储分离架构,我们大大地降低了存储成本,让用户在同等花销下存储更多的业务数据。除此之外,基于共享存储,在20年上半年我们也发布了基于ES的智能伸缩特性,主要适用场景是业务高峰和低谷期差异特别明显的场景,比如直播和交通出行,解决的问题是业务低峰期资源浪费的痛点问题。
当然,为了更好地提升集群的运维效率,我们也一直在迭代智能运维系统EYou,通过EYou的持续迭代提升用户多集群的管理和运维效率。
总结一下,从整体上看,我们后续会持续从场景化,内核和架构的三个方向去持续迭代产品。具体的技术方向包括等级点的成本优化,自研引擎内核的集成和持续场景的写入吞吐的优化,后面在产品发布上也会和大家分享这方面工作的最新进展。
从业务规模上看,阿里云ES已经覆盖国内和国外17个区域,数据量达到了数十PB,集群数也达到了数万的规模。从场景上看,我们服务了包括在线教育,新零售,游戏等多个行业的互联网和传统企业,也希望在今后的时间内能够继续服务好云上的客户,给整个行业的客户赋能。
二、新产品发布
(一)产品简介
这个新产品的功能称之为Indexing Service,它将会在今年2月份全新上线,主要适用于时序场景,给云上客户降低机器成本,提升运维效率。 从客户角度上看,Indexing Service的特性包括以下三个部分:
- 解决时序数据的高并发写入瓶颈,性能提升150%。
- 优化集群写入的计算成本,热节点的成本降低70%。
- 降低运维复杂度,它是一个云原生的Serverless产品形态,可以实现秒级的弹性扩缩,让用户更少地关注集群的运维
(二)技术架构
下面介绍的是Indexing Service的技术架构。
首先从适用场景上来看,它适用于日志,监控,和APM等时序场景。它解决的痛点问题是指集群写多读少的场景时,机器成本和运维成本高的问题。它的使用方式也非常简单,首先按照吞吐和qps实际需求开通按量付费,在产品控制台上可以一键开启,无需做业务上的改进,完全兼容原生的API。而随着业务流量的增加,Indexing Service可以做到秒级的快速弹性伸缩。最后,从内部实现上看,Indexing service是读写分离的架构,对写的性能做了针对性的优化。
(三)内部流程
下面从架构的角度看一下用户在产品控制台上开启Indexing service的能力和内部的流程。
首先,用户在产品控制台开通Indexing Service之后,实际索引的Index metadata会同步到Indexing Service, 之后写入的流量如Bulk和Doct API可以通过节点直接forward给Indexing Service,无需在Datanode上构建。索引构建完之后,Indexing Service可以直接通过跨集群的物理复制直接将索引数据分发到用户集群,从而实现一个秒级的数据时效性。用户也可以在自己的集群内部通过API直接查询每个Index的订阅状态,并且用索引管理机制管理索引的订阅关系。当然,用户也可以随时取消订阅关系,这时候业务的写入吞吐会roll back回自身集群来进行索引构建。
最后总结一下,Indexing Service是阿里云ES基于云上业务实践推出的新产品,基于Indexing service的能力,用户可以按需购买,按量付费,大大降低日志和监控等时序场景的机器成本。这个特性将会在2021年2月份正式上线,也欢迎各位新老用户开通试用。
以上就是云原生Elasticsearch驱动新未来的分享的全部内容。
【阿里云Elastic Stack】100%兼容开源ES,独有9大能力,提供免费 X-pack服务(单节点价值$6000)
相关活动
更多折扣活动,请访问阿里云 Elasticsearch 官网
阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费
下载白皮书:Elasticsearch 八大经典场景应用