这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架

这篇具有很好参考价值的文章主要介绍了这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

默认情况下 routing参数是文档ID (murmurhash3),可通过 URL中的 _routing 参数指定数据分布在同一个分片中,index和search的时候都需要一致才能找到数据。

如果能明确根据_routing进行数据分区,则可减少分片的检索工作,以提高性能

四、优化案例

在我们的案例中,查询字段都是固定的,不提供全文检索功能,这也是几十亿数据能秒级返回的一个大前提:

**1、**ES仅提供字段的检索,仅存储HBase的Rowkey不存储实际数据。

**2、**实际数据存储在HBase中,通过Rowkey查询,如下图。

**3、**提高索引与检索的性能建议,可参考官方文档(如https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-indexing-speed.html)

一些细节优化项官方与其他的一些文章都有描述,在此文章中仅提出一些本案例的重点优化项。

这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch

4.1 优化索引性能

**1、**批量写入,看每条数据量的大小,一般都是几百到几千。

**2、**多线程写入,写入线程数一般和机器数相当,可以配多种情况,在测试环境通过Kibana观察性能曲线。

**3、**增加segments的刷新时间,通过上面的原理知道,segment作为一个最小的检索单元,比如segment有50个,目的需要查10条数据,但需要从50个segment

分别查询10条,共500条记录,再进行排序或者分数比较后,截取最前面的10条,丢弃490条。在我们的案例中将此 “refresh_interval”: “-1” ,程序批量写入完成后

进行手工刷新(调用相应的API即可)。

**4、**内存分配方面,很多文章已经提到,给系统50%的内存给Lucene做文件缓存,它任务很繁重,所以ES节点的内存需要比较多(比如每个节点能配置64G以上最好)

**5、**磁盘方面配置SSD,机械盘做阵列RAID5 RAID10虽然看上去很快,但是随机IO还是SSD好。

**6、**使用自动生成的ID,在我们的案例中使用自定义的KEY,也就是与HBase的ROW KEY,是为了能根据rowkey删除和更新数据,性能下降不是很明显。

**7、**关于段合并,合并在后台定期执行,比较大的segment需要很长时间才能完成,为了减少对其他操作的影响(如检索),elasticsearch进行阈值限制,默认是20MB/s,

可配置的参数:“indices.store.throttle.maxbytesper_sec” : “200mb” (根据磁盘性能调整)

合并线程数默认是:Math.max(1, Math.min(4, Runtime.getRuntime().availableProcessors() / 2)),如果是机械磁盘,可以考虑设置为1:index.merge.scheduler.maxthreadcount: 1,

在我们的案例中使用SSD,配置了6个合并线程。

4.2 优化检索性能

**1、**关闭不需要字段的doc values。

