业务挑战一个在于稳定性方面:贝壳的 Elasticsearch 使用场景和很多公司不 太一样,很多公司的 Elasticsearch 搜索不一定是核心业务,比如用于日志分 析、数据分析、运维监控,但我们服务于首页最核心的业务,所以对稳定性的 要求非常高,目前我们的 SLA 至少需要满足 99.99%,未来希望能达到 5 个 9,所以我们在稳定性方面做了很多工作,比如 Elasticsearch 集群的双机房互 备,主备集群自动熔断降级、主备一键分流,以及网关层也有相应的限流和熔断 降级策略等等。另一个是数据同步方面:搜索一般白天都是业务查询的高峰期, 但是也有业务会在白天做大批量的数据变更,然后这些变更需要及时的同步到 Elasticsearch,如果同步过快,就会造成 Elasticsearch 集群的压力增加,从 而影响到查询延时;如果同步太慢,又会影响到数据的实时性。所以需要我们对 实时和批量做区分,并对写入速度进行权衡。我们最终通过使用多个 kafka 消息 队列来对数据写入异步化和并行化,同时对生产者和消费者都进行限速。并且对 于那些数据频繁变更的业务,我们在写入 Elasticsearch 之前提前进行小批量数 据的预合并,从而降低 Elasticsearch 的写入压力,保证查询性能的稳定。
资源来源于《Elasticsearch 中国开发者调查报告》下载地址:https://developer.aliyun.com/topic/download?id=59
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。