专访迅雷首席工程师:迅雷的下一代互联网底层技术构想

摘要:互联网合纵连横频频上演,迅雷与小米的联姻也成为了热点,有许多人为迅雷的上市和迅雷的未来担忧,这家像工程师一样的公司,命运会怎样,他们未来会如何走下去?对此CSDN专访了迅雷首席工程师刘智聪。

刘智聪,迅雷首席工程师,1984年出生,从小自学编程,毕业于南昌大学化学系,加入迅雷后设计开发了多款迅雷核心产品,是多个领域的技术专家,也是BOLT 界面引擎的发明人。下面是对他的专访全文,内容涵盖迅雷现在和未来的技术方向,以及刘智聪本人对未来技术的看法:


行业里最好的P2P团队和客户端团队

CSDN:能否先给大家介绍一下迅雷技术团队构成?

刘:迅雷的技术团队结构更趋向于扁平化而非树形。目前技术团队分为两大部分,一部分是事业部,这和传统互联网公司基本一致,每个产品都会一个技术团队。另一部分是有迅雷特色的基础技术研发,负责推动迅雷的技术发展和创新,这部分人在迅雷的时间长,级别高,但基本都不需从事管理工作。 

CSDN:能否说说迅雷的特色团队?

刘: 迅雷有顶尖的P2P团队。P2P本来就是一个很少有公司涉足的领域,有机会做到上亿节点的网络公司更少,许多人讨论过的问题,我们的团队都见过。

我也有很强的分布式存储团队。现在行业讲的很多的云存储,其实迅雷很早以前就在做,当时不叫云,叫分布式存储,它最开始得益于Google那篇著名的GFS论文,但后来发现Google那套东西不完全适合迅雷,迅雷业务重流量,所以我们进行了很大的调整并在此基础上进行发展和创新,成为现在迅雷离线下载后台的核心技术。

另外,迅雷有整个行业里最好的客户端团队。当然这点没有什么值得骄傲的,因为迅雷本身就是一家做客户端起家的公司。行业里做客户端最出名的也就三家,分别是迅雷、腾讯和360,360是2008年左右才发展起来的。因为圈子比较小,相关团队后面都有过交流,其实使用的技术与大家能通过网络学到的东西差别很大。而迅雷是这3家里总结并升华得最好的,咱们有不少独门秘笈。不过由于现在Windows客户端开发不再是热点领域了,缺少新鲜血液,这个行业积累的技术其实很难传承下去。

迅雷是一家技术驱动的公司

CSDN:能否说说迅雷的技术文化?

刘:迅雷的技术文化就是典型的工程师文化,追求技术创新。刚刚提到的技术研发团队基本上代表了迅雷的技术文化。每个公司都有自己的风格,有些公司是产品创新型公司,比如腾讯,做微创新做得很好,这绝对是一种强大的能力,还有些是数据驱动型公司,而迅雷则是一家典型的技术推动型公司,我们真正做成的产品背后都是靠技术创新在驱动,这种性质导致迅雷必须坚持在基础技术创新上做投入。

另外,迅雷不论前端后端,各个部门都在用同一套框架,比如客户端使用 BOLT引擎。内部统一框架的好处非常大,有什么Bug都能很快向得到响应,可以说能做到这点的国内公司非常少。很多程序员,他们写代码总觉得别人的烂,自己的好,但是在我们这里,如果使用同一套框架,出了问题大家先不说代码的好坏,而是先解决问题。我们创始人是工程师出身,他自己非常推崇这一点。

CSDN:在你看来,迅雷最核心的技术是什么?

刘:P2P,迅雷一直致力于让整个网络更有效率。举个简单的例子我们一直在研究P2P上传的数据是什么?我们常说,百度是最理解二进制文本文件的公司,那么迅雷算是行业里最理解二进制的一家公司。迅雷有很先进的P2P内容识别技术,不过迅雷的技术会一不小心踩到所谓的灰色地带,这种事已经发生过很多次,有时候做了一个很好的产品无法上线,吃一堑长一智,久而久之,迅雷的研发团队个个都成了法务专家。

CSDN:迅雷有什么产品是因为法律问题而无法存活的?

刘:最著名的就是狗狗搜索。迅雷在2007年的时候是下载领域的老大,彻底击败了BT。我们2007年做了几件事情,一是推出迅雷看看,那时候迅雷是国内唯一一家能提供高清在线视频播放的公司,播放后面的技术就是P2P。二是推出狗狗搜索,你可以在上面找资源,当时狗狗搜索的量非常大,基本上达到了百度的三分之一,但因为存在法务上的风险最终放弃了。所以现在大家都注重技术和产品的法律前瞻意识。

