1、手撕代码。牛客题霸上的原题,可以去看看:NC91 最长递增子序列
2、redis cluster集群扩容怎么数据平滑过度,从客户端设计
3、JVM调优思路
4、kafka如何确保消息不丢失
5、mysql如果A数据库数据需要联合查询B数据库,应该如何实现呢?
(1)同实例不同库
•直接查询即可
SELECT * FROM A库.`account` a JOIN B库.`login_log` b ON a.`account_id`=b.`user_id`;
(2)不同实例
•查看mysql是否支持federated引擎(执行show engines;可以看到是否支持)
•如果支持未开启,需在my.cnf中进行开启并重启服务[[mysqld]最后加上federated]
•在本地创建一个与远程的表结构完全一样的表[ENGINE=FEDERATED CONNECTION='mysql://帐号:密码@地址:端口/数据库/表';]
•即可进行使用,把本地表当远程表使用即可
6、mysql 的sql本身没问题的情况下,没走索引原因(反复强调sql没问题,不需要从sql角度考虑)
7、限流设计用java实现,不能用工具类库
8、dubbo的设计和完整调用过程(要详细)
9、ES脑裂问题分析及优化
(1)脑裂问题可能的成因
•网络问题:集群间的网络延迟导致一些节点访问不到master,认为master挂掉了从而选举出新的master,并对master上的分片和副本标红,分配新的主分片
•节点负载:主节点的角色既为master又为data,访问量较大时可能会导致ES停止响应造成大面积延迟,此时其他节点得不到主节点的响应认为主节点挂掉了,会重新选取主节点。
•内存回收:data节点上的ES进程占用的内存较大,引发JVM的大规模内存回收,造成ES进程失去响应。
(2)脑裂问题解决方案:
•减少误判:discovery.zen.ping_timeout节点状态的响应时间,默认为3s,可以适当调大,如果master在该响应时间的范围内没有做出响应应答,判断该节点已经挂掉了。调大参数(如6s,discovery.zen.ping_timeout:6),可适当减少误判。
•选举触发 discovery.zen.minimum_master_nodes:1
该参数是用于控制选举行为发生的最小集群主节点数量。
当备选主节点的个数大于等于该参数的值,且备选主节点中有该参数个节点认为主节点挂了,进行选举。官方建议为(n/2)+1,n为主节点个数(即有资格成为主节点的节点个数)
增大该参数,当该值为2时,我们可以设置master的数量为3,这样,挂掉一台,其他两台都认为主节点挂掉了,才进行主节点选举。
•角色分离:即master节点与data节点分离,限制角色
全部评论
(4) 回帖