昨天面试被问到 activemq 挂掉或者 redis 挂掉怎么实现消息同步? 我说的做集群,他说集群也会有死掉情况怎么实现消息同步,刚毕业不是很懂求大神们,帮我写个详细的说明,或者帮忙推荐一些能学这个资料什么的也行,谢谢了!
1
tnstar 2019-08-03 08:58:10 +08:00 via Android
加锁?
|
2
karottc 2019-08-03 09:02:50 +08:00
如果刚开始设计就是用消息队列做同步,那么消息队列的整个集群都挂了,肯定没法同步了。 这个问题要从一开始设计上就解决。 就像面试问你,支付宝所有集群服务都挂了,怎么保证正常使用支付宝,肯定就不行三。如果行,支付宝当年就不会持续挂了 6 小时,异地多活变成了笑话
|
3
metrxqin 2019-08-03 10:54:09 +08:00 via Android
我觉得这个是架构问题,因为涉及到高可用,太为难毕业生了。
|
4
xiaolong620 OP @metrxqin 这不包装了一下吗,要不都没有面试的。。。
|
5
reus 2019-08-03 14:02:07 +08:00
如果上游挂掉还能正常工作,那还要这个上游服务干嘛?难道不是多余的部件?
你这个问题,有点莫名其妙 |
6
jimrok 2019-08-03 14:13:14 +08:00
只能切换到备份的中心去做消息同步,例如客户端有两个以上的服务列表,a 挂了,去连接 b。答不出来也没关系,又不是比大家的知识,关键是要逻辑清楚,面试官考察刚毕业的应届生,主要还是看你的逻辑思维是不是有条理,是否有上进心,是否有兴趣在技术上,毕业生未来几年都是学习和补充知识的过程。
|
7
xiaolong620 OP @jimrok 好的,谢谢
|
8
Aresxue 2019-08-03 15:38:22 +08:00
正常就集群、主备、主从。没明白集群也会死掉消息怎么同步是个什么意思,可能面试官也是个半吊子。。。如果是机器都挂了,神也啥都干不了,如果是问的如何恢复,可以从系统和应用的自动重启,以及数据的持久化方面答,好比 redis 的 RDB 和 AOF
|
9
mamahaha 2019-08-03 18:19:43 +08:00
提这个问题就是想压价,你愿意留下就把需求工资降一降就行了。
|
10
iPhoneXI 2019-08-03 18:34:22 +08:00 via Android
Redis 高可用机制有集群和哨兵吧,监控主从节点,自动失败转移,
集群怪掉了,我也只能想到楼上说的备份的中心了, 事前做好持久化,监控,事后做好恢复 |
11
laminux29 2019-08-03 19:00:07 +08:00
activemq 挂掉怎么实现消息同步?加 Kafka。
redis 挂掉怎么实现消息同步?加 MongoDB。 集群挂掉怎么实现消息同步?这情况还真有,比如集群在一个机房里,然后整个机房断点导致集群全挂掉。那么对于这种情况,就给集群做集群,也就是多集群。比如异地多集群,全球多集群,甚至在月球上搞个机房来防止地球被炸后的数据安全。 |
12
lihongjie0209 2019-08-03 19:03:31 +08:00
怎么不说地球毁灭之后怎么实现消息同步?
|
13
JinyAa 2019-08-03 19:14:04 +08:00
上次跳槽也被问过这种,最后问我有什么想问他的,我说你们生产上用很多集群吗?答曰:没有。
|
14
nthhdy 2019-08-03 20:24:49 +08:00
都挂了还同步什么。。
我怎么觉得他是想问挂了以后怎么恢复? |
15
Takamine 2019-08-03 21:09:53 +08:00 via Android
可能他想说的是集群单节点挂掉,哨兵,心跳检测什么的吧。
要不就是他们公司完全实现了 CAP。:doge: |
16
ycs2019 2019-08-03 22:24:52 +08:00
都挂了就是挂了,然后上人去处理,除非用其他兜底。
|
17
polebug 2019-08-04 00:34:55 +08:00 via Android
秋招 我也被问到 redis 挂掉怎么办 我猜他们是想问 redis 持久化
|
18
xuanbg 2019-08-04 07:30:29 +08:00
集群都挂掉了,当然就不行了,只能等恢复了。。。
这个时候就需要有补偿机制了,让故障期间产生的数据能够在恢复后发送过去。 |
19
zealot0630 2019-08-04 12:19:38 +08:00 via Android
向应届生面工程实践问题的公司,不去也罢
|
20
zealot0630 2019-08-04 12:25:39 +08:00 via Android
mq 是 cp 的系统,就是抛弃了 a。什么是 a ?就是节点挂了就没有 a 了,要等待节点重新起来才能继续服务。如果做集群多读多写,就要一定程度抛弃 c 或者 p,这就是上层框架如何设计,架构师要考虑的问题了。
|
21
jaylee4869 2019-08-05 14:36:12 +08:00
实现消息同步? 没明白问的啥。中间件高可用吗?
|
22
cmonkey 2019-08-16 16:11:09 +08:00
看起来是时候加机器了
|