迅雷的现在:分离资源寻找与资源下载

CSDN:在大家的印象中,迅雷就是下载的代名词,但互联网变化风云莫测,而且迅雷已经称霸下载市场多年,迅雷下载未来会怎么发展? 

刘:我们今天的一个想法是你可以在任何一个地方去找资源,除了搜索之外,还可以有朋友之间的分享。但用户肯定不会随身携带电脑,而且用户一般不会在手机上下载资源。所以迅雷就想将两者分离,用手机找资源,然后遥控其他终端进行下载,下载端可以是电脑、电视,或者路由器,最适合的是路由器,因为你不可能一直开着电脑或者电视,但是大多数人的家中,路由器是不会关闭的,可以在任何时候遥控下载。这样回到家后想要的资源已经下载完成了。

迅雷的未来:建立下一代P2P网络 

CSDN:上面说的都是最近事情,很多人感兴趣,迅雷未来会做什么?

刘:迅雷的未来想做这么一件事情:提高整个网络数据传输的效率,通俗了讲就是泛加速。迅雷下载实际上是一种比较特殊的数据传输行为,频度不高,但数据传输在网路里每时每刻都在发生,包括浏览网页,看视频、看图片、玩游戏等等都无需下载的操作。做泛加速的目的,不希望仅仅把加速局限于下载,而是扩展到数据传输。 

CSDN:如何做到

刘:这就需要考虑网络的核心问题,你可以把中国的互联网想象成公路网,如何提高运输效率?有一个公式是D*L,D就是数据,你没法减少网络对数据的需求总量,网络负载就只有这么大。提高效率的重任就落在了L上,L过去是从原始服务器到用户终端的距离,如果缩短了L就可以提高效率了。

如何缩短?这个可以跟物流公司学,有一句话叫“物流不流”,比如在深圳买北京的东西,如果在广州仓库有一模一样的货,那么它会从广州直接发货而不是从北京,这就叫物流不流。但P2P数据传输有个问题,它在传输过程中,只有两端知道传输的是什么数据,中间的节点不知道。

迅雷要做的事情就是通过对数据贴标签的方法来识别“一模一样的货物”,再通过在建数据缓存节点的方法来让数据离用户更近,而在路由节点上建缓存的过程其实是将TCP/IP网络改造变成一个有Cache的网络。为了要提高Cache的命中率,我们会预测数据是不是非常热门,如果是,那么就更容易被缓存。

改进网络效率的另一个方法是更好的调整整个网络的路由。最近相当流行的SDN技术解决的还是机房内的问题,但如果我们把SDN的思想运用到全网,这就像是支持路况信息的导航路线规划。我们要做的就是,在网络繁忙的时候能够让一些数据的中转,就是路由器的转发表,不再去往主干光纤转,而是往一些可能平时比较偏门,大家觉得不愿意走的小路上去。

而通过软路由,我们能做一个覆盖一、两亿结点的SDN网络来。要做这件事情,并能够时时分析出一些东西来,需要非常好的大数据处理能力,所以我们也开始在这一块加大投入,支撑智能选路。

第三个就是,希望SDN网络除了能做到分流之外,还能修改网络的物理拓扑,现在的情况是,有线路由器的拓扑结构必须要拔线才能改变,比如说AB两个路由连着C,然后C连D,D再连着E和F,它是一个蝴蝶型的结构,在有线情况下,是没有办法通过软件去修改的,你只有通过拔线,但是未来我们要动态的去修改这条路的关系,比如说这两个路本来是相交的,我们把它改成平行,能不能做到这一点?这个可能我们不但要自己做这方面的技术研究,而且我们还需要跟硬件厂商在一起,做一个开放的标准,比如所有的无线路由器,都需要支持我们一个这样的软件控制接口,能够去修改它的连接方式。

CSDN:现在这份工作进展到哪一步了?

刘:面向系统的第一个目标及第二个目标的最主要的相关协议和规则我们已经在设计了,不是什么特别复杂的东西。在迅雷验证这些技术靠谱后我们希望把它公开出来,大家共同建立这个网络。时间上希望这套方案能在2014年完成技术验证,毕竟迅雷已经为互联网上20%左右的数据贴好了标签。

CSDN:有人说迅雷在移动互联网转身太慢,你怎么看?

