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