1. 面试官心里分析
es生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
这个问题,包括后面的redis什么的,谈到es、redis、mysql分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,这个问题没啥技术含量,就是看你有没有在真正的生产环境里干过这事儿!
有些同学可能是没在生产环境中干过的,没实际去拿线上机器部署过es集群,也没实际玩儿过,也没往es集群里面导入过几千万甚至是几亿的数据量,可能你就不太清楚这里面的一些生产项目中的细节
如果你是自己就玩儿过demo,没碰过真实的es集群,那你可能此时会懵,但是别懵。。。你一定要云淡风轻的回答出来这个问题,表示你确实干过这事儿
2. 面试题剖析
实这个问题没啥,如果你确实干过es,那你肯定了解你们生产es集群的实际情况,部署了几台机器?有多少个索引?每个索引有多大数据量?每个索引给了多少个分片?你肯定知道!
但是如果你确实没干过,也别虚,我给你说一个基本的版本,你到时候就简单说一下就好了。
(1)es生产集群我们部署了5台机器,每台机器是6核64G的,集群总内存是320G
(2)我们es集群的日增量数据大概是2000万条,每天日增量数据大概是500MB,每月增量数据大概是6亿,15G。目前系统已经运行了几个月,现在es集群里数据总量大概是100G左右。
(3)目前线上有5个索引(这个结合你们自己业务来,看看自己有哪些数据可以放es的),每个索引的数据量大概是20G,所以这个数据量之内,我们每个索引分配的是8个shard,比默认的5个shard多了3个shard。
3. 总结
消息队列、分布式搜索引擎
其实如果我是面试官的话,我如果感觉你都把刚才那些问题都答出来了,我可能会继续刨根问底,深挖,问你,直到把你给问倒
消息队列,kafka,复制的底层原理,leader选举的算法,增加partition以后的rebalance算法,扣很多很多的细节,如何优化kafka写入的吞吐量
其实这块如果挖深了可以问的极其深,如果是我来深挖,可能会挖到es底层的相关度评分算法(TF/IDF算法)、deep paging、上千万数据批处理、跨机房多集群同步、搜索效果优化,等等吧,很多的实际生产问题。
3种,一种比较水的面试官,可能连前几篇提到的都不会;比较nice的面试官,问的差不多了,对你还挺欣赏的,基本上就让你过了;比较hard的面试官,干倒,虐你,故意要让你出丑,面试官只不过严格,我希望招到的是一个最好的这么一个人,我之所以会深挖深挖深挖,我想看看你的极限到底在哪里,你对这么技术掌握的最深的深度在哪儿?如果你进来成为为的下属,我就可以对你的能力各方面都非常的了解。