**2、**尽量使用keyword替代一些long或者int之类,term查询总比range查询好 (参考lucene说明 http://lucene.apache.org/core/740/core/org/apache/lucene/index/PointValues.html)。

**3、**关闭不需要查询字段的_source功能,不将此存储仅ES中,以节省磁盘空间。

**4、**评分消耗资源,如果不需要可使用filter过滤来达到关闭评分功能,score则为0,如果使用constantScoreQuery则score为1。

5、关于分页:

(1) from + size:

每分片检索结果数最大为 from + size,假设from = 20, size = 20,则每个分片需要获取20 * 20 = 400条数据,多个分片的结果在协调节点合并(假设请求的分配数为5,则结果数最大为 400*5 = 2000条) 再在内存中排序后然后20条给用户。

这种机制导致越往后分页获取的代价越高,达到50000条将面临沉重的代价,默认from + size默认如下:

index.maxresultwindow :10000

(2) searchafter: 使用前一个分页记录的最后一条来检索下一个分页记录,在我们的案例中,首先使用from+size,检索出结果后再使用search****after,在页面上我们限制了用户只能跳5页,不能跳到最后一页。

(3) scroll 用于大结果集查询,缺陷是需要维护scroll_id

**6、**关于排序:我们增加一个long字段,它用于存储时间和ID的组合(通过移位即可),正排与倒排性能相差不明显。

**7、**关于CPU消耗,检索时如果需要做排序则需要字段对比,消耗CPU比较大,如果有可能尽量分配16cores以上的CPU,具体看业务压力。

8、关于合并被标记删除的记录,我们设置为0表示在合并的时候一定删除被标记的记录,默认应该是大于10%才删除:“merge.policy.expungedeletesallowed”: “0”。

{
“mappings”: {
“data”: {
“dynamic”: “false”,
“_source”: {
“includes”: [“XXX”] – 仅将查询结果所需的数据存储仅_source中},
“properties”: {
“state”: {
“type”: “keyword”, – 虽然state为int值,但如果不需要做范围查询,尽量使用keyword,因为int需要比keyword增加额外的消耗。
“doc_values”: false-- 关闭不需要字段的doc values功能,仅对需要排序,汇聚功能的字段开启。},
“b”: {"
type": “long”

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch
这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch
这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch
这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch
这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch
这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch

下面是我在学习HTML和CSS的时候整理的一些笔记,有兴趣的可以看下:

这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch

进阶阶段

进阶阶段,开始攻 JS,对于刚接触 JS 的初学者,确实比学习 HTML 和 CSS 有难度,但是只要肯下功夫,这部分对于你来说,也不是什么大问题。

JS 内容涉及到的知识点较多,看到网上有很多人建议你从头到尾抱着那本《JavaScript高级程序设计》学,我是不建议的,毕竟刚接触 JS 谁能看得下去,当时我也不能,也没那样做。

我这部分的学习技巧是,增加次数,减少单次看的内容。就是说,第一遍学习 JS 走马观花的看,看个大概,去找视频以及网站学习,不建议直接看书。因为看书看不下去的时候很打击你学下去的信心。

然后通过一些网站的小例子,开始动手敲代码,一定要去实践、实践、实践,这一遍是为了更好的去熟悉 JS 的语法。别只顾着来回的看知识点,眼高手低可不是个好习惯,我在这吃过亏,你懂的。

1、JavaScript 和 ES6

在这个过程你会发现,有很多 JS 知识点你并不能更好的理解为什么这么设计,以及这样设计的好处是什么,这就逼着让你去学习这单个知识点的来龙去脉,去哪学?第一,书籍,我知道你不喜欢看,我最近通过刷大厂面试题整理了一份前端核心知识笔记,比较书籍更精简,一句废话都没有,这份笔记也让我通过跳槽从8k涨成20k。

这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch

2、前端框架

前端框架太多了,真的学不动了,别慌,其实对于前端的三大马车,Angular、React、Vue 只要把其中一种框架学明白,底层原理实现,其他两个学起来不会很吃力,这也取决于你以后就职的公司要求你会哪一个框架了,当然,会的越多越好,但是往往每个人的时间是有限的,对于自学的学生,或者即将面试找工作的人,当然要选择一门框架深挖原理。

以 Vue 为例,我整理了如下的面试题。

这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架,2024年程序员学习,前端,面试,elasticsearch

)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-lwBD4NLf-1712580390353)]文章来源地址https://www.toymoban.com/news/detail-858988.html

到了这里,关于这些年Web前端面试的那些套路,优化后,ES-做到了几十亿数据检索-3-秒返回,前端音频框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端面试问题汇总 - ES6篇

    let 和 const 声明 : 引入块级作用域的变量声明方式,let 声明的变量可重新赋值,const 声明的变量不可重新赋值。 箭头函数 (Arrow Functions): 提供了更简洁的函数定义语法,并且没有自己的 this、arguments、super 或 new.target,这些值继承自执行上下文。 模板字符串 (

    2024年04月16日
    浏览(54)
  • 前端面试:【前端工程化】CommonJS 与 ES6 模块

    嗨,亲爱的前端开发者!在现代Web开发中,模块化是构建可维护和可扩展应用程序的关键。本文将深入探讨两种主要的JavaScript模块系统:CommonJS 和 ES6 模块,以帮助你了解它们的工作原理、用法以及如何选择合适的模块系统。 1. CommonJS: 用途: CommonJS 是一种模块系统,最初

    2024年02月11日
    浏览(52)
  • 【面试题】前端面试复习6---性能优化

    前端面试题库 ( 面试必备)              推荐:★★★★★ 地址:前端面试题库 要在 Chrome 中查看 性能指标 ,可以按照以下步骤操作: 打开 Chrome 浏览器,并访问你想要测试的网页。 使用快捷键 F12 或右键点击页面并选择 “检查”,打开开发者工具。 在开发者工具中,

    2024年02月11日
    浏览(44)
  • 前端面试:【性能优化】页面加载性能、渲染性能、资源优化

    嗨,亲爱的前端开发者!在今天的Web世界中,用户期望页面加载速度快、交互流畅。因此,前端性能优化成为了至关重要的任务。本文将探讨三个关键方面的性能优化:页面加载性能、渲染性能以及资源优化,以帮助你构建更快速、响应更快的Web应用程序。 1. 页面加载性能:

    2024年02月11日
    浏览(51)
  • Web前端面试题目汇总

    HTML/CSS部分 1、什么是盒子模型? 在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分。这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只

    2024年02月10日
    浏览(41)
  • Web 前端性能优化之三:加载优化

    2、加载优化 1、延迟加载 本着节约不浪费的原则,在首次打开网站时,应尽量只加载首屏内容所包含的资源,而首屏之外涉及的图片或视频,可以等到用户滚动视窗浏览时再去加载。以上就是延迟加载优化策略的产生逻辑,通过延迟加载“非关键”的图片及视频资源,使得页

    2024年04月26日
    浏览(44)
  • web 前端面试题50道

    目录 1、前端如何实现优化性能 2、cookie sessionStorage localStorage 区别 3、Canvas和SvG的区别是什么? 4、清除浮动的方式 5、谈谈你对静态布局、自适应布局、响应式布局、弹性布局的理解? 6、JS判断数据类型的方法 7、数组的方法 8、字符串方法 9、数组去重 10、var let const的区别

    2024年02月09日
    浏览(28)
  • 前端面试题---模块化和性能优化

    模块化是一种将程序代码划分为独立、可复用的模块的开发方法。它能够提高代码的可维护性、可复用性和可扩展性,使得代码更易于组织、调试和协作。 常见的模块化方案包括: AMD(Asynchronous Module Definition):AMD是一种异步加载模块的规范,主要用于浏览器环境。它使用

    2024年02月10日
    浏览(49)
  • 软件测试注意面试官的常规“套路”

    一、自我介绍 这里就不过多阐述了,相信很多小伙伴都有。 二、灵活问题 1、大概说说之前公司的测试流程。 2、测试报告有哪些内容? 3、如何保证用例的覆盖度? 4、什么是测试用例,什么是测试脚本?两者的关系? 5、Bug的级别,按照什么划分。 6、你认为是bug,开发认为不是

    2024年02月05日
    浏览(38)
  • 前端面试:【性能优化】前端缓存、CDN、懒加载和预加载

    亲爱的前端开发者,Web性能对用户体验至关重要。如果你想让你的网站更快、更具吸引力,就需要关注前端性能优化。在这篇文章中,我们将深入探讨四个关键的性能优化策略:前端缓存、CDN(内容分发网络)、懒加载和预加载,以助你构建高性能的Web应用。 1. 前端缓存:优

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包