ES技术点

1:ES的分布式架构原理?

ES是分布式存储,多分区(shard),多备份的集群结构。
存储索引,只能通过primary shard(主节点)进行存储数据,读取是既可以从primary(主节点)也可以从replica(备份节点)进行读取。
ES集群有多个节点,会自动选举一个master节点,主要负责维护元数据,负责切换primary shard 和 replica shard,进行故障转移。

  问题1:master节点宕机,如何处理?
  		会重新选举一个master节点,新的master节点会把宕机的master上面的primary shard 调整成 replica shard,保证能够正常的读写,并且把其他机器上面的该备份的replica shard 调整成primary shard。

  问题2:非master节点宕机,如何处理?
  		如果是非master节点宕机,master会让宕机节点上的primary shard的身份转移到其他机器上面的replica shard,接着修复当前宕机的机器,master节点会把缺失的replica shard分配过去,同步缺失数据,让集群恢复正常。

2:ES的写数据流程

1:集群会任意挑选一个节点,就做协调节点,协调节点会hash数据,计算出当前数据的对应shard
2:协调节点会将数据路由到该shard的primary shard ,写入数据
3:primary shard 会同步数据到该shard的replica shard
4:全部写完,协调节点会通知客户端,写入完成

1:写入内存buffer中,同时写入translog日志(保证节点所在机器宕机,当前进程的数据不会丢失)
2:如果buffer快满了,或者到一定的时间,就会将buffer中的数据refresh到一个磁盘中的os cache中,每隔1秒,把buffer中的数据refresh到磁盘中的os cache中。
只要数据refresh到os cache,那么客户端就可以查询到数据。
只要数据被refresh到os cache中,buffer中的数据就会被清空。
3:ES一直重复写入数据,buffer会每隔一秒清空,但是translog日志是一直增加,逐渐增大的,到一定程度,就会执行commit操作。
commit操作的步骤: 1:写commit point (用于标识当前commit对应的多个segment file)
2:将os cache数据fsync强刷到磁盘中去(一个一个的segment file文件中)
3:清空translog日志文件
commit执行条件: 1:每隔30分钟
2:手动commit

  问题1:ES为什么是准实时的?
  	    ES数据是每隔一秒把数据从buffer中refresh到segment file中(首先会先进入os cache中),默认一秒,所以是准实时的,当然也可以自己手动refresh。

  问题2:translog日志的作用?
  		因为os cache 和 buffer都是内存文件,一旦存储当前数据的节点所在机器宕机,那么数据就会丢失,translog日志是持久化到机器上,可以用于后面的数据恢复。

  问题3:ES会存在5秒的数据丢失,为什么?
  		因为数据被写入translog日志并不是直接写入translog日志,而是先写入os cache中,然后每隔5秒刷到磁盘中。中间有5秒的数据是存在内存中的。

3:ES的删数据流程

删除数据,标识为.del,标识这条数据被删除了。这样数据就不能搜索到

物理删除:merge操作
当segment file 到一定的程度,会自动触发merge操作,把一堆小segment file 合并成一个大的segment file,并且被标识为.del的数据不会被merge,merge之后的文件就不存在.del文件。

4:ES的读数据流程

1:客户端发送一个get请求,会随意请求到一个机器,这个机器的节点会作为协调节点;
2:协调节点根据document id,hash计算出这个doucment所在的shard节点,路由到目标节点;
3:这个shard会获取数据,给到协调节点,返回给客户端

5:ES的搜索流程

1:客户端发送一个搜索请求,随意请求一个机器,这个机器所在的节点作为协调节点;
2:协调节点会把所有请求发送到集群里面所有shard的primary shard或者replica shard;
3:这些shard会返回匹配的所有的document id,再次根据document id到这些shard里面查询完整数据;
4:筛选最匹配的数据进行返回。

