Deprecated: Function get_magic_quotes_gpc() is deprecated in /www/wwwroot/jieqi/global.php on line 250
离职腾讯后,我成了友商公敌- 第192章 疯狂的码农程序员-都市言情-17模板网
第192章 疯狂的码农程序员
    周远目光亮了一下。“您的意思是,做差异化的实时搜索?”

    “对。百度搜的是全网的存量信息,简网搜的是用户当前关注的增量信息。”

    “微博上正在讨论什么,网吧里用户在搜什么,这些数据百度拿不到,简网拿得到。这就是我们的护城河。”

    “我明白了。我回去重新调整方案。”

    周远离开后,伍季靠在椅背上,又翻开笔记本,在搜索引擎那一页写下了一行字:“反向索引分片+实时热度权重+微博数据源。”然后他拿起电话,拨了陈远航的号码。

    “远航,你到我办公室来一趟。”

    十分钟后,陈远航坐在伍季对面,手里拿着周远给的那份修改后的方案初稿。

    伍季没有绕弯子。

    “分布式索引和实时搜索,这两块你是技术负责人。我跟你讲一下思路,你听完之后评估能不能落地。”

    陈远航点头。

    伍季开始使用电脑教学。

    “倒排索引采用二级缓存结构,热词缓存在内存,冷词存在磁盘,查询时先查内存再查磁盘。”

    “爬虫系统要加上优先级队列,微博上被转发的链接、简网首页的搜索词、潮汐终端的热门访问,这些来源的页面优先抓取。”

    “搜索结果的排序要加入时间权重,越新的内容排名越靠前。”

    陈远航盯着白板看了好一会儿。

    “伍总,这套架构的思路是先进的,但要落地需要不少人力。我们目前只有六个人,分布式这块没人做过。”

    “人我来解决。十月之前,简网搜索团队扩到十五人,会有一批有分布式系统经验的人入职。你负责技术方案落地,招人的事赵姐在跟进。”

    “如果人到位,这套架构年底之前能跑通吗?”

    “能。但需要我亲自参与部分核心模块的开发。缓存的淘汰算法和查询结果的合并策略,我可以写第一版代码,你们在此基础上迭代。”

    陈远航愣了一下。“伍总,您自己写代码?”

    “怎么,不行?”

    “不是不行,是……”陈远航顿了顿,“我以为您现在主要是做战略和管理的。”

    “战略和管理是工作,写代码是本能。简网搜索这个项目对我来说很重要,核心模块我来写,你们跟着学,学完了就能独立维护。”

    陈远航没再说什么,点了点头。“好。那我把方案重新排一下进度。”

    九月十八日,衡市,伍季的办公室。

    接下来的三天,伍季把大部分时间花在了写代码上。

    简网搜索的核心缓存模块,他用c++写了一套基于LRU变种的淘汰算法,专门针对中文搜索的热词分布做了优化。

    张小龙推门进来的时候,伍季正对着屏幕调试一段代码,眼睛都没抬。“坐,稍等一下。”

    张小龙在沙发上坐下来。过了大约十分钟,伍季把代码保存、编译、跑了一遍测试,确认没有报错,才转过身。“张工,有什么事?”

    “微信的技术方案,我重新梳理了一遍。腾讯那边在专利布局,我想确认一下我们的技术路线有没有绕开他们的专利。”

    张小龙把一份技术文档递过来,上面列出了微信目前的核心功能模块和实现方式。

    伍季接过来翻了翻,重点看了消息同步和多端登录两个模块的说明。

    “消息同步这一块,我们用的是服务器端存储加客户端拉取的模式,腾讯如果在申请消息同步的专利,这个模式可能会撞上。”

    伍季想了想。“他们的专利内容,方律师那边已经拿到了初审版本。”

    “核心是一种基于时间戳的消息队列同步方法,我们的方案是直接存储全量消息记录,客户端拉取时根据本地最后一条消息的时间戳做增量同步。”

    “技术上是有差异的,但如果诉讼,法官不一定能分清。”

    “那怎么办?”

    “两条路。第一条,改方案,把消息同步从拉取模式改成推送模式,服务器主动推送到客户端,这样技术路径完全不同,绕开他们的专利。”

    “第二条,提前申请我们自己的专利,覆盖更基础的消息通讯方法,等他们起诉时反诉。”

    张小龙听完,内心思索一会。

    “推送模式的技术复杂度比拉取模式高不少,服务器端的连接管理和消息队列需要重新设计。但长远来看,推送模式延迟更低,体验更好。我倾向于改方案,一步到位。”

    “那就改方案。推送模式的技术框架,我来写核心代码。消息队列用我们自己设计的轻量级协议,不走第三方中间件。这样既绕开腾讯的专利,也能提高微信的性能。”

    “您亲自写?”

    “核心模块我写,你们在此基础上封装应用层逻辑。时间上,需要多久?”

    张小龙算了一下。“如果核心通讯框架您在一到两周内能拿出来,我们在此基础上做应用层开发,大概需要一个半月到两个月。”

    “年底之前群聊和文件传输可以跑通,但推送模式的全量测试可能要等到明年一月。”

    “那就明年一月。质量第一,时间可以适当放宽。”

    “好。那我把团队的工作重新排一下。”

    张小龙走后,伍季拿出笔记本,在微信那一页写下了一行字:“消息同步改为推送模式,自主研发轻量级消息队列协议,绕开腾讯专利。”

    然后他翻开另一页,写上了一个名字:赵广辉。

    赵广辉,这个人他上辈子在通讯行业听说过。

    国内最早一批研究即时通讯协议的专家,在2000年代初就发表了关于轻量级消息队列的论文,后来在华为和中兴做过通讯协议架构师。

    如果能把这个人请来参与微信通讯协议的设计,微信的技术底子会比现在更扎实。

    他拿起电话,拨了赵敏的号码。

    “赵姐,从财务调取资金,让猎头帮帮我查一个人,赵广辉,应该在通讯或者互联网行业,有即时通讯协议方面的背景,找到他,约他到衡市来面谈,不管他现在在哪家公司。”

    “明白。”

    九月二十二日,衡市,简网搜索项目组的新办公室。

    项目组搬到了创业园对面那栋旧办公楼的三楼,整层一千多平米,足够容纳十五人的团队。

    新入职的工程师陆续报到,有从北京过来的分布式系统工程师,有从上海挖来的搜索引擎开发,还有两个刚毕业的计算机硕士。

    陈远航站在白板前面,正在给新团队讲架构方案。

    白板上画着伍季设计的那个三层架构图,每一层都标注了负责人和时间节点。

    “底层是爬虫和索引系统,负责抓取页面和建立倒排索引。”

    “中间是缓存层,用伍总亲自设计的自适应淘汰算法,顶层是查询引擎,负责处理用户搜索请求,从缓存和索引中召回结果,做合并排序后返回。”

    “分布式索引的分片策略,我们按关键词首字母做哈希分片,查询时并行检索所有分片,然后合并结果。伍总设计的二级缓存架构会在查询频率高的词上做热点加速。”

    一个新来的工程师举手。

    “陈总,这套架构的扩展性怎么样?如果页面数据量超过五千万,还能撑得住吗?”

    “能。伍总在设计时就考虑到了扩展性。分片可以水平扩展,加节点就行。”

    “缓存层也是分布式的,可以用一致性哈希做负载均衡。这套架构至少能撑到两亿页面。”

    “那百度的渠道封锁呢?听说百度提前锁死了搜索联盟,我们的搜索上线后渠道铺开会很困难。”

    陈远航笑了笑。“简网搜索不靠外部渠道。潮汐有两百多万台网吧终端,简网首页有百万日活,微博有数千万用户。”

    “这些是百度没有的流量入口,我们的策略是先在这些自有场景里跑起来,积累数据和技术,再考虑外部渠道。”

    会议室安静了片刻,没有人再提问。

    九月二十五日,深圳,腾讯法务部。

    一份关于微信技术方案的分析报告放在马化腾桌上。

    报告是腾讯的技术团队做的,通过对公开渠道收集的信息和张小龙团队之前的一些技术演讲,推断出了微信的核心通讯架构。

    “pony,微信的通讯协议可能是自研的,不基于任何开源方案。”

    “他们的消息同步机制我们还没有完全确认,但据推测,可能是拉取模式,客户端定期向服务器请求新消息。”

    马花腾看完报告。

    “如果是拉取模式,我们的消息同步专利就有用。但如果他们改成了推送模式,专利就绕开了。”

    “推送模式的实现难度比拉取模式大很多,需要服务器端维持大量的长连接和消息队列。张小龙团队只有十个人,要在几个月内从拉取改成推送,几乎不可能。”

    “但张小龙不是一般人,他是个能扛事的人。而且不要忘了,伍季自己就是个顶级程序员。如果伍季亲自下场写代码,事情就不一样了。”

    法务总监坐在对面,语气谨慎了一些。

    “pony,即使他们绕开消息同步专利,我们在多端登录和联系人存储方面还有几项专利在审。这些可以形成多层专利壁垒,一层绕开了还有下一层。”

    马花藤没有接话,只感觉有些头疼。

    “专利的事继续推进。另外,手机qq的短信同步功能提前到十月中旬上线,比原计划提前一个月。”

    “微信还没公测,我们先在移动端把优势建立起来,让他们追都追不上。”

    接下来就是,衡市,微信项目组。

    伍季坐在张小龙旁边的工位上,面前是一台显示器,屏幕上是一段正在编写的c++代码。

    这是他花了两天时间写出来的轻量级消息队列协议的核心框架,代码量两千多行,实现了基于tcp长连接的异步消息推送。

    “张工,你看看这段代码。”伍季把屏幕转过来。

    张小龙凑近看了看。代码结构清晰,注释到位,消息队列的调度逻辑用的是基于优先级的双缓冲队列,既保证了实时性,又避免了阻塞。

    通讯协议头设计得很精简,只有消息类型、长度、序列号三个字段,将额外的开销降到了最低。

    “这个协议,我测了一下,单台服务器在千兆网络环境下能支撑两万个并发长连接,消息推送延迟在五十毫秒以内。”伍季说。

    “两万并发,目前够用了。如果需要更高,可以用集群方案。”

    张小龙看完代码,抬起头。

    “伍总,这段代码的架构思路比我预想的更先进。双缓冲队列在实时通讯系统里用得不多,我只看过一些学术论文提过类似思路。”

    “论文里也有,只是还没大量落地。我们先用起来,把经验积累起来。”

    “后面你们团队在这个基础上做应用层的封装和测试,推送模式的核心通讯框架就算落地了。”

    “好。我让团队把应用层接上,预计两周内能跑通推送模式的端到端流程。”

    很快就到了 10 月 1 日国庆节。

    此时的鹦鹉科技召开了技术负责人会议。

    参会的有周远、陈远航、张小龙、伍军,还有方律师。

    会议的主题只有一个:技术护城河建设。