首页 > 穿越架空> 都重生了谁给资本打工啊

都重生了谁给资本打工啊 第195节

  廖军一愣。

  这个问题,确实比刚才的[架构设计]要细。

  而且,耿直似乎的确听懂了自己刚才的回答了?

  “在线用户推,离线用户拉。推的话,通过长连接直接下发。拉的话,用户上线时从离线库拉取……”

  耿直追问:“那如果用户在线的瞬间,消息量很大,比如积压了一百条,长连接推送会不会把客户端撑爆?”

  廖军皱眉。

  这个问题,确实需要想一下。

  “可以做消息分页,一次只推20条,剩下的用户主动拉。”

  耿直微微颔首,准备问深入一些:“好。那第二个问题——”

  “用户A给用户B发消息。A显示[已发送],B显示[已接收]。这两个状态,怎么保证一致性?如果消息丢了,怎么定位问题?”

  廖军的表情开始认真起来。

  “A发送消息,接入层收到后,先落库,再返回[已发送]。然后逻辑层找到B所在的接入节点,通过长连接下发。B的客户端收到后,返回ACK,服务端更新消息状态为[已接收]。”

  耿直:“如果B的ACK丢了怎么办?服务端以为没收到,客户端以为收到了。”

  廖军:“客户端定期上报消息状态,服务端做对账。如果发现不一致,客户端重新上报。”

  耿直:“上报的周期是多少?”

  廖军:“30秒。”

  耿直:“那这30秒里,用户看到的状态是什么?”

  廖军沉默了几秒。

  “看到[已发送]。但用户感知不到的,30秒很短。”

  耿直摇头:

  “30秒不短。如果用户发了一条重要消息,看到[已发送],以为对方收到了,但对方其实没收到。30秒后状态才更新,这30秒里用户可能已经在等回复了。”

  他顿了顿:“有没有办法把这个时间缩短到3秒以内?”

  廖军思索了好一会儿,才回答:

  “那就要做实时ACK+本地缓存。客户端收到ACK后立即更新状态,同时缓存一份,定期和服务端对账。这样用户看到的状态是实时的,即使服务端数据丢了,客户端也能补报。”

  耿直点头:“这个思路对。”

  廖军看着他,眼神变了。这个耿直,是真的很懂技术啊!

  会议室里陷入短暂的沉默。

  “下一个问题:”耿直开始问起前瞻性问题来:

  “如果我们想让陌陌支持语音消息,用户按住说话,松手发送。语音文件大概几十KB到几百KB。怎么做?”

  “语音消息?”廖军皱了皱眉。

  这个需求,QQ还没做过。

  他思索了一会儿,回道:

  “语音文件上传到文件服务器,返回一个URL,然后把URL作为消息内容发送。”

  耿直:“延迟呢?从松手到对方收到,目标是多少?”

  廖军想了想:“如果是文件上传,至少2-3秒。加上消息推送,可能3-5秒。”

  耿直:“能不能做到1秒以内?”

  廖军愣了一下。

  “1秒以内?不可能。文件上传的物理时间就不止1秒。”

  耿直摇摇头:“但我可以做到。”

  廖军再吃一惊,连忙问道:“怎么做?”

  耿直笑着道:“等你入职之后,才能告诉你。”

  廖军沉默了很久。

  “你是做技术出身的?”他终于问了第一个自己早就想问的问题。

  “对,我是CS科班出身。”

  “呃……原来耿总你是交大的博士啊?”廖军半确定半疑惑问了句。

  “不是。”耿直摇了摇头,如实回答,“我是兰大本科,确切说,我今年9月才研一入学交大。”

  廖军再惊,喃喃道:“哦,原来兰大计算机这么牛逼啊!”

  耿直本想说[不是兰大牛逼,是我耿直牛逼],但想了想,忍住了。

  他没给廖军多问的机会,继续问道:

  “第四个问题:用户在魔都,给一个在纽约的用户发消息。跨洋网络延迟200毫秒以上,而且不稳定。怎么保证体验?”

  廖军这次没有立刻回答。他在认真思考。

  “部署海外节点,消息走专线。魔都用户发消息,先到魔都节点,走专线到美利坚节点,再推送给纽约用户。”

  耿直:“专线成本很高。如果暂时没有专线,怎么办?”

  廖军想了想:“消息先落地,异步同步。魔都用户发完,消息落魔都库,后台异步同步到美利坚库。用户看到[已发送],等同步完成后再显示[已接收]。”

  耿直:“那如果用户在同步完成之前就下线了呢?”

  廖军:“下次上线时拉取。”

  耿直:“那用户怎么知道消息已经同步到对方了?”

  廖军沉默。

  耿直:“能不能做[多数据中心同步+客户端状态机]?消息在魔都落库后,状态是[已发送]。同步到美利坚后,状态变[已同步]。对方客户端拉取后,状态变[已接收]。这样用户能看到消息的完整生命周期。”

  他顿了顿:“技术上难吗?”

  廖军看着他,眼神复杂。

  技术上不难,但这个问题,不是一般人能问出来的。

  “不难。但需要设计状态机和同步协议。”

  耿直放下手中的笔,直视着廖军:“对。这就是我要找的人——能把这些[不难但没人做过]的事,做出来。”

  廖军的身子直了直,确认道:“耿总,我想知道,贵公司是要做出海IM产品吗?”

  明矾科技公司现阶段当然不会直接做出海IM,这条路面临严苛的监管问题,是很难走通的。

  不过廖军未来会不会来公司,耿直无法确定。所以还不能跟他说新产品的对手是企鹅,便用出海产品当幌子。

  此刻他只是报以微笑,没有肯定也没否定。

  但看在廖军眼里,答案是:“是。”

  耿直继续道:“廖总,我的技术问题问完了,但还有其他问题。我问完,再回答你。”

  “哦,好。”廖军尴尬地点点头。

  耿直再次直视廖军:

  “你在QQ做了8年,QQ的IM系统,是全国互联网界最成熟、最稳定、最能扛的系统。我很好奇,你有没有想过,QQ这套系统,有什么是你想做,但没做的?”

  廖军沉默。

  他开始回忆,从现在一下子回忆到了刚入职企鹅的时候。

  沉默许久后,他才缓缓开口:“有。”

  他顿了顿:“QQ的架构,是2000年初设计的。这十年,我们一直在修修补补,但底层逻辑没变过。有些新东西,不是不能做,是QQ的体量太大,不敢动。”

  耿直:“比如?”

  廖军:“比如,消息的状态。QQ的消息……不是做不了,是QQ十亿用户,改状态机牵一发而动全身。”

  耿直:“如果从零开始设计一套IM系统,你会怎么做?”

  廖军:“我会把……”

  耿直:“还有呢?”

  廖军又巴拉巴拉说了一堆。

  本来,这些东西,有的并不适合在面试的时候讲。但氛围到了,廖军依然情不自禁地说了出来。

  耿直笑了:“廖总,这正是我想做的。”

  他站起来,走到白板前,画了一条线。

  “廖总,正如你所说,我们不是继续在陌陌里做,而是从零开始,设计一套IM,不为历史包袱妥协,让北美的人也能用上。”

  他转身看着廖军:“我需要一个人,来帮我搭这套系统。你是我能找到的最合适的人。”

  廖军沉默了很长时间。

  他终于开口:“耿总,我问几个问题。”

首节 上一节 195/430下一节 尾节 目录txt下载

上一篇:港片:大佬,我真不想出卖你!

下一篇:返回列表

推荐阅读