刘:每家公司都有自己的基因,迅雷在移动互联网发力并不晚,我们在塞班时代就已经开始做手雷了,但现在一直不温不火,主要还是下载在移动互联网上确实不算是一个主流的事情。但是一家公司的基因不是说改就改了,我们不会去做社交,或者电子商务, 我们一直在找公司的基因与移动互联网的结合点,并会坚持下去。

希望BOLT未来能与HTML5抗衡

CSDN:能否说说BOLT引擎?它如何与你们现在所做的东西结合?

刘: 我现在的愿望是BOLT能取代HTML5,其实BOLT跨平台的方案比HTML5更彻底,性能更好,但它不是关系迅雷生死存亡的东西,目前在这上面投入精力比较少。BOLT这个东西,解决的问题涉及面太广了,未来还有更广泛的应用,它的舞台会更大,影响会超过中国的范围。我希望在解决了迅雷的核心问题之后再回到BOLT这件事情上来。目前这个系统还处于早期阶段,要像HTML5一样过渡到行业标准,必然要解决开源、标准化、工具支持等等一系列问题。现在使用BOLT的开发者,在国内公司大概有170多家,独立开发者也有一些,加起来大概有三四百来人。

只有具有强烈爱好的人才能真正做一些很难的事情

CSDN:你给人的感觉简单直爽,迅雷在招聘上喜欢哪种人才?不喜欢哪种人才?

刘:人一定要有独立判断能力,国内不论普通人还是一些大佬,跟风都特别严重,如果出现什么新的技术,他们的第一反应就是抱发明者大腿,抱大腿有一个好处,如果这项技术起来了,你会成为行业里的第一批专家,可以垄断一些话语权、出书。国内有很多高手去干这件事情,对此我非常伤心。

他们缺少独立的判断能力,大家说HTML5好的时候,我偶尔在技术群里说一两句类似HTML5解决有些问题的方式非常烂,它的包袱太重,以至于没有办法达到更好的性能和轻量化的时候,会被板砖砸死。前段时间Google出了一种GO语言,这个东西别的不说在语法上太丑了,完全不能接受这么丑陋的东西,我偶尔表达一下意思也被一堆人骂老古董。

我喜欢具有独立判断能力的人,绝不是为了反对而反对,我希望的独立判断能力是,你判断的背后是你的价值观和原则,你有你自己的标准。比如说HTML5不好,但不能全部否决,它也有好的部分,里边的CSS我就很喜欢,在我的引擎里,中后期也开始引入类似的东西,但更加单纯一些。

其次要有激情,有自己的爱好。很多硕士面试的时候半天说不出自己有什么爱好,这是个非常严重的问题。我一直相信只有强烈的爱好才能推动你去做一些非常难的事情,你才能真正看到一些背后别人看不到的东西,可能因为应试教育,许多中国人缺少这一点。

最后一点就是与天赋有关了,这个可遇不可求,你要有洞察能力,有一眼看穿本质的能力,如果有这种人,恨不得立马拉进团队。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven入门(含实例教程)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包。接下来小宝鸽,将从下面几个…

身体出现危险时会发出信号 这太重要了 一定收藏 !(组图)

太重要了!真的太重要了! 心脏有问题时———左边手臂会酸、麻、痛。 肝脏有问题时———小腿晚上睡觉时容易抽筋。 肾脏出现问题时———声音就会出不来,就会沙哑。 脾胃出现问题时———偏头痛。 任何试图更改生物钟的行为,都将给…

数据结构与算法-概念

计算机从解决数值计算问题到解决生活中的问题 现实生活中的问题涉及不同个体间的复杂联系 需要在计算机程序中描述生活中个体间的联系数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系而不是研究复杂的算法 数据结构 基本概念 数据:程序的操作对象…

腾讯联手联通推出车联网“网卡”,打“内容”+“流量”的组合拳

车载生态已经成为了一个兵家必争之地了,于商业前景而言,这是一个BAT都无法忽视的掘金胜地。 从市场数据来看,全球车联网市场年复合增长率达到25%,根据汽车之家大数据显示:自2014年以来,车联网上市新车型渗…

阿里云服务器 CentOS 7上-- Docker 安装 网关(API-Getway)--KONG

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 全程操作按官方文档来就可以了。 1.将 Kong 连接到 Cassandra 或 PostgreSQL 容器 Kong支持 2 种数据库:Cassandra 或 Post…

每个程序员都应该了解的内存知识

