《Elasticsearch 在字节跳动的实践.pdf》由会员分享,可在线阅读,更多相关《Elasticsearch 在字节跳动的实践.pdf(38页珍藏版)》请在三个皮匠报告上搜索。
1、ES 在字节跳动的实践在字节跳动的实践黄杨锋,ByteES 负责人字节跳动,2023/04/08中国开发者大会 2023应用:ByteES 是什么?成长成就团队团队业务BP平台服务Core&Plugins云原生追求极致产品产品内核(ByteES 23.1)架构演进插件周边生态稳定好用服务服务稳定是基石性能快响应快体验好应用:业务概况1500业务数3000集群数节点数40,000应用:应用场景向量检索05音频/视频/图片的检索维度/召回率/动态更新/内存消耗时序型场景04写多读少(日志/metric 等)按天/月 建立索引冷热分离,节约成本全文检索03模糊查询(match,query_strin
2、g 等)注重排序/打分/分词结合搜索中台做各种搜索策略高安全性场景02存储敏感信息(如消息/薪资/简历等)安全分级/全链路加密/落地加密审计/认证授权结构化搜索01等值查询/范围查询区分度高低不均POI 检索06GEO查询(球面距离查询,范围查询)CPU消耗大,按区域分索引电商/教育/房产 等业务飞书/People OKR 等业务小说/音乐搜索 等业务日志/风控/metric 等业务音视频/拍搜题/云图片 等业务地理位置中台/抖音POI 等业务私有化/公有云07ToB类版权问题KA1/KA2/KA3 等客户能力基线能力基线1.稳定稳定2.流式写入流式写入3.性能性能4.特性特性5.安全安全6.
3、成本成本7.问题定位问题定位8.监控告警监控告警架构:可用性架构-freeCCR 主从同步 诉求:多备分摊读压力容灾需求Licencse Free实时性要求较高 特点:索引维度的主备不支持主备切换采用推送方式秒级延迟架构:可用性架构-多活 诉求:数据已经在MQ/Mysql不能降级读 特点:消费MQ,消峰稳定回拨offset,补写重放相互独立,集群间互不影响故障期间能读写最新数据链路较长架构:可用性架构-跨区域数据同步(CRR)诉求:跨洋跨区域容灾跨洋跨区域数据同步 特点:适用于网络延时高(200ms)数据回环写入冲突 局限:多区域对同一文档的不同字段同时部分更新 数据一致性校验及补偿计算存储分
4、离:不仅仅是使用了网络存储计算资源和存储资源彻底解耦,不会相互影响收益:计算/存储资源秒级扩容shard relocation/split/shrink 更快速不用写副本,写性能更快存储成本只有以前的1/(n+1),并且安使用量计费架构:分离架构-计算存储分离业务诉求:CPU 100%了,能否快速扩计算资源?写入不够快?扩/缩容再快一些?运维是否更高效?成本能否更低?架构:分离架构-计算存储分离 特点:Primary Shard负责写数据和translog 均存储在NAS上同步SegmentInfosstate 互相独立主备毫秒级可见可插拔Directory,支持HDFS等其它存储 前提条件:
5、存储支持一写多读架构:分离架构-冷热分离 传统冷热分离:区分热节点/冷节点计算和冷热存储介质强绑定 特点:计算不分冷热,存储分冷热Master节点无感知、Shard不用迁移迁移流程更简单/性能更快Translog/metadata 存热介质,写冷数据性能更快同时适配存算分离架构和传统架构Segment 级别的细粒度调节,灵活性更高架构:分离架构-读写分离 非读写分离:读写耦合一起,扩缩容不方便,性能较低,成本较高 常规读写分离:额外拷贝至少一次数据 特点:写服务无状态、自适应扩缩容,提升性能潮汐特性,降低成本基于存算分离架构,零拷贝索引挂载 难点:优雅处理更新/删除可用:可控延时队列 现象:请
6、求波动导致服务不可用延时很长,基本都超时CPU 暴增内部堆积和Reject 请求数激增 业务预期:过载的部分失败,不过载部分应该要正常,而实际都失败。CPU 的变化应该和QPS的变化应该差不多的,而实际不是。可用:可控延时队列 思路:Search Queue 里还应考虑等待时间,对于等待过长的直接失败返回 效果:请求成功率有数倍提升堆积也能快速恢复功能:向量检索 诉求抖音/西瓜 音视频搜索高危音视频消重教育类 图片检索 功能特点召回率高(98%)查询速速快全内存耗CPUHNSW已支持PQ支持中安全:全链路 认证授权基于角色的访问权限控制支持KANI/SSO支持GDPR支持API 细粒度授权 安
7、全加密支持 HTTPS/TLS 访问支持ECM/KMS 数据加密 监控审计支持审计操作支持审计监控告警 数据安全支持数据加密落地支持加密文件系统堡垒机管控日志脱敏问题定位:内核服务治理 诉求内核侧全链路追踪内核多层次Metric分析各个环节的性能 功能可追踪所有读/写请求可追踪读写慢日志无缝接入MS的日志搜索,方便使用可观测到接入层/数据处理层/引擎层/存储层的metric和trace问题定位:内核服务治理 诉求内核侧全链路追踪内核多层次Metric分析各个环节的性能 功能可追踪所有读/写请求可追踪读写慢日志无缝接入MS的日志搜索,方便使用可观测到接入层/数据处理层/引擎层/存储层的metri
8、c和trace成本:降本增效 资源方面:容器化迁移提升利用率 运营方面:计费,按需使用、按量付费 技术方面:ILM(Rollover/Freeze/Merge/冷热分离)setting/mapping 优化压缩算法/压缩块大小调整架构升级/ES 版本升级贡献社区lucene CoveringQuery 相关:10367lucene Memory 相关:10627,10657,10661elasticsearch Translog 相关:82721,elasticsearch Offset 相关:86110elasticsearch CachingDirectory 相关:92440elasti
9、csearch AsyncFetch 相关:93632,94139elasticsearch RoutingTable 相关:94379,94417opensearch KNN支持FAISS:285优雅使用优雅使用1.接入接入2.平台功能平台功能/使用使用3.常用架构常用架构4.高危操作高危操作5.最佳实践最佳实践容器化架构演进2021S1S2S3S42020S1S2S3S4第1代:自建容器+本地共享存储第1.5代:自建容器+本地隔离存储第2.5代:BKE 容器+多 字节块存储第2代:BKE 容器+字节块存储2019S2S3S4第3代:BKE 容器+字节NAS文件存储第一代:自建容器+本地存储
10、 优点:隔离业务隔离资源隔离影响隔离快速部署、扩/缩容、升级资源消耗较VM低 缺点:自建K8S运维成本高机器维护成本高存储上限较低第二代:BKE容器+字节块存储 优点:运维成本更低IO吞吐高资源利用率更高成本更低避免单存储集群故障 缺点:IO 链路更长网络带宽占用更多双 块存储集群第三代:BKE容器+字节NAS文件存储 特点:计算存储分离架构的载体NAS 支持多写多读一个ES集群对应一个卷Pod 漂移不用迁移数据 风险:单副本性能较块存储稍差单存储集群风险容器化后的一些思维转变 专属集群已是标配每个业务独占集群稳定性优先 索引治理 转向 集群治理集群个数将快速增长,如何高效治理快速部署不用集群
11、的识别及下线智能扩缩容 滚动升级是新常态扩缩 CPU/Mem 安装升级插件KA业务定制化POD 无感漂移常见问题与处理常见问题与处理1.读写性能优化方向读写性能优化方向2.数据同步方式数据同步方式3.线上问题处理预案线上问题处理预案4.流程规范流程规范&保障保障流量接入&治理:ESProxy&Client SDK 功能具备限流、降级、熔断支持流量录制/压测/回放轻量级的鉴权能力完善的监控和告警全白屏化操作 切流/调度机房调度:自动均衡/指定比例路由:按机房/索引可自定义调度策略 SDK 使用与ES原生API保持一致,对业务透明支持Golang/Python/Java Client SDKAPI
12、识别/信息注入(索引名/API/读写)全链路追踪(logID)问题复现:消息录制/回放/压测 目的:通过查看和重放线上请求来复现线上问题,加快问题的定位解决用线上请求来压测,提供的准确的性能信息 功能:录制线上实际请求查询线上请求重放线上请求用线上请求进行压测流批一体:ES Flink 典型场景:MQ2ESMySql2ESHive2ES 性能:提前bulk分组,降低扇出。去掉translog去掉压缩可配压缩块 功能:限流/提速/回溯非侵入式的CDC:EBus 介绍ES的数据导出组件,可持续获取数据的变更,并将其发送至消息中间件(MQ)基于日志,非侵入式 适用场景:对账跨区域的数据同步离线分析实
13、时备份 功能:支持导出存量持续获取增量支持索引粒度监控告警:全栈式/千人千面 监控:所用组件均在监控之中涵盖metric生成、采集、存储、转存、分析、展示 等全链路功能区分业务视图/平台视图各类 监控大盘 告警:零门槛配置实现告警自动注入支持自定义告警支持自定义告警接收人/告警值班模版专属告警群,让告警直达业务健康检查:定期巡检/异常告警 运营周报未来规划未来规划未来持续演进架构架构读写分离架构冷热分离架构离在线混合Serverless更快更强功能功能滚动升级:无感/快速成本:超卖Join:性能提升Range Shard向量检索:加强POI:性能优化前瞻性探索探索CPU 和 Mem 分离ES on FPGA 软硬结合基于机器学习的语义搜索感谢观看感谢观看中国开发者大会 2023中国开发者大会 2023 专业、垂直、纯粹的 Elastic 开源技术交流社区https:/