去哪儿
docker+k8s部署elasticsearch, 设定慢日志记录,
节点划分(data, master, hot, warm这些),分片数副本数
设定, opensearch系统的自助配置,监控和报警,监控数据汇总
审计日志,错误日志,访问日志。
PB级数据量写入和查询
使用场景:附近的人(GPS), 报表,监控统计,物/车联网传感器数据,
日志实时分析,站内搜索(订单,产品,文档),
定期force merge (segment 是jvm消耗的主要者)
腾讯云
考虑问题:成本,可用性,性能。
可用性挑战:大查询,瞬间性的压力过载,数据损坏,master堵塞
成本挑战:定时关闭历史索引,磁盘利用率低
性能挑战:
写入: bulk , 多线程, 自带主键(_id)性能衰退1倍
查询:毛刺,
查询时间要求敏感,需要深度调优,数值体现
限流、熔断(timeout请求)、备份、跨区多机房容灾, 权限(opengateway),
冷数据落盘(生命周期管理,日期滑动窗口),降低GC,优化merge策略,查询剪枝
跨越速运
多重聚合性能问题(快递行业按月度建索引和查询聚合)
指标: QPS, 平均响应时间
bucket原理: 先分组后查询,节省内存空间
mysql: 先查询后分组
elasticsearch聚合能力边界:深度二次聚合,去重后聚合
阿里云
自动化运维(基于经验。类似watch监控):自动诊断系统(正则删除禁用、别
名使用,dynamic禁用,GC日志、slow log日志,type合理性)
个推
elasticsearch0.9到1.5版本的升级,升级前比较多问题,节点脱离集群,jvm的
堆内存过高(fresh原因)
滴滴
应用场景:redis从库、 日志搜索、安全场景分析、应用核心搜索
3500+节点、1000+应用, 8PB+数据量,月存储成本350w+, 5w+QPS
数据同步(redis2es, hive2es, log2es)、数据清理(ingest节点)、
多版本兼容、版本升级、容量规划、DSL审核、
权限审计、多租户隔离(opensearch)、跨集群访问、indexTemplate 管理、租户管理、
DSL模板管理、用户自助接入、系统集成、学习使用成本低,自助式运维(监控体系化)
稳定性建设:事前(资源隔离、查询审核),事中(限流,查询熔断),事后(快速修复、止损)
95%命中三天的数据(优化:冷热数据),25%的字段数据从未被查询过(优化:索引重建)
斗鱼(es版本1.x)
mapping创建留备用字段,防止reindex索引
避免wildcard查询
网关:权限、查询超时熔断、限流,流量监控
百度(es版本2.x 优化改进)
(在线动态增加字段,修改分词器),加版本号,后台job自动reindex
DistributedLog: 强一致读写,高性能、高可用、可扩展
360
elasticsearch加速spacksql查询,把mysql数据弄到es上
LinkedIn :做日志搜索和分析
能用SSD就不用SATA
JVM heap设置不要超过32GB,shard不要超过50GB
知乎
现状:3500+节点、3000+索引、50000+shard、5PB数据存储和搜索、峰值2000w/s写入
应用场景: 日志搜索、 站内/app核心搜索(订单、附近的车辆)、 安全监控日志搜索和聚合分析
架构: 多集群、写入加一层sink服务 & kafka 做流量削峰、查询加一层gateway做限流熔断、安全
审计、流量监控等, 跨集群加一层低版本叫tribeNode、高版本叫跨集群(流量代理)来实现跨集群
搜索, admin服务提供对索引的生命周期管理、容量自动规划、索引和集群健康监控等功能。kafka
可以回溯数据做故障恢复,分发消息到多个集群中。
优点:支撑业务线可快速接入、统一管理与运维、可靠性高、对业务线隐藏es技术细节,做到对业务
无感知,可快速扩缩容、自动化部署、水平扩展快。
缺点:复杂性、风险性增加,如下瓶颈和挑战。
瓶颈和挑战:
1)稳定性挑战:
tribeNode会merge每个集群的ClusterState对象,对外看起来就是一个包含所有索引的节点,
ClusterState包含索引、分片和节点数据分布表等数据,如果在变更或者查询这些数据时,
tribeNode会转发这些数据到各个集群的shard中,异步等待各个shard执行成功汇总返回。
如果某个节点假死,如JVM堆内存飙升,则等待响应时间长,如果这样的请求很多,
netty的worker线程用完,则进入队列等待,阻塞影响到后面的请求操作。
2)统一性/规范性挑战:
每个集群都有自己的_cluster setting,indexTemplate . 这导致在跨集群搜索的时候难
以进行。解决方式是内部实现统一的lucene、es版本。
3)容量规划挑战:
在创建索引前先对容量进行规划,容量满了则需要对索引转移,后期应实现自动化容量转移和规划。
阿里云elasticsearch
1、支持sql查询,提高易用性、降低学习成本。
2、Faster bulk插件写入吞吐提升20%。
3、一键索引迁移。
4、支持异步写入。
5、支持高版本如7.7。
6、自动告警。
7、节点数弹性扩缩容,存储自动升降配。
8、支持冷热数据,冷数据走SATA盘,降低成本。
9、支持brotli和zstd压缩算法,具有更高的索引压缩比,大幅降低索引存储成本,写入性能下降10%,
压缩率提升45%。
11、支持限流降级插件。
12、支持场景化模板,帮助用户进行配置,使集群和索引配置达到最优。场景分为:持通用场景、数
据分析场景、数据库加速场景和搜索场景;日志增强版支持日志场景。支持在控制台上根据业务情
况修改所选场景,并查看、修改、应用相应的配置,从而优化集群的参数和索引情况,减少由于使
用错误导致的集群异常和性能问题。
13、在控制台日志模块查询ES访问日志,包含请求时间、客户端来源、请求内容等,可用于问题排
查和请求分析。
14、智能运维诊断结果推送,通过邮件方式,为用户推送相关实例的健康诊断报告,集群变更与数
据备份功能。支持每半小时的自动数据备份时间间隔,以及自定义备份周期。
15、Beats数据采集中心上线,提供多beats标准化接入方案。
16、支持用户上传自定义同义词文件,并通过分词器设置自定义分词策略。
17、提供Error Log、Slow Log、GC Log日志的查看及搜索功能,并且提供时间的filter能力。方
便用户查看了解集群的状况。