热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

58同城的Elasticsearch应用与平台构建实践

本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。
### 58同城Elasticsearch应用与平台构建
#### 分享概览
- **分享人**:于伯伟,58同城高级架构师
- **编辑整理**:陈树昌
- **来源**:DataFunTalk

#### 引言
Elasticsearch是一种强大的分布式搜索和分析引擎,适用于全文检索、结构化查询和数据分析等场景。它基于Lucene构建,是当前最受欢迎的开源搜索引擎之一。58同城不仅在其主要搜索引擎中使用Elasticsearch,还在内部创新搜索业务和大规模实时OLAP(在线分析处理)中广泛应用。

#### 集群优化与管理
- **背景**:初期,58同城各部门自行维护Elasticsearch,随着使用频率和重要性的提升,数据库团队接手了全公司的Elasticsearch管理,面临多种挑战,如复杂的使用场景、版本不统一、缺乏监控等问题。
- **常见问题**:
- **磁盘空间不足**:索引泛滥、缺乏生命周期管理、分片设置不当等。
- **写入性能下降**:索引设计不合理、分片过多、副本设置不当等。
- **应对措施**:
- 实施严格的索引管理和权限控制。
- 优化索引生命周期,及时清理不再需要的数据。
- 合理规划分片数量,避免单个分片过大。
- 日志类索引按天或更细粒度划分。
- 不同集群避免共享同一服务器节点。

#### 典型应用案例
- **ELKB日志管理方案**:利用Elasticsearch、Logstash、Kibana和Beats组成的日志管理框架,实现日志的收集、存储和可视化。
- **实时日志平台**:通过Flume和Filebeat收集日志,Kafka缓存,Logstash过滤,最终存储于Elasticsearch,并通过Kibana展示。
- **MySQL实时慢日志系统**:通过Filebeat收集MySQL慢日志,经Logstash处理后存储至Elasticsearch,支持实时查看和分析。

#### 平台化建设
- **用户端**:提供Elasticsearch的查询、统计和状态监控等功能。
- **管理端**:实现Elasticsearch集群的一键部署和索引治理。
- **监控与报警**:使用Zabbix + Grafana进行集群监控和报警。

#### 未来规划
- **版本升级**:计划升级至Elasticsearch 7.X,以利用其性能优化特性。
- **智能诊断**:开发自动化的故障检测和处理机制。
- **私有云探索**:优化资源配置,提高资源利用率。

#### 问答环节
- **数据同步**:Hadoop或Hive数据可通过官方组件或自定义程序同步至Elasticsearch。
- **日志格式定义**:使用Filebeat的多行合并功能和Logstash的过滤规则处理复杂日志。
- **MySQL数据同步**:通过业务层双写、DataX或Canal等工具实现MySQL数据的实时同步。
- **二级索引**:采用类似MySQL回表查询的方式,在Elasticsearch中存储相关记录ID,查询后再从MySQL或HBase中获取完整数据。

### 嘉宾介绍
- **姓名**:于伯伟
- **职位**:58同城高级架构师
- **职责**:负责58同城数据库部门,提供高可靠、高性能的数据库服务,涵盖MySQL、Redis、MongoDB、TiDB和Elasticsearch等数据库类型。
推荐阅读
  • ODBC介绍:开放式数据库连接详解
    本文详细介绍了ODBC(开放式数据库连接),这是一种允许应用程序访问多种数据库系统的标准API。自1992年由微软与Simba合作推出以来,ODBC已成为跨平台数据访问的重要标准。 ... [详细]
  • Working with Errors in Go 1.13
    作者|陌无崖 ... [详细]
  • 掌握数据库引擎存储过程与系统视图查询:DBA与BI开发者的必备技能
    本文介绍了如何利用数据库引擎存储过程及系统视图查询数据库结构和对象信息,为数据库管理员(DBA)和商业智能(BI)开发人员提供实用的基础知识。文章涵盖了一系列常用的SQL Server存储过程和系统视图,帮助读者快速获取数据库的相关信息。 ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • .NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了
    .NETCore中的一个接口多种实现的依赖注入与动态选择看这篇就够了最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式,为了灵活我在依赖注入的 ... [详细]
  • SQL Server 实例默认排序规则详解
    本文详细介绍了如何在安装过程中为 SQL Server 实例指定默认排序规则,并讨论了不同安装选项下的排序规则选择逻辑。 ... [详细]
  • MySQL中的Anemometer使用指南
    本文详细介绍了如何在MySQL环境中部署和使用Anemometer,以帮助开发者有效监控和优化慢查询性能。通过本文,您将了解从环境准备到具体配置的全过程。 ... [详细]
  • 近期,公司在构建新的交易系统时遇到了一个常见的问题——金额存储。由于涉及资金的操作需要高度的准确性,使用float类型进行金额计算可能会导致不可预见的误差。本文将深入探讨这一问题,并提供解决方案。 ... [详细]
  • FreeBSD作为Berkeley Software Distribution (BSD)的一个关键分支,其发展历程深刻影响了现代操作系统的设计。本文将探讨FreeBSD从早期版本到最新版本的技术进步及其对计算行业的贡献。 ... [详细]
  • 构建Snowflake中的近实时数据摄取管道
    探索如何在Snowflake中构建高效的近实时数据摄取管道,利用其内外表特性及Snowpipe服务,实现数据的快速、稳定加载。 ... [详细]
  • 智能全栈云风暴:AI引领的企业转型之路
    当提及AI,人们脑海中常浮现的是天才少年独自编写算法,瞬间点亮机器人的双眼。然而,真正的AI革命正由大型企业和机构推动,它们利用全栈全场景AI技术,实现数字化与智能化的深度转型。 ... [详细]
  • 利用GitHub热门资源,成功斩获阿里、京东、腾讯三巨头Offer
    Spring框架作为Java生态系统中的重要组成部分,因其强大的功能和灵活的扩展性,被广泛应用于各种规模的企业级应用开发中。本文将通过一份在GitHub上获得极高评价的Spring全家桶文档,探讨如何掌握Spring框架及其相关技术,助力职业发展。 ... [详细]
  • SaaS定价策略:数学建模与商业交易重构
    本文探讨了如何通过数学建模来优化SaaS产品的定价策略,并详细介绍了将传统应用转化为云应用时,所需进行的业务功能和架构层面的调整。 ... [详细]
  • 我的新书已正式上市,可在当当和京东购买。如果您喜欢本书,欢迎留下宝贵评价。本书历时3至4年完成,内容涵盖MySQL的安装、配置、开发、测试、监控和运维等方面,旨在帮助读者系统地学习MySQL。 ... [详细]
  • 深入解析:主流开源分布式文件系统综述
    本文详细探讨了几款主流的开源分布式文件系统,包括HDFS、MooseFS、Lustre、GlusterFS和CephFS,重点分析了它们的元数据管理和数据一致性机制,旨在为读者提供深入的技术见解。 ... [详细]
author-avatar
男人着责任
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有