1、引言本系列文章介绍如何修复Elasticsearch集群的常见错误和问题。这是系列文章的第三篇,主要探讨:Elasticsearch断路器报错了,怎么办?第一篇:Elasticsearch磁盘使用率超过警戒水位线,怎么办?第二篇:ElasitcsearchCPU使用率突然飙升,怎么办?2、啥是断路器?断路器(circuitbreakers)都指定了它可以使用内存的限制。Elasticsearch包含多个断路器,用于防止操作导致内存泄露错误(OutOfMemoryError)。此外,还有一个...
2022-05-17 17:21:05 6810浏览 0点赞 0回复 0收藏
大家好,我是武哥。这是《吃透MQ系列》的第三篇,有关Kafka的架构设计。这篇文章将带着大家参透:到底什么是Kafka架构设计的任督二脉?把握住了这个关键点,我相信你将能更好地理解Kafka的架构设计,进而顺藤摸瓜地掌握Kafka的核心技术方案。废话不多说了,开始发车。1.Kafka的技术难点究竟在哪?前一篇文章《扒开Kafka的神秘面纱》交代了两个关键信息:1、Kafka为实时日志流而生,要处理的并发和数据量非常大。可见,Kafka本身...
2022-05-17 17:20:42 6543浏览 0点赞 0回复 0收藏
大家好,我是武哥。这是《吃透MQ系列》之Kafka的第4篇,错过前3篇的,通过下面的链接一睹为快:第1篇:扒开Kafka的神秘面纱第2篇:Kafka架构设计的任督二脉第3篇:Kafka存储选型的奥秘第3篇文章我深入剖析了Kafka选用「日志文件」作为存储方案的来龙去脉以及背后「磁盘顺序写+稀疏索引」的精妙设计思路。但是,Kafka能做到单机每秒几十万的吞吐量,它的性能优化手段绝不止这一点。Kafka的高性能设计可以说是全方位的,从Prodcue...
2022-05-17 17:19:51 6145浏览 0点赞 0回复 1收藏
大家好,我是武哥。这是《吃透MQ系列》的连载:Kafka高性能设计的下篇。在上一篇文章中,指出了高性能设计的两个关键维度:计算和IO,可以将它们理解成「道」。同时给出了Kafka高性能设计的全景图,可以理解成「术」。图1:Kafka高性能设计的全景图这篇文章将继续对存储消息和消费消息的8条高性能设计手段,逐个展开分析,废话不多说,开始发车。1.存储消息的性能优化手段存储消息属于Broker端的核心功能,下面是它所采用的4条...
2022-05-17 17:19:32 6051浏览 0点赞 0回复 1收藏
大家好,我是武哥。这是《吃透MQ系列》之Kafka的第3篇,错过前两篇文章的,建议再温习下:扒开Kafka的神秘面纱Kafka架构设计的任督二脉从这篇文章开始,我将从微观角度切入,深入分析Kafka的设计原理。本文要讲的是Kafka最具代表性的:存储设计。谈到Kafka的存储设计,了解不多的同学,可能会有这样的疑惑:为什么Kafka会采用Logging(日志文件)这种很原始的方式来存储消息,而没考虑用数据库或者KV来做存储?而对Kafka有所了...
2022-05-17 17:19:09 5530浏览 0点赞 0回复 0收藏
大家好,我是武哥。这是《吃透MQ系列》的第三篇,有关Kafka的架构设计。这篇文章将带着大家参透:到底什么是Kafka架构设计的任督二脉?把握住了这个关键点,我相信你将能更好地理解Kafka的架构设计,进而顺藤摸瓜地掌握Kafka的核心技术方案。废话不多说了,开始发车。1.Kafka的技术难点究竟在哪?前一篇文章《扒开Kafka的神秘面纱》交代了两个关键信息:1、Kafka为实时日志流而生,要处理的并发和数据量非常大。可见,Kafka本身...
2022-05-17 17:16:21 4104浏览 0点赞 0回复 0收藏
大家好,我是武哥。这是《吃透MQ系列》的第二弹,有些珊珊来迟,后台被好几个读者催更了,实属抱歉!这篇文章拖更了好几周,起初的想法是:围绕每一个具体的消息中间件,不仅要写透,而且要控制好篇幅,写下来发现实在太难了,两者很难兼得。最后决定还是分成多篇写吧。一方面,能加快下输出频率;另一方面,大家也更容易消化。废话不多说了,第二弹开始发车。01为什么从Kafka开始?《吃透MQ》的开篇围绕MQ「一发一存一消费」的...
2022-05-17 10:11:31 5499浏览 0点赞 0回复 0收藏
上一篇文章中谈到了《吃透系列》的讲解思路:先找到每个技术栈最本质的东西,然后以此为出发点,逐渐延伸出其他核心知识。所以,整个系列侧重于思考力的训练,不仅仅是讲清楚What,而是更关注Why和How,以帮助大家构建出牢固的知识体系。回到正文,这是技术系列《吃透MQ》的开篇。本文主要讲解MQ的通用知识,让大家先弄明白:如果让你来设计一个MQ,该如何下手?需要考虑哪些问题?又有哪些技术挑战?有了这个基础后,我相信后...
2022-05-17 09:20:31 4849浏览 0点赞 0回复 0收藏
每个人都有成长的渴望,也都会遇到成长的瓶颈。下面这个问题是一个读者问我的:如何才能训练成为一个编程高手?先简单说下这个读者的背景:工作3年多,目前在大厂做后台开发,身边有不少编程高手,是他想要追赶的目标。最近半年时间,他花了一些精力在研究源码和底层原理上,但总觉得这些知识和实际工作衔接不好,提升很慢,学习动力也越来越差,希望我能给点建议。我和他语音聊了半个小时,讲了一些我个人以及身边同事的案例。...
2022-05-16 18:12:59 4962浏览 0点赞 0回复 0收藏
在斯坦福大学,乔布斯做了一场我认为他最精彩的演讲。他讲的第一个故事是connectingthedots,这也是贯穿他一生非常重要的思想。“你不可能充满预见地将生命的点滴串联起来;只有在你回头看的时候,你才发现这些点点滴滴之间的联系。所以,你要坚信,你现在所经历的将在你未来的生命中串联起来…正是这种信仰让我不会失去希望,它让我的人生变得与众不同。”我不禁在想:我的编码以及架构生涯中,那些点是什么,又终将会连成怎样...
2022-05-16 18:12:49 6167浏览 0点赞 0回复 0收藏
03问题分析上一章节基本把这个Bug相关的原理知识介绍清楚了,下面正式进入问题的分析过程。最开始拿到这个问题,我也是比较头秃的,尤其看到读者下面这段信息。当然,我的功力是达不到盲猜水平的,说下我的完整思路。第1步复现问题我让读者给我打包发了Demo的源代码、数据库脚本以及ShardingProxy配置,然后本地安装了ShardingProxy4.1.1版本,再通过Navicat连接到ShardingProxy执行数据库脚本,环境基本就准备完毕了。启动Demo...
2022-05-16 18:12:39 5602浏览 0点赞 0回复 0收藏
这篇文章记录了给Apache顶级项目分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提交issue,中途因为官方开发者的主观臆断被Close了两次,直到11月20日才被认定成Bug并发出修复版本,历时20多天。本文将还原该Bug的分析过程,将有价值的经验和技术点进行提炼。通过本文,你将收获到:1、疑难问题的排查思路2、数据库中间件ShardingProxy的原理3、MySQL预编译的流...
2022-05-16 18:12:32 5509浏览 0点赞 0回复 0收藏
本文作者:张勇,现任科大讯飞高级架构师。11年后端经验,曾就职于同程艺龙、神州优车等公司。乐于分享、热衷通过自己的实践经验平铺对技术的理解。一位七牛的资深架构师曾经说过这样一句话:“Nginx+业务逻辑层+数据库+缓存层+消息队列,这种模型几乎能适配绝大部分的业务场景。这么多年过去了,这句话或深或浅地影响了我的技术选择,以至于后来我花了很多时间去重点学习缓存相关的技术。我在10年前开始使用缓存,从本地缓存、...
2022-05-16 18:11:20 5575浏览 0点赞 0回复 0收藏
经典著作《重构》这本书中有这么一段话:一开始,我所做的重构都停留在细枝末节上。随着代码趋向简洁,我发现自己可以看到一些设计层面的东西了,这些是我以前理解不到的,如果没有重构,我达不到这种高度。重构,着实是一件让程序员兴奋的事情。今年年初,我们团队完成了一个复杂项目的重构工作,它属于广告系统最核心的引擎部分,大概有300多个文件,3万多行代码。从技术方案设计到最终全量上线仅仅花了1个月左右的时间,而且...
2022-05-16 18:10:31 6790浏览 0点赞 0回复 0收藏
1、打开B站,搜索Elasticsearch映入眼帘的几个标题引起了我极大的好奇:我对视频标题的理解可能还停留在:可能是我out了吧?有必要深入分析一下。2、B站视频标题ELK分析一把2.1、拿下标题、作者、阅读量等基础数据信息。2.2、批量导入Elasticsearch2.3、可以愉快的分析了我去,这咋搞?想搞个观看量排行榜?预处理一下(ingest+reindex),就能搞定。3、可视化分析结果3.1标题前缀形容词词云区别于之前的常规标题,标题在求新、...
2022-04-19 18:05:22 5983浏览 0点赞 0回复 0收藏
1、背景作为一家搜索引擎公司,我们会很倚赖ES帮忙处理包括文章召回,数据源划分,实体、标签管理等任务,而且都收到了不错的结果。最近我们需要对行业知识库进行建模,其中可能会涉及到实体匹配、模糊搜索、向量搜索等多种召回和算分方式,最终我们选择了通过ES7.X(最终选择7.10)里的新功能,Densevector帮忙一起完成这部分的需求。2、技术选型2.1解决方案需求1.支持向量搜索2.支持多维度筛选、过滤3.吞吐速率4.学习、使用成...
2022-04-19 17:36:15 1.2w浏览 0点赞 0回复 0收藏
1、实战项目需求需求1:有一个小需求需求2:2、需求分析如上两个需求都涉及两个索引数据之间的关联。提到数据关联或者多表关联,我们都能想到的是四种多表关联核心实现:•宽表,特点:空间换时间。•Nested嵌套文档,特点:适合于子文档更新不频繁场景。•Join父子文档,特点:适合于子文档频繁更新的场景。•业务层面自己实现,特点:灵活自控。以上四种都无法实现上述需求涉及的问题。需求2的本质是:跨索引...
2022-04-19 16:38:02 4944浏览 0点赞 0回复 0收藏
1、背景1.公司行业偏传统,系统多日志杂,但是有任务需求,要把日志做规范化的归集和保存。2.之前有两套基于ES的日志系统。一套是购买的厂商魔改且不可升级版;一套是开发团队基于某个核心系统定制的,除ES外的组件都是自行开发,且相关人员离职后无人继续维护,因此有一定局限性。3.有着安全加密的要求。4.涉及异地双中心,有跨集群查询展示需求。2、框架规划异地双中心各自独立集群。跨集群查询依靠ES自带的远程集群搜索(CCS...
2022-04-19 16:04:08 6167浏览 0点赞 0回复 0收藏
近期Elasticsearch数组问题被问到的比较多,为了方便大家对数组建立全局认知,我把数组相关实战问题梳理出来,让更多后来人遇到类似问题少走不必要的弯路。精简几个核心问题列举如下:•Elasticsearch是否有数组类型?Elasticsearch数据选型有没有坑?•Elasticsearch如何获取数组中第i号位置的值?•Elasticsearch如何获取数组最后一个元素的值?了解Elasticsearch版本历史的读者会知道1.X版本中没有独立模块强调...
2022-04-19 15:50:10 7100浏览 0点赞 0回复 0收藏
今天收到一位球友的问题,好家伙:PDF文档,问题内容长度25页。这是我职业生涯见过的最长的问题了。我的第一反应:太长了。打开后仔细看了一遍,的确内容很全,包含但不限于:•Mapping•template•检索召回数据全部结果•检索&聚合语句但是,问题究竟要问什么反而没有说的非常清楚。经过沟通,了解到问题的本质:“Nested字段召回数据结果中将包含特定字符‘’的字符串排在前面”。关联核心知识点:...
2022-04-19 14:18:14 5658浏览 0点赞 0回复 0收藏