6:如何提升ES的搜索性能

	1:filesystem cache 	(影响最大因素)
		写入ES的数据,都是写到磁盘中,磁盘中的segmen file文件会被缓存到filesystem cache中。

		filesystem cache内存越高,性能越高。

	2:只对用于检索的数据进行存储到ES中,减少数据占用ES机器上filesystem cache的宝贵空间。
		一般使用ES + Hbase的架构
		一般在ES中按照搜索条件查询获取document id,按照通过document id在Hbase中查询详情,效率会很高。
		建议:写入ES中的数据小于等于或者略大于ES集群设置的filesystem cache的内存容量。

	3:数据预热
		已经按照上述最优方案处理,ES的整体数据依然大于filesystem cache的大小,这种情况,如何处理?
		把用户经常访问的数据,通过程序定时调用,热数据进入filesystem cache中。这样后面的人访问,会直接从filesystem cache中获取。

	4:冷热分离
		(类似于mysql的水平拆分)
		热数据和冷数据在不同的索引上,保证热数据一直停留在filesystem cache中,确保热数据的访问性能会很高。冷数据保存在磁盘中,反正访问频率低。

	5:document模型设计
		尽量避免在搜索时,做复杂的操作。

	6:分页性能优化
		因为查询很深的数据分页情况下,shard会查询大量的数据,返回到协调节点,进行筛选排序,再进行分页,返回到客户端。
		翻的越深,性能越低。
		解决方案:
			1)不允许深度分页/默认深度分页性能很差
			2)APP推荐页的下拉分页,使用scroll api
				类似于一次性生成所有数据的快照,然后每次翻页就是通过游标移动,获取下一页。

	5台ES机器,64G内存,每天500M的数据进入ES,稳定上线几个月,目前还剩余100+G内存可供使用。几个索引,每个索引是8个shard。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
根据提供的引用内容,以下是关于Elasticsearch技术调研的介绍: Elasticsearch是一个开源的分布式搜索和分析引擎,它构建在Apache Lucene库之上。它提供了一个分布式多租户的全文搜索引擎,可以实时地存储、检索和分析大规模数据。Elasticsearch具有高可用性、可扩展性和强大的搜索功能,适用于各种应用场景,包括日志分析、实时数据分析、全文搜索等。 在进行Elasticsearch技术调研时,可以关注以下几个方面: 1. 数据存储和索引:Elasticsearch使用倒排索引来加速搜索和过滤操作。它将数据存储在分片中,并使用主分片和副本分片来提供高可用性和容错性。 2. 分布式架构:Elasticsearch采用分布式架构,可以水平扩展以处理大规模数据。它使用分片和副本来实现数据的分布和冗余存储,提供高可用性和负载均衡。 3. 查询和搜索:Elasticsearch提供了丰富的查询语法和搜索功能,包括全文搜索、过滤、聚合等。它支持复杂的查询操作,并提供了相关性评分和高亮显示等功能。 4. 实时数据分析:Elasticsearch支持实时数据分析,可以对大规模数据进行聚合、统计和可视化。它提供了强大的聚合功能,可以对数据进行分组、求和、平均等操作。 5. 可视化和监控:Elasticsearch提供了Kibana工具,用于可视化和监控数据。Kibana可以连接到Elasticsearch集群,提供实时的数据可视化和仪表盘。 6. 安全性和权限控制:Elasticsearch提供了安全性和权限控制功能,可以对数据进行访问控制和身份验证。它支持基于角色的访问控制和SSL/TLS加密。 7. 故障恢复和容错性:Elasticsearch具有故障恢复和容错性,可以自动处理节故障和数据丢失。它使用分片和副本来实现数据的冗余存储和自动恢复。 8. 扩展性和集成:Elasticsearch具有良好的扩展性和集成性,可以与其他工具和系统进行集成。它提供了丰富的API和插件机制,可以扩展其功能和集成其他系统。 以上是关于Elasticsearch技术调研的介绍,希望对您有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值