素材牛VIP会员
主服务器向从服务器发送消息,如何保证消息一定到达,然后限制时间(如5s内)?
 雷***g  分类:Java代码  人气:1051  回帖:4  发布于6年前 收藏

上次面试一家java的公司面试的人问我的,如何保证可靠性和时间呢?

 标签:架构javaphp

讨论这个帖子(4)垃圾回帖将一律封号处理……

Lv4 码徒
骑***火 技术总监 6年前#1

设置错误回调机制,超时回调,到达回调。或者用个MQ队列。

Lv3 码奴
威***军 职业无 6年前#2

timeout 5s 逾期不候

Lv5 码农
lo***ge 其它 6年前#3

因素很多,没办法保证 5s 就能送达:

  • 网络断了,5s 能保证送达?

  • 服务器 Hang 了,收不到数据啊

  • 服务器挂了,收不到数据啊

  • 服务器忙的处理不过来,接受消息的线程一直得不到及时执行呢

只要服务能连通,甚至服务断了再连通,MQ 可以保证尽快的把消息送给消息接收者,但是具体时间就像上面说的,看服务能否访问以及服务处理的能力

Lv4 码徒
ji***ca JS工程师 6年前#4

面试官可能是想问一下此类业务场景所能用的可靠性设计吧,我初步列几个:
1、为保证网络侧的安全性,在进程(服务)间增加心跳机制;
2、为保证服务器不宕机,可以采用自动化的运维系统去巡检,或者简单的第三方轮训ping也可以;
3、为保证进程不挂死,采用一些进程或者端口的轮训监控,随时拉起挂掉的进程;
4、要考虑传输层的可靠,那么可以采用TCP的协议,如果用ucp那么在非业务消息层增加重传机制;
5、每个消息报在设计的时候增加时间戳,当然服务器间的时钟要同步;利用时间戳监控延时;
6、在消息的业务层也增加ack机制,保证业务层确实收到并处理该消息;
7、也可以直接采用kafka等消息队列实现,为保证可靠性将kafka集群配置;

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取