如何看待哔哩哔哩用go语言重写所有的java后台工程
从一位曾经在哔哩哔哩任职的开发人员那里,了解了一下B站的技术发展历程:最开始是用PHP语言开发的,后来B站的中台逐步被Node占领,而后台技术为了更高的并发、更稳健,以及为了大数据分析,逐步向JAVA靠拢,这便导致了哔哩哔哩的技术整体较为混乱。生活经验告诉我们,房间需要定期进行整理,如果长时间不打理会变得杂乱无章,同样的,作为一个有着巨大用户量并且正在发展中的视频网站来说,定期清理杂乱无章的技术栈,为用户提供更稳定的服务、更优质的使用体验显然是非常有必要的。否则当视频正看到关键时刻,一记黑屏大法便足以败了你所有的兴致。
并非重写全部的后台工程,而仅仅是与账号相关的业务
根据毛剑的回答,哔哩哔哩使用Go语言重构JAVA后台应该已经是板上钉钉的事了,但他们并非是要重写所有的后台,因为就大数据分析方向来说,还是JAVA的天下,重构的部分仅仅是账号有关的业务。
其实很多程序员都有自己热衷的语言以及程序设计偏好,甚至有技术洁癖的程序员,在代码能正常运行的情况下,是不会允许任何人碰自己的代码的,老子的代码天下无敌!
https://p3-sign.toutiaoimg.com/pgc-image/7244847d5f134df28d3ab526da4d5b3f~tplv-tt-large.image?x-expires=1981071253&x-signature=00kkYqIwsO3f5o2OThDrSZHtsEY%3D
电视剧《硅谷》视频截图,程序员的谜之自信
但是,前提是代码能正常运行,而哔哩哔哩的后台,正如其研发总监毛剑所说的那样:B站早期几乎天天故障,随着团队和业务扩大,各方面的压力都增加,处处冒火。这样的状态与其像补衣服那样不停地打补丁,新补丁盖旧补丁,缝缝补补又三年,着实不如重写来得干脆。至于统一到什么语言其实都是无可厚非的,不管黑猫白猫,能捉到耗子就是好猫。
为什么是Go?
归根到底,这次重写后台工程是哔哩哔哩统一技术栈的一次尝试,至于最后为啥选择了Go,很重要的一点在于Go能够满足哔哩哔哩平台重构优化的需求;另一点是其研发总监毛剑本身是一位Go语言的忠实布道者。如果被问急了,毛剑团队会不会来一句:为什么不能是Go?
https://p3-sign.toutiaoimg.com/pgc-image/dc42846ea0c3433fb07c98642a1ff66d~tplv-tt-large.image?x-expires=1981071253&x-signature=r0oyHXUwEi30Pe4z40TGwZ5Md%2Bw%3D
前面说过了,选择哪种语言都无可厚非,因此这里不针对Go与JAVA两种语言做孰优孰劣的评判。就事论事,我们站在哔哩哔哩的角度,来说说做此选择的优势所在。
Go语言本身具有其语言亮点
最近几年,Go语言开始走向火爆,国内外很多公司都已经将Go语言应用到公司核心业务系统中。比如Google、AWS和MonGoDB等国外巨头,以及像阿里云CDN、华为、饿了么、七牛等国内公司也都在积极拥抱Go语言。
p.s. 如果你是golang初学者,下图的资料可以下载看看。点击小编头像,关注之后私信回复“资料”即可获取。
https://p3-sign.toutiaoimg.com/pgc-image/88f124da7c8c4ad39b8c225a0c8c3b24~tplv-tt-large.image?x-expires=1981071253&x-signature=jQv%2FpQve%2BwtEScXV0X34ORw%2FhQ4%3D
JAVA目前仍是企业级开发中的主流选择,如果说JAVA是武林名门,历史悠久、沉稳持重,那么Go就是一个新开山立派的年轻一代,更有冲劲和活力:它没有继承的OO,在很大程度上解决了编译速度慢的痛点,它的强一致类型,破解了程序难维护、文档可读性差等难题,有效缩短了更新所需要的时长,让交叉编译变得更加简单。总之,Go的主要特色让它受到了更多程序员的关注。
https://p3-sign.toutiaoimg.com/pgc-image/74bfa1aaea79473ca5e89344519e9cf6~tplv-tt-large.image?x-expires=1981071253&x-signature=bDk26YQGhWlYJ5f9E0KcFkeU2zA%3D
另外,Go内置的net/http包基本上把我们平常用到的网络功能都实现了,这些特性对于网络视频平台哔哩哔哩来讲,解决其当前所面临的问题是绰绰有余的。
公司有自己的Go语言团队
哔哩哔哩的研发总监毛剑,此前的工作经历均以Go为主,同时他也带了自己的Go团队共同加入,在这样的背景下,相对于JAVA,选择用Go来重构后台显然能够起到事半功倍的效果。
其实,这件事对于毛剑的技术团队来说,用自己擅长的语言做自己应该做的事儿,说破大天儿去,也无可非议。不管是JAVA还是Go,公司最看重的不是编程语言,而是最终所呈现的系统,语言只不过是工具而已;对于用户而言,只要有完美的体验,后台用什么语言不重要。所以,在相对统一的情况下,让各种语言发挥它们最大的优势,为产品的稳健运行提供更好的保障,应该是最明智的选择。
综上,这次哔哩哔哩采用Go语言来重写后台JAVA工程,有行业发展的必然性,也有场景、功能实现的需求性,还有技术负责人根据现实情形做出选择的主观判断性。随着行业的不断发展,各种新兴语言不断出现,一个项目中多种语言并存、互补的现象是必然的,说不定哪一天你还会发现用Go写的后台被其他语言改写了,或者某种你以为已经成为历史的语言卷土重来也不是没有可能。
https://p3-sign.toutiaoimg.com/pgc-image/20e9c25668bf4640987f3b876d3ca8dc~tplv-tt-large.image?x-expires=1981071253&x-signature=UBFzH8BJgfUx8AEHTxSRyUjcSuA%3D
页:
[1]