英文原文:lwn.net,翻译:开源中国 [编辑的话: Ulrich Drepper最近问我们,是不是有兴趣发表一篇他写的内存方面的长文。我们不用看太多就已经知道,LWN的读者们会喜欢这篇文章的。内存的使用常常是软件性能的决定性因子&…

idea debugger console 不见了--还原 console 图标

1 找了好久,也找不到,调试的时候挺麻烦的。 2 最后发现 有个一个重置,视图的按钮。点击一下就恢复 。 如下图。转自:https://blog.csdn.net/changdejie/article/details/64127026

实验五:任意输入10个int类型数据,排序输出,再找出素数

import java.util.Scanner; public class Pxsushu {public static void main(String[] args) {// TODO Auto-generated method stubScanner s new Scanner(System.in);int temp;//对数组事先声明并创建10个空间int[] a new int[10];//把输入的数存储为数组for (int i 0; i &…

grid - 隐式命名网格线名称

1.隐式的指定网格线反向指定了隐式的网格区域名称&#xff0c;命名的网格区域隐式的命名了网格线名称. 指定网格区域会给网格区域边线添加隐式的网格线名称。这些网格线的命名是基于网格区域来命名&#xff0c;只是在网格区域名称的后面添加后缀-start或-end. 1 <view class…

ReentrantLock源码

ReentrantLock与Synchronized区别在于后者是JVM实现&#xff0c;前者是JDK实现&#xff0c;属于Java对象&#xff0c;使用的时候必须有明确的加锁(Lock)和解锁(Release)方法&#xff0c;否则可能会造成死锁。 先来查看ReentrantLock的继承关系(下图)&#xff0c;实现了Lock和Se…

2020-3-16

题目一&#xff1a; 如何用js获取checked属性值。 通过checked属性可以设置复选框或者单选按钮处于选中状态。 <!DOCTYPE html> <html> <head> <meta charset" utf-8"> <script> window.onload ()>{let ckdocument.getElementByI…

2020-3-17

题目一&#xff1a; JavaScript 获取倒数第二个li元素 如何利用JavaScript获取li元素集合中的倒数第二个元素。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <style type"text/css"> #box{list-style:none;font-…

java.lang.UnsupportedOperationException 异常分析

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 今天将一个数组转换成 List 然后进行 remove 操作时却抛出 java.lang.UnsupportedOperationException 异常。 String pattern " ^,…

『并发包入坑指北』之阻塞队列

前言 较长一段时间以来我都发现不少开发者对 jdk 中的 J.U.C&#xff08;java.util.concurrent&#xff09;也就是 Java 并发包的使用甚少&#xff0c;更别谈对它的理解了&#xff1b;但这却也是我们进阶的必备关卡。 之前或多或少也分享过相关内容&#xff0c;但都不成体系&am…

2020-3-18

题目一&#xff1a; JavaScript 字符串转换为数组 其一&#xff1a; let str"apple"; console.log([...str]);运行结果 其二&#xff08;使用split()&#xff09;&#xff1a; let str"apple"; console.log(str.split());注1&#xff1a;如果将参数省略…

思维导图,流程图模板整合

思维导图与流程图在工作中都是经常使用的&#xff0c;出现频率较高的&#xff0c;有些不会绘制的或者是刚接触这一类的图表形式的都会选择使用模板来完成工作&#xff0c;但是很多朋友却不知道模板在&#xff0c;今天要给大家分享的是几款孩子走精美的思维导图&#xff0c;流程…

解决 List 执行 remove 时报异常 java.lang.UnsupportedOperationException

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、情况描述 报错如题&#xff1a; java.lang.UnsupportedOperationException: nullat java.util.Collections$UnmodifiableCollectio…

2020-3-19

题目一&#xff1a; js split() 分割字符串生成数组 let str"I am a student"; let arrstr.split(" "); for(let i0;i<arr.length;i){console.log(arr[i]); }分析&#xff1a;这里利用字符串的空格来分割字符串生成数组。split()方法的参数设置为"…

一文告诉你 Event Loop 是什么?

Event Loop 也叫做“事件循环”&#xff0c;它其实与 JavaScript 的运行机制有关。 JS初始设计 JavaScript 在设计之初便是单线程&#xff0c;程序运行时&#xff0c;只有一个线程存在&#xff0c;在特定的时候只能有特定的代码被执行。这和 JavaScript 的用途有关&#xff0c;…

Spring Boot -Shiro配置多Realm

2019独角兽企业重金招聘Python工程师标准>>> 核心类简介 xxxToken&#xff1a;用户凭证 xxxFilter&#xff1a;生产token&#xff0c;设置登录成功&#xff0c;登录失败处理方法&#xff0c;判断是否登录连接等 xxxRealm&#xff1a;依据配置的支持Token来认证用户信…