浏览器开发不是你想象中那么容易

最近和一个团队探讨浏览器开发痛点,原因是这家软件公司接到了来自国外的一个制作浏览器的询单。价格是500万。

询问我的意见,我说看都不用看,没戏。别说500万,5亿美金都不敢说能开发出来。浏览器这玩意早就不是十几年前IE时代。

很多人把浏览器理解成一个简单的搜索页,然后搭建数据库,从搜索页抓取数据库内容然后展现给用户不就成了吗?我只想说想简单了兄弟。

浏览器的功能大致分5块,每一项的实现我敢说没有1亿美金都搞不定。

第一块是浏览器本身的进程,也就是浏览器上展现的内容。看下图

浏览器开发不是你想象中那么容易插图

这里每一个功能背后都是一件巨费事的开发,而且里面功能有些包含在浏览器本身的进程里,有些又是独立的进程,每一个进程之间的调用和进程需要的容量空间,算力都是一项巨大的工程。当然上图只是展示了一部分浏览器功能。

第二块是浏览器搜索框之后对接数据库的调用和储存。我们先讲数据库储存,每一个浏览器背后都是一个超级巨大的数据库,这里面的资料不是你花几百万能搞定的,根据最近腾讯,阿里,百度购买的服务器和算力芯片来说,至少每一家的支出都是几十亿美金起。所以500万连买数据库都不够,当然除非你做的浏览器内容就是一个局域的浏览器,比如1000万人口使用的浏览器和数据储存,可能勉强够,但做出这样的浏览器又有什么意义呢?在google,微软面前一钱不值。使用体验感就是垃圾。

另外再说构建数据库,浏览器的数据库构建极其复杂,这里的复杂性不是单纯抓取数据这么简单,另外数据之间的识别和排列,以及抓取的规则,数据库里面构建多少个子数据库,这些都算法构架师需要做的,单独构架数据库这块,我看给IT人员发工资都不止500万,因为在国内能开发浏览器的数据库构架师,年薪起码百万起,总之数据库构建单独这块没有1个亿压根就不用试。

第三块是用户搜索页点击后的进程,目前的主流浏览器每一个单页面都是一个独立的进程。这又是一项巨费算法的活,因为每一个页面进程都是独立的,而且成千上万的人在全球不同地方使用这些页面都是独立的进程,另外进程的大小设置也是一个大工程。

第四块是浏览器与网络之间链接,以及在不同用户之间的联动,比如成千上万个请求,然后去判断用户的网络连接关系。这点很多人觉得很简单,好比有些人每天吃饭就觉得大米很简单,但你去育苗,种地,打农药,浇化肥,什么时候给水稻进水和放水,收割,剖壳,每一项对于不懂的孩子来说都是艰巨的任务。

第五是多线程与进程的关系,主线程去解析html+css+JavaScript和其他代码,其余线程去独立解析cade里面的子元素,线程之间的运作关系,这个设计又是难题。因为浏览器需要解决所有页面线程问题,所以这块的包容性设计不是一般网站能比拟的。

总之开发类似google 浏览器之类的,别想当然觉得简单,看似就一个搜索页,但背后的开发难度简直难得吓人。百度这么牛逼也没有开发出一款好的浏览器,阿里这么牛逼也没有开发一款浏览器,收购的uc还只是移动端,腾讯这么牛逼的开发能力也没有坚持开发浏览器,因为太费钱,而且太难了。