在design whatapp里面,websocket server分别和message service 以及presence service连接;一个message进来的时候,如果用websocket 来call presence server然后把结果以及message一起发给message service会不会使得websocket负担太多?是不是让message service来call presence service去check receiver是否在线更好?还有就是能否让message service直接读presence db去check reciver是否在线?
Message 进来之后是由 message service 去 call presence service 查在线状态的。websocket 需要 call presence service 是写在线状态。Message service 直接 call presence db 是不好的,违背了microservice的原则。
请问message service 如何call presence service?还需要定义presence service的api吗?
Presence service 会提供读的 API,通过一个 user id, 读取这个 user 在线状态以及连在哪台 websocket server 上。
请问为什么presence server为什么要通过websocket(通过websocket server)与用户链接? 是用户不断将heartbeat发给服务器,不存在server initiated request,用http有什么不妥?
Presence Server 跟用户没有直接的 websocket connection。只有 websocket server 和用户有 websocket connection. 用户发的 heartbeat 是 websocket protocol 的一部分。Presence server 在发起和断开链接的时候需要更新用户状态,websocket server 会 RPC call presence server