当前位置:首页 > 渗透破解 > 正文内容

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

访客5年前 (2019-11-22)渗透破解788

大概每个开发人员应该都会认为自己使用的语言是世界更好的语言吧。这都相对来说的。对于每个人应该都是不同的。

众所周知,知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎,一部分人就说 Go 比 Python 好,Go 和 Python 两大社区的相关开发人员为此也争论过不少,似乎,谁也没完全说服谁。

知乎从Python转为Go,是不是代表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,我没感觉比原来的 Angular *** 进步,但不能就此说 React 不行。尝试用 Go 写一些原来 Python 的范围,也是同理。而且一个系统同时应用多种开发语言、一系列技术栈,都是再正常不过的事了。

Python 有自己的场景,不会被彻底替换的,担心也是多虑的,反正都是“增删改查”嘛!

至于,知乎为什么选择 Go,内部的一些工程师透露:选择 Go 并不是一个人的决定,而是整个团队深思熟虑后的结果!

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

随着知乎用户的迅速增长和业务复杂度的持续增加,核心业务的流量在过去一年内增长了好几倍,对应的服务端的压力也越来越大。随着业务发展,我们发现 Python 作为动态解释型语言,较低的运行效率和较高的后期维护成本带来的问题逐渐暴露出来:

运行效率较低。知乎目前机房机柜空间已经不足,按照目前的用户和流量增长速度,可预见将在短期内服务器资源告急(针对这一点,知乎正在由单机房架构升级为异地多活架构);

Python 过于灵活的语言特性,导致多人协作和项目维护成本较高

受益于近些年开源社区的发展和容器等关键技术的普及,知乎的基础平台技术选型一直较为开放。在开放的标准之上,各个语言都有成熟的开源的中间件可供选择。这使得业务做选型时可以根据问题场景选择更合适的工具,语言也是一样。

基于此,为了解决资源占用问题和动态语言的维护成本问题,我们决定尝试使用静态语言对资源占用极高的核心业务进行重构。

为什么选择 Golang?

如上所述,知乎在后端技术选型上比较开放。在过去几年里,除了 Python 作为主力语言开发,知乎内部也不乏 Java、Golang、Node *** 和 Rust 等语言开发的项目。

Golang 是当时知乎内部讨论交流最活跃的编程语言之一,考虑到以下几点,知乎决定尝试用 Golang 重构内部高并发量的核心业务:

  • 天然的并发优势,特别适合 IO 密集应用
  • 知乎内部基础组件的 Golang 版生态比较完善
  • 静态类型,多人协作开发和维护更加安全可靠
  • 构建好后只需一个可执行文件即可,方便部署
  • 学习成本低,且开发效率较 Python 没有明显降

相比另一门也很优秀的待选语言—— Java,Golang 在知乎内部生态环境、部署的方便程度和工程师的兴趣上都更胜一筹,最终我们决定,选择 Golang 作为开发语言。

最后,我们做个简单总结:之一点,重构语言的选择,关键要跟公司技术背景和业务场景结合起来;第二点,架构尽量灵活,并不断自我迭代;第三点,监控要早点开展,并尽可能底层化、通用化。

更多关注微信公众号:jiuwenwang

扫描二维码推送至手机访问。

版权声明:本文由黑客技术发布,如需转载请注明出处。

本文链接:http://www.w-123.com/37545.html

标签: 黑客

“知乎用Go替代Python,说明了啥” 的相关文章

最快的勒索软件被发现仅用 4 分多钟就加密了 53GB 的数据

对于IT管理员和网络安全团队来说,勒索软件攻击是一场与时间赛跑的关键比赛,以检测和控制损害,同时抢救公司的数据资产的剩余部分。但是,当这种事件发生时,有多少反应时间呢?似乎不是很多。正如对10个候选勒索软件的测试所揭示的那样,一种名叫LockBit的勒索软件效率惊人,在四分钟内就加密了一台Windo...

英特尔和 Arm 的 CPU 再被发现存在重大安全漏洞 Spectre-HBB

 BHI是一种影响大多数英特尔和Arm CPU的新型投机执行漏洞,它攻击分支全局历史而不是分支目标预测。不幸的是,这些公司以前对Spectre V2的缓解措施也无法保护BHI的威胁,尽管AMD处理器大多是免疫的。消息传出后,供应商应该很快就会发布安全补丁,而最新得Linux内核已经打了补丁。...

小心:勒索软件 Magniber 伪装成 Windows 更新传播

在最新活动中,恶意软件 Magniber 利用虚假的 Windows 10 更新实现传播。这款恶意软件非常善于紧跟最新时事进行传播,在 2021 年使用 PrintNightmare 漏洞来感染受害者;在 2022 年 1 月,它再次通过 Edge 和 Chrome 浏览器进行传播。 援引科...

研究人员谈论潜在的没有性能成本的 CPU 安全漏洞缓解措施

一位安全研究员在上周末的自由和开源软件开发者欧洲会议(FOSDEM)上围绕缓解像Spectre和Meltdown这样的处理器漏洞发表演讲,所提出的方式力求让性能成本可以忽略不计。 Cyberus科技公司的Sebastian Eydam在2022年FOSDEM会议上发言,谈到有可能在几乎没有性能成本...

欧盟将公布新法律 迫使大型科技公司对非法内容进行监管

欧盟准备在周五公布一项具有里程碑意义的法律,该法律将迫使大型科技公司更积极地监管其平台的非法内容,这是监管机构遏制大型科技集团权力的最新举措。 据四位知情人士透露,《数字服务法》(DSA)将禁止根据用户的宗教信仰、性别或性取向对用户进行分类和内容定位。DSA是一个立法方案,首次为大型科技公司如何保证...

德国摧毁俄罗斯暗网市场 Hydra 九头蛇 收缴价值 2500 万美元的比特币

据德国媒体报道,德国执法机构在最近的执法行动中扣押俄罗斯暗网市场Hydra的服务器,同时收缴价值2500万美元的比特币。不知道这个黑市的创始人是不是漫威的粉丝,所以才会起九头蛇这个名字。 目前访问该市场会弹出德国执法机构挂出的提示,而收缴的2500万美元比特币只是很小的一部分,具体来说是4月5日的一...

评论列表

冬马馥妴
2年前 (2022-06-03)

t 等语言开发的项目。 Golang 是当时知乎内部讨论交流最活跃的编程语言之一,考虑到以下几点,知乎决定尝试用 Golang 重构内部高并发量的核心业务: 天然的并发优

可难粢醍
2年前 (2022-06-03)

HP,也是没问题。一个系统沉积太久的话,会产生很多大大小小、零零散散的“技术债”,这其间就涉及解决成本的考量,重构、重写、抑或重新设计核心模块或新模块?由此又带来技术选择的问题。还有Python、PHP人才储备的问题,还有团队希望尝试新技术的

泪灼挽鹿
2年前 (2022-06-02)

和流量增长速度,可预见将在短期内服务器资源告急(针对这一点,知乎正在由单机房架构升级为异地多活架构); Python 过于灵活的语言特性,导致多人协作和项目维护成本较高 受益于近些年开源社区的发展和容器等关键技术的普及,知乎的基础

掩吻颇倔
2年前 (2022-06-03)

后期维护成本带来的问题逐渐暴露出来: 运行效率较低。知乎目前机房机柜空间已经不足,按照目前的用户和流量增长速度,可预见将在短期内服务器资源告急(针对这一点,知乎正在由单机房架构升级为异地多活架构); Python 过于灵活的语言特性,导致多人协作和项目维护成本较高 受益于近些年开源社区的发展和容

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。