Loading...

摘要: 需求缘起 Web Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。 “工作线程数”的设置依据是什么,到底设置为多少 阅读全文
posted @ 2019-05-14 15:20 JaJian 阅读(11463) 评论(2) 推荐(2) 编辑
摘要: 前言 创建索引的时候,我们通过Mapping 映射定义好索引的基本结构信息,接下来我们肯定需要往 ES 里面新增业务文档数据了,例如用户,日志等业务数据。新增的业务数据,我们根据 Mapping 来生成对应的倒排索引信息 。 我们一直说,Elasticsearch是一个基于Apache Lucene 阅读全文
posted @ 2019-05-13 09:02 JaJian 阅读(4366) 评论(0) 推荐(1) 编辑
摘要: 学习的需要 这篇文章不做技术分享,和大家一起讨论一下学习的途径和方法。程序员行业技术更新迭代速度快,这个特点身为行业内的每个猿友们都有深刻体会。 很多技术基本每年都有一个大小版本,每个版本的出现意味着有新的技术思想和应用技巧出现。也许你用不到但是你需要去了解。你看自从甲骨文公司宣布收购Sun公司,J 阅读全文
posted @ 2019-04-10 07:43 JaJian 阅读(6598) 评论(21) 推荐(20) 编辑
摘要: 前言 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。 本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。 对于线上系 阅读全文
posted @ 2019-03-22 15:35 JaJian 阅读(4746) 评论(0) 推荐(3) 编辑
摘要: 硬件选择 Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件 中配置,如下: 磁盘在现代服务器上通常都是瓶颈。Elasticsearch 重度使用磁盘,你的磁盘能处理的吞吐量越大,你的节点就越稳定。这里有一些 阅读全文
posted @ 2019-03-11 10:44 JaJian 阅读(11487) 评论(6) 推荐(9) 编辑
摘要: 前言 以前一直用的是 windows 的,但是最近特别想买个 macOS 的。其实不是为了其他什么目的,只是涉及到开发 macOS更接近 linux 系统,一直没使用过所以就想尝试体验下,而且现在很多公司都配置了 mac 给开发人员使用,像阿里很多部门都是配 Macbook 的。提前体验下,不仅自己 阅读全文
posted @ 2019-03-04 00:20 JaJian 阅读(45856) 评论(56) 推荐(19) 编辑
摘要: 寒冬的思考 2019年初,俗话说"金三银四"。这时候面试不知道你们慌不慌张。因为2018年冬天是寒冷的。其实18年的低温持续时间不算很长,我也没有披上军大衣。但是突如其来的互联网寒冬影响了不少人,互联网寒冬当然主要受影响的就是程序员了。 回顾过往,2017年是互联网高速发展的一年,共享经济仅仅一个概 阅读全文
posted @ 2019-02-18 09:06 JaJian 阅读(9081) 评论(37) 推荐(53) 编辑
摘要: Java7 中 ConcurrentHashMap ConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,所以要复杂一些。 整个 ConcurrentHashMap 由一个个 Segment 组成,Segment 代表”部分“或”一段“的意思,所以很多地方都 阅读全文
posted @ 2019-02-17 17:24 JaJian 阅读(6422) 评论(4) 推荐(10) 编辑
摘要: 记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意思,深入下去我也不懂,皆大欢喜! 作为程序员,要有“刨根问底”的精神。知其然,更要知其所以然。这篇文 阅读全文
posted @ 2019-01-22 23:09 JaJian 阅读(2974) 评论(7) 推荐(6) 编辑
摘要: 前情提示 上篇文章: "《互联网面试必杀:如何保证消息中间件全链路数据100%不丢失:第三篇》" ,我们分析了 RabbitMQ 开启手动ack机制保证消费端数据不丢失的时候,prefetch 机制对消费者的吞吐量以及内存消耗的影响。 通过分析,我们知道了 prefetch 过大容易导致内存溢出,p 阅读全文
posted @ 2019-01-21 09:58 JaJian 阅读(2502) 评论(3) 推荐(2) 编辑
摘要: 前情提示 上一篇文章: " " ,我们分析了 ack 机制的底层实现原理( 机制),还有消除处理失败时的nack机制如何触发消息重发。 通过这个,已经让大家进一步对消费端保证数据不丢失的方案的理解更进一层了。 这篇文章,我们将会对 ack 底层的 机制进行更加深入的分析,让大家理解的更加透彻一些。 阅读全文
posted @ 2019-01-20 12:01 JaJian 阅读(2651) 评论(1) 推荐(1) 编辑
摘要: 前情提示 上一篇文章 "《互联网面试必杀:如何保证消息中间件全链路数据100%不丢失:第一篇》" ,我们初步介绍了之前制定的那些消息中间件数据不丢失的技术方案遗留的问题。 一个最大的问题,就是生产者投递出去的消息,可能会丢失。 丢失的原因有很多,比如消息在网络传输到一半的时候因为网络故障就丢了,或者 阅读全文
posted @ 2019-01-19 20:10 JaJian 阅读(2825) 评论(0) 推荐(0) 编辑
摘要: 背景引入 这篇文章,我们来聊聊在线上生产环境使用消息中间件技术的时候,从前到后的全链路到底如何保证数据不能丢失。 这个问题,在互联网公司面试的时候高频出现,而且也是非常现实的生产环境问题。 如果你的简历中写了自己熟悉MQ技术(RabbitMQ、RocketMQ、Kafka),而且在项目里有使用的经验 阅读全文
posted @ 2019-01-11 21:56 JaJian 阅读(5968) 评论(1) 推荐(4) 编辑
摘要: 什么是循环依赖? 循环依赖其实就是循环引用,也就是两个或则两个以上的 Bean 互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图: 如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错。下面说一下Spring是如果解决循 阅读全文
posted @ 2019-01-08 22:56 JaJian 阅读(10035) 评论(1) 推荐(4) 编辑
摘要: 发现方式 Zen discovery是内建的、默认的、用于Elasticsearch的发现模块。它提供了单播和基于文件的发现,可以通过插件扩展到支持云环境和其他形式的发现。 Zen Discovery 是与其他模块集成的,例如,节点之间的所有通信都使用 "transport" 模块完成。某个节点通过 阅读全文
posted @ 2018-12-27 09:01 JaJian 阅读(15356) 评论(2) 推荐(3) 编辑
摘要: 前言 通过前面章节的了解,我们已经知道 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以一个之前从未有过的速度和规模,去探索你的数据。它被用作全文检索、结构化搜索、分析以及这三个功能的组合。 Elasticsearch 可以横向扩展至数百(甚至数千)的服务器节点,同时可以处理P 阅读全文
posted @ 2018-12-26 22:30 JaJian 阅读(6437) 评论(0) 推荐(9) 编辑
摘要: 业务问题 业务需求是不断变化迭代的,也许我们之前写的某个业务逻辑在下个版本就变化了,我们可能需要修改原来的设计,例如数据库可能需要添加一个字段或删减一个字段,而在搜索中也会发生这件事,即使你认为现在的索引设计已经很完美了,在生产环境中,还是有可能需要做一些修改的,需要添加映射字段或者需要修改字段类型 阅读全文
posted @ 2018-12-20 21:47 JaJian 阅读(16074) 评论(2) 推荐(3) 编辑
摘要: 数据库建表的时候,我们的DDL语句一般都会指定每个字段的存储类型,例如:varchar,int,datetime等等,目的很明确,就是更精确的存储数据,防止数据类型格式混乱。 sql CREATE TABLE ( varchar(36) NOT NULL COMMENT 'id', varchar( 阅读全文
posted @ 2018-12-18 21:51 JaJian 阅读(9869) 评论(5) 推荐(4) 编辑
摘要: 前言 这篇博文本来是想放在全系列的大概第五、六篇的时候再讲的,毕竟查询是在索引创建、索引文档数据生成和一些基本概念介绍完之后才需要的。当前面的一些知识概念全都讲解完之后再讲解查询是最好的,但是最近公司项目忙经常加班,毕竟年底了。但是不写的话我怕会越拖越久,最后会不了了之了,所以刚好上海周末下雪,天冷 阅读全文
posted @ 2018-12-10 08:40 JaJian 阅读(43585) 评论(18) 推荐(12) 编辑
摘要: JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 Java是面向对象的 阅读全文
posted @ 2018-12-03 08:40 JaJian 阅读(58467) 评论(2) 推荐(11) 编辑