加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

知乎用Go替代Python,说明了啥

发布时间:2019-10-29 03:02:40 所属栏目:建站 来源:hello架构
导读:或许每个开拓职员应该城市以为本身行使的说话是天下最好的说话吧。这都相对来说的。对付每小我私人应该都是差异的。 众所周知,知乎早在几年前就将保举体系从 Python 转为了 Go。于是乎,一部门人就说 Go 比 Python 好,Go 和 Python 两大社区的相干开拓职员为

知乎用Go更换Python,声名白啥

或许每个开拓职员应该城市以为本身行使的说话是天下最好的说话吧。这都相对来说的。对付每小我私人应该都是差异的。

众所周知,知乎早在几年前就将保举体系从 Python 转为了 Go。于是乎,一部门人就说 Go 比 Python 好,Go 和 Python 两大社区的相干开拓职员为此也争论过不少,好像,谁也没完全说服谁。

知乎从Python转为Go,是不是代表Go比Python好?我以为,各有利益,谁也代替不了谁,会恒久共存!

知乎用Go更换Python,声名白啥

“由 Python 说话转向 Go 说话就声名 Go 说话比 Python 说话好”完满是一种单方面领略。

“说话至上论”是办理不了营业题目的,选 Go 也不可,Java 也不可。

Go 的上风是文件易陈设,协程机制相对成熟且简朴,以及静态编译说话的服从,尚有就是编程模式相对简朴。这或许是此刻越来越多企业实行Go的缘故起因,除了知乎,B 站也把焦点部件从 PHP 转到了Go。

除此之外,BAT 等互联网巨头,内部都有体系回收了 Go 说话。

那是不是说 Python、PHP 不可了?虽然不是也不该该是这样的。假如要僵持Python、PHP,也是没题目。一个体系沉积太久的话,会发生许多大巨微小、零零分离的“技能债”,这其间就涉及办理本钱的考量,重构、重写、抑或从头计划焦点模块或新模块?由此又带来技能选择的题目。尚有Python、PHP人才储蓄的题目,尚有团队但愿实行新技能的思量。这些题目交叉在一路,就不是哪个编程说话好跟幻魅这么简朴的事儿了。以是照旧要回到营业层面来看技能办理之道。

不得不说,Go的协程,一个“go”就能办理绝大大都题目,确实写代码很简捷,Python 新添的 asyncio 照旧相对伟大,Future、Task等等照旧有不少门道的。以是,技能永久只有吻合的,而没有最佳的,也没有非此即彼的优劣理解。

我信托,假如团队在 Python 方面蕴蓄丰富,且热衷专注于 Python,选择Python 应该就是个或许率变乱。Python 此刻已经应用颇广,出格是在 AI 规模发动下,Python 人才也不像早年那样难谋事变了,铁打的营盘流水的兵,是不是知乎也面对人才活动压力?另外,事实 Python 的生态,在这么多编程说话中,是数一数二的,Go 虽热,但在社区方面生怕照旧比不上 Python、PHP,这也是一个实际题目。知乎前端换了 React,我没感受比原本的 AngularJS 前进,但不能就此说 React 不可。实行用 Go 写一些原本 Python 的范畴,也是同理。并且一个体系同时应用多种开拓说话、一系列技能栈,都是再正常不外的事了。

Python 有本身的场景,不会被彻底替代的,担忧也是多虑的,横竖都是“增编削查”嘛!

至于,知乎为什么选择 Go,内部的一些工程师透露:选择 Go 并不是一小我私人的抉择,而是整个团队深图远虑后的功效!

众所周知,知乎社区后端的主力编程说话是 Python。

跟着知乎用户的敏捷增添和营业伟大度的一连增进,焦点营业的流量在已往一年内增添了好几倍,对应的处事端的压力也越来越大。跟着营业成长,我们发明 Python 作为动态表明型说话,较低的运行服从和较高的后期维护本钱带来的题目逐渐袒暴露来:

运行服从较低。知乎今朝机房机柜空间已经不敷,凭证今朝的用户和流量增添速率,可预见将在短期内处事器资源弥留(针对这一点,知乎正在由单机房架构进级为异地多活架构);

Python 过于机动的说话特征,导致多人协作和项目维护本钱较高

受益于近些年开源社区的成长和容器等要害技能的遍及,知乎的基本平台技能选型一向较为开放。在开放的尺度之上,各个说话都有成熟的开源的中间件可供选择。这使得营业做选型时可以按照题目场景选择更吻合的器材,说话也是一样。

基于此,为了办理资源占用题目和动态说话的维护本钱题目,我们抉择实行行使静态说话对资源占用极高的焦点营业举办重构。

为什么选择 Golang?

如上所述,知乎在后端技能选型上较量开放。在已往几年里,除了 Python 作为主力说话开拓,知乎内部也不乏 Java、Golang、NodeJS 和 Rust 等说话开拓的项目。

Golang 是其时知乎内部接头交换最活泼的编程说话之一,思量到以下几点,知乎抉择实行用 Golang 重构内部高并发量的焦点营业:

  • 自然的并发上风,出格得当 IO 麋集应用
  • 知乎内部基本组件的 Golang 版生态较量完美
  • 静态范例,多人协作开拓和维护越发安详靠得住
  • 构建好后只需一个可执行文件即可,利便陈设
  • 进修本钱低,且开拓服从较 Python 没有明明降

对比另一门也很优越的待选说话—— Java,Golang 在知乎内部生态情形、陈设的利便水和善工程师的乐趣上都更胜一筹,最终我们抉择,选择 Golang 作为开拓说话。

最后,我们做个简朴总结:第一点,重构说话的选择,要害要跟公司技能配景和营业场景团结起来;第二点,架构只管机动,并不绝自我迭代;第三点,监控要早点开展,并尽也许底层化、通用化。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读