开源最大的特征就是开放性,云生态则让开源技术更具开放性与创造性,Elastic 与阿里云的合作正是开源与云生态共生共荣的典范。值此合作三周年之际,我们邀请业界资深人士相聚云端,共话云上Elasticsearch生态与技术的未来。
本篇内容是清博大数据技术副总裁王欢带来的基于Elasticsearch技术的应用与实践分享。
分享人:清博大数据技术副总裁王欢
关于Elasticsearch在清博的应用和实践,本文将通过四个部分展开介绍:
- 关于清博
- 典型业务场景
- 痛点与诉求
- 阿里云Elasticsearch实践与收益
一、关于清博大数据
清博数据成立于2014年,是一家专注于内容数据领域,是基于网络公开数据,依托自然语言处理、知识图谱、事理图谱等AI技术,挖掘有价值的数据以及关系,为政务部门、企业、媒体和高校的网络空间数据治理,提供一站式解决方案的公司。
清博大数据的主要业务布局有:
- 清博指数,已经成为业内知名的新媒体账号评估服务体系;
- 清博舆情,是业内主流舆情SaaS服务平台,为数十万B端网络品牌跟踪管理提供一站式服务;
- 清博融媒,助力政企、校园的融媒体建设;
- 产业数据,基于数据和技术的积累,在汽车大数据和环保大数据等产业数据领域也有布局。
二、典型业务场景
上文所提到的业务方向中都有Elasticsearch的参与和支持。下面介绍几个典型的应用场景。
清博舆情
下图展示的是清博舆情中常见的分析模块。
清博舆情利用NLP技术给常见的每条新闻及评论打上7个情绪标签,然后基于标签分析每天的情绪走势和情绪分布情况。这个应用可以理解为,针对某个事件,大众在不同情感表达下的声量大小。
另外,我们也对事件的发布和媒体敏感信息报道进行渠道统计,统计后就可以直观的看到一个事件的重要或敏感的传播节点,这就为业务的决策者提供了非常直观的决策参考。除此之外,系统还为用户提供发文类型、提及地区、热词分析等十多个常用的统计分析模块。
以上所描述的统计分析,都是基于Elasticsearch强大的聚合统计能力,包括嵌套的统计能力实现的。由于清博大数据提供的是线上的SaaS服务,在同个页面会迸发请求查询或聚合多个接口等需求,这就对Elasticsearch的聚合统计性能和内存使用率,都提出了更高的要求。
多维度的检索
多维度检索在清博大数据也是比较常见的业务场景。在舆情高级检索模块,清博检索提供了基于时间、发布平台、情感、媒体类别、发布地区等十多个维度的复合检索。同时还提供了基于term和match price的精确或模糊检索的复杂查询方式。
不同于日志检索场景,清博的多维度检索业务,需要权衡召回率和准确率,需要对标题跟正文设置不同的打分策略。比如给标题设置更高的权重,给正文设置相对较低的权重。另外,产品还能对包括阿拉伯语、日语、韩语、德语、法语等多国语言进行文本检索,这就涉及到了多语种的分词与检索召回。
账号画像
下图是清博指数平台一个微信公众号的画像页面,展示了公众号系列数据,包括阅读统计、阅读点赞、在看、发文趋势、发布习惯等数据指标的统计模块。通过这些模块,用户可以直观的了解一个公众号的发布情况、文章传播情况等,不仅给运营者提供了全方位、可参考的数据,也给广告投放的用户提供客观投放参考。
三、痛点与诉求
上文列举的不同业务场景都离不开Elasticsearch强大的查询和聚合能力,那么实现这样的功能有哪些痛点与诉求呢?
从上面业务场景列举可以看出,清博大数据的业务基本上都是基于文本检索,那么它具有的特点包括:
- 需要支持多种语言检索;
- 由于是在线的SaaS系统,需要实现亚秒级响应;
- 需要支持上百个索引字段;
- 需要满足聚合查询多和迭代频繁;
基于以上的业务特点就要求Elasticsearch具备高性能、平衡检索的召回率和准确率,并具有动态伸缩的能力。
基于以上的业务特点和服务要求,对清博大数据来讲,业务痛点可以分为三个方面:
1、成本
单篇文档不同于日志数据,占用索引空间大,所需的SSD存储昂贵;
2、运维
当业务数据不断增加,需要频繁扩节点;同时,由于是在线SaaS业务,所以需要实现亚秒级响应速度;并且在节点升级、增加内存等在线升级时,不停止服务。
3、兼容性
实现Elasticsearch集群迁移、本地化部署,业务代码无感知适配;云端备份索引可以兼容开源的Elasticsearch。
针对以上的业务痛点,清博大数据对云端Elasticsearch也提出了三点诉求:
1、成本
平滑扩缩容,索引支持冷热分离,热数据才放到SSD存储,从而降低存储成本;
2、运维
需要有简单的运维工具支持一键扩缩容和节点升级等能力;需要支持丰富的运维指标,在达到一定阈值时,可以有不同类型的报警通知;需要支持平滑升级不对业务产生影响;
3、兼容性
阿里云Elasticsearch 100%兼容开源生态,并支持自定义的分词器,实现热更新分词词典,方便备份与恢复。云上备份与索引,可以快速在开源Elasticsearch上恢复或拉起服务。
四、云上实践与收益
清博大数据在迁移之前是基于Apache Solr自建的搜索集群,为了提升搜索性能和巩固集群稳定性,创建了很多小的Solr集群。在上游数据分析之后,通过一套路由机制写入到不同的Solr集群,在查询时通过同一套机制,自动选择对应的集群。在不同的集群中查询不同的数据,可以分散单个集群压力,如果有小集群异常只会影响部分业务。
但是太多分散且小的集群也会出现很多问题,比如增加故障的概率、缺少统一运维管理平台、运维管理成本过高、无法自动扩充Shard、需要手动增加节点扩容等等。
相比之下,阿里云Elasticsearch提供智能的、统一的运维平台,不仅可以多维度地监控告警,也能及时发现集群问题,而且阿里云ES专家的支持也减少了大量的运维成本。
阿里云ES自动Shard,提升系统性能,提高了系统的检索性能;阿里云ES节点的伸缩能力,可以灵活应对业务逐步增加,节省大量一次性投入的成本。
在迁移过程中,清博大数据同步升级了数据架构,整个平台是分层的数据模式。最底层是数据接入层,包括上述提到的各平台社交文本数据。所有的数据源首先会推送到Kafka集群,通过消息队列对各个业务模块进行检索。
再往上一层是数据处理和存储层。在存储层,像新闻标题、发布时间、原始URL等信息存储到HBASE。一些不需要检索内容的镜像数据会存到OSS上进行长期存储,并把OSS的路径存到HBASE,方便后面的检查。
在数据处理这一层,使用 Flink 实时流处理引擎,通过RPC的方式实时调用NLP相关的算法服务,为每一条文本内容打上情感属性、情绪分类、新闻类型和地域等标签,方便下游业务使用。
再上一层是整个ES的基础设施,包括ES集群和智能网关两层服务。在ES集群层,根据业务特点把近两年的数据放到冷数据集群,使用价格相对较低的高效云盘,把近三个月的数据放到热数据集群,使用SSD盘进行冷热集群分离,同时根据不同平台大小对索引进行拆分,分为微信、微博、短视频等等索引。
为了提高ES的安全性和访问的可控性,清博大数据开发了智能网关服务,屏蔽了直连ES的方式。在智能网关层,有很多业务都要调用ES数据,为了防止单个业务占用过多资源,影响到其他业务使用,网关可以为每个业务分配各自的QPS并设置优先级。一旦集群出现问题,可以对低优先级的业务进行熔断限流,以保证高优先级的业务。
由于在ES的数据层把索引按照来源进行拆分,数据被分散到多个集群中,这会给查询带来一定的麻烦。为了方便前端业务的调用,网关路由所有模块可以根据业务端查询的数据类型,自动路由到对应的索引,同时网关层也会对业务端查询进行优化,比如根据时间段选择对应索引,而不是扫描全部索引。
最上面一层是业务接入层,包括上文提到的舆情业务、指数业务、融媒业务等等。
基于阿里云ES打造的统一数据平台,也可以看作是一个分层架构,如下图。
最底层文档写入ES索引前,会先进入路由层。路由服务会根据文档的来源、发布时间、机型状态等,选择对应的集群以及索引,比如自动选择对应平台或者是对应索引所在的机器。
对日增数据量比较少的平台,会按照周或月进行索引拆分。对日增数据量很大的平台,路由会按天创建索引,这样就避免单个索引过大、数据过于倾斜而影响整个集群性能的问题,使每个索引的大小保持基本相同。
再向上一层是多个ES集群,包括不同平台的数据集群和冷热数据集群。前面一层经过路由策略之后,最终数据会分散到对应集群的对应索引中。为了方便查询,通过开发的Proxy,对用户特定的索引查询、多索引查询和聚合查询,甚至跨集群查询等,可以对数据进行查询集合,做到对业务端底层的索引细节屏蔽、业务端无感知、降低业务端调用成本,同时也方便底层的迭代升级。
基于以上的架构,在阿里云的ES数据平台提供近三个月超过100亿的热数据,在近三个月的索引占用空间超过60TB,日增网络公开内容数据超过1.2亿,单篇文档搜索字段超过200。
在这么大数据量的情况下,频繁变动升级会带来一些问题。值得一提的是,利用阿里云ES诊断功能,可以很方便地发现ES集群潜在的问题,也为集群的运维方向提供诊断经营。
在阿里云ES各种功能的加持下,清博大数据平台的稳定性较之以前提升了60%,整个运维时间减少了80%。正是由于阿里云Elasticsearch平台的各种能力,让团队可以把更多的精力放到产品开发和迭代上,比如基于平台能力快速开发了轻薄融媒平台,为清博融媒平台提供内容检索服务。
在开发的*补贴类应用中提供政策搜索服务,为后面的推荐算法提供出色的结果,也为年终公众号运营画像类应用提供相关统计服务。除此之外,基于平台的能力还能提供更多的产品形态。
【阿里云Elastic Stack】100%兼容开源ES,独有9大能力,提供免费 X-pack服务(单节点价值$6000)
相关活动
更多折扣活动,请访问阿里云 Elasticsearch 官网
阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费
下载白皮书:Elasticsearch 八大经典场景应用