兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
# 2025年使用Golang的17家主要公司 Kacper Rafalski 更新于2025年8月26日 • 阅读时间47分钟 字节跳动(ByteDance)将70%的微服务依赖于Go。这一统计数据表明,主要科技公司是多么认真地拥抱这种相对年轻的编程语言,以用于他们最关键的基础设施。 最初,Golang作为谷歌的内部解决方案,用于应对服务器扩展挑战,如今已演变为现代软件架构的支柱。美国运通(American Express)在支付和奖励网络中使用Golang,达到了处理大量交易所需的速度和可扩展性。PayPal发现,Go能够生成干净、高效的代码,并可以随着软件部署的增长而无缝扩展,这带来了显著价值。 数字本身讲述了一个引人注目的故事。用Golang构建的交易平台能够每秒处理数千笔交易,这使其成为需要实时性能的金融科技公司不可或缺的工具。SendGrid使用Go的高效架构每月处理和发送数十亿封电子邮件。这些并不是孤立的成功故事——它们代表了跨行业对Golang采用的广泛转变。 那么,这些公司为什么选择Golang而不是其他成熟的替代方案呢?CockroachDB发现,Golang的性能优势、垃圾回收和较低的入门门槛使其非常适合其数据库技术。这种语言的简单性与先进工具的结合,使组织不仅能够扩展服务,还能扩展整个软件工程过程。 使用Golang的公司受益于其垃圾回收能力和轻量级的goroutines,使应用程序的扩展变得简单。这个技术基础使组织在处理日益复杂的操作时能够保持简单——这是传统语言常常难以实现的平衡。 ## Uber 作为共享出行巨头,Uber在行业内构建了最令人印象深刻的Golang实现之一,其基础设施代表了大规模微服务架构的典范。 ### Uber的使命 Uber的使命是使“交通在任何地方、对每个人都像自来水一样可靠”。这不仅仅是市场营销口号——它反映了他们平台的技术现实。该公司处理大量实时数据,以连接全球网络中的乘客和司机。与大多数纯在线数字服务不同,Uber在物理世界中运营,在这里,时机至关重要。人们依赖其技术以获得收入或到达目的地,这创造了一个环境,系统故障会带来即时的、可触及的后果。 ### Uber如何使用Golang Golang在Uber的技术栈中占据中心位置,与Python、Node.js和Java一起。其Golang实现的规模令人瞩目:他们的单一代码库包含大约5000万行代码,并容纳约2100个独立的Go服务。这代表了行业内最大规模的Golang部署之一。 该公司战略性地采用Go用于高性能应用程序。像地理围栏和动态定价等关键系统——这两者都需要快速和并发处理——在Go基础设施上运行。Uber甚至将其高度并发的地理围栏查找服务从Node.js迁移到Go,展示了其对这种语言在关键操作中的能力的信心。 ### Uber从Golang中获得的好处 Go的并发模型正是Uber实时操作所需的。通过goroutines,语言将并发视为“第一等公民”,使开发者可以自由创建它们以隐藏延迟。这一架构决策在协调数千个同时的搭乘请求时至关重要。 除了性能外,Go的简单性使Uber的工程团队能够快速重构和改进系统。正如他们的工程团队所说:“Go给我们带来了效率、简单性和运行速度”。这一组合在管理跨越5000万行代码的数千个服务时变得至关重要。 ### 在Uber使用Golang的性能改进 数据本身就能说明一切。当Uber将其地理围栏查找服务迁移至Go时,CPU使用率下降了50%。这不仅仅是小幅优化——它代表了全球基础设施显著的成本节约。 最近,Uber与谷歌合作,在Go中实现了“性能指导优化(PGO)”,通过优化内联实现了大约4%的性能改进。尽管4%听起来不算多,但在Uber的规模下,这一优化消除了其主要服务中24000个CPU核心的需求。结果表明,选择Golang的公司通常会看到资源效率的显著提升。 ## Twitch 直播带来了独特的技术挑战,绝大多数平台都未曾遇到。流媒体巨头Twitch在构建世界上最大的实时视频分发系统时发现了这一现实,最终发现Golang对推动其最关键的基础设施组件至关重要。 ### Twitch的使命 Twitch通过一个在规模上出色的平台,将数百万创作者与观众连接。该系统通过视频处理管道处理超过1500万名每日活跃用户。在峰值时,超过200万的并发视频流通过其基础设施流动。 除了视频传送,还有同样令人印象深刻的挑战:Twitch维持一个庞大的实时聊天系统,每天发送超过100亿条消息。他们的Web API平均处理50,000个请求每秒,创造了一个技术环境,性能瓶颈会立刻影响数百万用户。 ### Twitch如何使用Golang 自2013年底以来,Twitch在众多高流量系统中实施了Golang。让我们看看他们最重要的实现:该平台的基于IRC的聊天基础设施代表了他们最早且最成功的Go部署之一。 该系统采用了多个用Go编写的专业组件。Edge处理消息的接收和分发,而Pubsub管理内部消息的分发。Clue分析用户行为,Room维护观众名单管理。此外,Twitch还开发了Twirp,这是一个Go中的RPC框架,简化了后端服务器之间的通信。 ### Twitch从Golang中获得的好处 Twitch的工程师们一致强调Go的简单性、安全性、性能和可读性,非常适合满足其高规模的挑战。语言内置的并发支持使得该平台能够同时处理多个流和聊天室。这一技术基础保持了无缝的用户体验,无论并发使用水平如何。 更重要的是,对于实时直播平台来说,Golang的高效性允许Twitch在不可预测的流量激增时迅速扩展服务。“刷新风暴”可能在几秒钟内造成20倍的正常负载——这样的场景如果没有强大的并发能力,将会使系统瘫痪。 ### 在Twitch使用Golang的性能改进 不可否认的是,跟踪各个Go运行时版本之间的性能改进揭示了这门语言是如何演变的。在Go 1.4和Go 1.6之间,Twitch在垃圾回收暂停时间上获得了20倍的改进。Go 1.6的进一步优化将这些暂停时间再减半。 到Go 1.7的预发布版本时,典型的暂停时间降至大约1毫秒——这比调优过的Go 1.6配置提高了10倍。最近,Twitch实施了一种内存压载技术,将CPU利用率降低了大约30%,同时在峰值负载下将整体99百分位API延迟大约减少了45%。 ## Dropbox 云存储先锋Dropbox做出了技术史上最大胆的迁移决定之一。最初构建在Python上,该公司意识到一个根本性的限制:他们的性能关键后端无法有效地扩展以服务于数百万用户。2013年,他们做出了战略决定,迁移到Go,这一举措最终涵盖了他们的大部分基础设施。 ### Dropbox的使命 Dropbox提供基于云的存储和文件共享服务,已成为全球超过5亿用户的核心基础设施。该平台面临着一个独特的技术挑战——管理数百万个并发文件操作,同时确保每个同步在多个设备上可靠进行。这不仅仅是存储文件;更是保持完美的一致性,当数百万用户同时上传、下载和修改文档。 ### Dropbox如何使用Golang 迁移故事始于性能瓶颈。Dropbox主要利用Golang提升其文件同步进程,实现更快速和更高效的用户文件管理。与其说是全面重写,他们更策略性地从2013年开始迁移性能敏感模块。如今,Dropbox的大部分基础设施在Go支持的系统上运行。 公司甚至开发了一个非官方的Go SDK,允许开发者与Dropbox API集成,尽管它仍处于测试状态,并没有正式支持。这一SDK展示了他们对Go的长期承诺。 ### Dropbox从Golang中获得的好处 Go的架构优势对Dropbox的用例证明了完美。最显著的是,Go的goroutines每个仅需2KB内存,能够支持数百万个并发进程而不崩溃。这种效率直接解决了Dropbox的核心挑战:处理数百万用户的文件操作而不导致系统故障。 从Python迁移到Go以降低基础设施成本和改善响应时间,带来了可衡量的商业价值。速度和简单性——Go的两个核心特性——被证明对于构建Dropbox的可扩展文件存储系统至关重要。这些改善解释了为什么Dropbox以及其他主要云服务提供商继续高度依赖Go来推动其服务。 ## SoundCloud 音乐流媒体先锋SoundCloud于2012年成为Golang的早期采用者,将这一语言整合到其技术栈中,与Ruby on Rails并行。这种前瞻性的做法已经扩展到他们的基础设施。 ### SoundCloud的使命 SoundCloud作为一个全球在线音频分发平台和音乐流媒体服务,覆盖190个国家的用户。该平台拥有约3亿首曲目——这一收藏数量是类似服务的三倍——同时每月服务约7600万活跃用户。SoundCloud的核心使命是通过无缝的音频内容传递将听众与艺术家连接,同时管理大量的流媒体数据。 ### SoundCloud如何使用Golang SoundCloud自我描述为“多语言平台”,尽管Ruby on Rails仍在其技术栈的顶部,Go在后端基础设施中扮演着越来越重要的角色。目前,该公司维护大约六个服务和十多个完全用Go编写的代码库。 其搜索基础设施展示了Go的战略价值。虽然这个系统由Elastic Search驱动,但几乎完全通过Go服务管理和接口连接。此外,他们的内部服务管理系统Bazooka,也是专门使用Go构建的,以安全处理复杂状态机。 ### SoundCloud从Golang中获得的好处 SoundCloud的工程师们将Go描述为“一种所见即所得的语言”,这意味着代码准确执行所描述的内容。这种清晰度大大降低了新员工的培训时间,工程师们自信地表示:“从零到生产性提交的时间在Go中比我们使用的任何其他语言都要快”。 这些实际的好处不仅限于个体生产力。Golang的静态类型和快速编译使得在开发过程中几乎实现实时静态分析和单元测试。一些想法可以在不到一个小时的时间内从白板到生产,这对任何工程团队来说都是一个显著的成就。 针对Go项目的代码审查更多地集中在问题领域,而非语言复杂性上。Go的“只有一种做事情的方式”理念消除了在风格辩论上浪费的时间,使开发者能够专注于实际的业务问题。这样的简化方法使SoundCloud即使在高峰使用时也能提供不中断的音乐流媒体体验。 ## Google Google创造了Golang,这使得它在涉及使用此编程语言的公司讨论时自然而然地成为焦点。 ### Google的使命 Google的使命是组织全球信息,让其变得普遍可访问和有用。该公司运营着少数组织能够匹敌的大规模服务。他们的核心数据解决方案团队在全球范围内维护网页索引服务,为Google搜索等产品提供支持。Chrome的后端服务包括Chrome优化指南,为用户提供关键路径服务。Google还为Google Cloud客户提供Firebase托管服务,通过全球内容分发网络提供静态网页托管。 ### Google如何使用Golang 早在2007年,Google的工程师们专门开发Go以解决Google规模上的服务器挑战。该语言在2009年11月公开,从那时起,Google在多个内部项目中实施了它。如今,Go驱动着谷歌云和Google Kubernetes Engine的显著部分。核心数据解决方案团队依靠Go进行网页索引服务,而Chrome优化指南服务则在用户的关键路径上都运行在Go之上。Google还在继续改进这种语言,Go 1.24带来了性能改进,减少了大多数应用程序的CPU开销。 ### Google从Golang中获得的好处 创建自己的编程语言为多个领域带来了实质性的回报: - **卓越的可扩展性**:Go在处理大型项目时表现非常优越,而C++的可扩展性较差。 - **速度与简洁性**:Go的性能几乎与C/C++相媲美,但没有难度大的复杂性和常见的错误源。 - **在大型企业代码库中标准化并发与工具的方式**。 - **更快的编译时间**:对于Google庞大的代码库至关重要。 Google构建Go作为解决真实工程问题的实用方案,而非理论上的语言实验。这一务实的基础使其理想适用于Google的网络服务和云基础设施,为其他公司今天的广泛采用奠定了基础。 ## Netflix 怎样才能向数百万观众同时提供引人入胜的内容而没有缓冲中断?流媒体巨头Netflix在Golang中找到了部分答案,正在其保持全球娱乐机器平稳运行的关键基础设施组件中实施该语言。 ### Netflix的使命 成立于1997年的Netflix是一家美国制作公司,向全球数百万用户提供基于订阅的流媒体服务。该平台已经发展成为一个全球娱乐强国,通过多个设备交付个性化内容。技术挑战可不容小觑——Netflix必须有效地处理数百万个并发流,要求其后端系统在减少延迟的同时保持可靠性。该服务依靠多样化的技术栈,包括Java、Spring Boot、Python、React.js、Node.js和AWS作为云基础设施。 ### Netflix如何使用Golang Netflix战略性地在性能关键的系统中使用Go,其中延迟和并发至关重要。Rend是一个高性能且完全用Go编写的Memcached兼容代理和服务器,作为Netflix EVCache系统的一部分,为实时用户流量服务。这只是他们Golang实施策略的一部分。 该公司还利用Golang用于: - 分布式追踪系统,监控和调试微服务的规模 - 管理数千个微服务的云编排工具 - Chaos Monkey,是该公司的弹性测试工具,模拟生产环境中的故障 Netflix的工程团队做出的明智选择是寻找“一种比Java延迟更低(Java的垃圾回收暂停是一个问题)、对于开发者更高效的工具,同时还能处理数万个客户端连接的语言”。 ### Netflix从Golang中获得的好处 Go的并发能力使Netflix能够同时处理多个用户请求,确保节目及时开始,没有延迟或缓冲问题。Netflix的工程师们欣赏Go干净直观的语法,这使他们可以专注于构建新功能,而不是与语言的复杂性抗争。 在Netflix的全球扩张故事中,这一实用影响变得显而易见。他们专门用Go重写了连接管理服务,以支持全球增长。这种语言在每秒处理数千个并发连接时表现理想,同时消耗比Java或Python替代品更少的CPU和内存。这种效率帮助Netflix维护他们的流媒体领导地位,控制运营成本,这在竞争激烈的娱乐领域中是一个至关重要的优势。 ## BBC 作为世界上历史最悠久的国家广播机构,BBC悄然构建了媒体中最具韧性的数字基础设施之一。自2012年起,BBC依赖Golang来应对每次整个国家转向屏幕时所带来的独特压力。 ### BBC的使命 没有组织能像BBC一样面临数字世界中的完美风暴。在选举之夜、皇家婚礼、主要体育赛事中,这些场合带来的流量激增会使大多数网站瘫痪。该公司通过电视、广播和数字平台提供新闻、娱乐和教育内容,让全球观众受益。他们的多媒体网站在全球排名靠前,但单靠规模并不能捕捉到真正的挑战。 BBC的公共服务使命产生了商业媒体公司所无法面临的责任。当突发新闻发生或国家事件展开时,数百万用户期望立即获得可靠的信息获取渠道。在高峰时刻没有逐步扩展或接受停机的奢侈。 ### BBC如何使用Golang 该公司转向Go,主要用于其广泛数字平台上的内容交付,尤其注重后端和内部分析服务。BBC的开发者已构建基于Go的解决方案,用于提取和处理数据的网络爬虫和抓取工具。这些系统为内容分发提供了支撑,悄然管理了无缝用户体验背后的技术复杂性。 让BBC的实现尤其引人注目的是Go如何处理主要事件期间的流量激增。这种语言最大化CPU利用率的能力被证明对公司后端基础设施至关重要。 ### BBC从Golang中获得的好处 在高关注事件期间,当观众人数急剧上升时,结果自会显露。BBC的Go支持系统能够同时处理多个请求,确保用户可以快速访问内容,正是他们最需要的时候。语言的高效性使开发者能够创建高性能的Web应用程序,处理大规模工作负载,而不牺牲质量。 Go清晰的语法和简约的方式简化了BBC工程师的开发过程。这转化为运营优势——该公司在面对对高质量数字体验的不断增长的需求时,仍能提供不中断的内容访问。BBC早期采用Golang使其在寻求可扩展内容交付解决方案的媒体公司中占据了良好的位置。 ## Docker 容器虚拟化先锋Docker完全基于Golang构建,其平台创建了Golang驱动的开发者基础设施的成功案例之一。 ### Docker的使命 Docker提供了一种容器化平台,使开发者能够将应用程序打包、分发和运行在容器中。这些轻量级、独立的包包含运行应用程序所需的所有内容:代码、运行时、系统工具、库和设置。该平台允许应用程序在不同环境中一致地运行,为开发者提供了一个标准化的部署单位。 Docker已经成为现代软件开发的核心,简化了构建、运输和运行应用程序的过程。这项技术解决了开发者面临的一个根本挑战——确保应用程序无论部署在何处都能够正常工作。 ### Docker如何使用Golang Docker的核心技术主要用Go构建。该公司之所以选择Golang,是因为这一语言非常适合构建基础设施工具。Docker的开发者广泛使用Go来支持其内部工具链,并创建基于Go的解决方案,用于容器化Go应用程序。 他们的做法通常涉及多阶段构建,生成显著更小的镜像。这一技术能将容器大小从300MB以上减少到仅6MB。这种尺寸的显著减少最低限度地降低了潜在的安全漏洞,同时提高了部署管道的性能。 ### Docker从Golang中获得的好处 通过用Go构建他们的平台,Docker获得了几个关键优势: - **更快的编译时间**:Go的内置依赖管理和强烈的代码格式要求提高了开发者的生产力。 - **简便的交叉编译**:Go使得为不同操作系统和架构创建二进制文件变得简单。 - **更小的应用程序大小**:Go的静态二进制文件非常适合Docker提供的微服务部署策略。 - **优化的性能**:这种语言的高效性帮助容器快速启动,这对于容器化应用程序至关重要。 Docker的Golang实现使语言与平台之间形成了共生关系。这种关系使Docker成为一个优秀的工具,用于以代码定义开发环境,确保团队成员和持续集成系统使用一致的工具集。结果是更可靠的开发过程,减少了与环境相关的问题。 ## SendGrid 电子邮件发送带来了独特的技术挑战,而大多数开发者都未曾考虑。SendGrid每天处理超过5亿条消息,使其成为Golang在关键通信基础设施中的最严格应用之一。 ### SendGrid的使命 SendGrid作为一家云基础的电子邮件事务服务提供商,使企业能够安全而高效地发送消息。作为Twilio通信生态系统的一部分,该公司为无数需要可靠电子邮件发送的组织提供支撑——从营销活动到交易通知。他们的电子邮件发送系统既要求高吞吐量,又要求一致的低延迟,以确保向全球客户及时发送消息。 ### SendGrid如何使用Golang 公司对Go的追求反映了现代电子邮件基础设施的演进。早期,SendGrid在其后台系统中使用Perl/AnyEvent,随后转向Python/Twisted。然而,随着消息量的激增,团队意识到传统的方法无法满足其规模要求。 SendGrid作出了战略决策,采用Go作为其主要开发语言。目前,该公司在其核心电子邮件基础设施中广泛使用Golang,系统性地重写关键功能,以增强稳健性、速度和可靠性。该实现利用了Go的轻量级goroutines和强大的并发模式,以管理定义电子邮件发送的异步操作。 ### SendGrid从Golang中获得的好处 结果表明Go在通信基础设施中的有效性。Go有效地解决了与SendGrid操作密切相关的并发编程挑战。开发者们注意到,这一改进显著降低了长期维护成本。 更值得注意的是,SendGrid的工程师对Go的潜力表现出极大的热情——许多人在官方采用之前投入个人时间尝试该语言。这种自发的采用模式往往表明了技术对开发者的真正价值。 Golang的并发模型使SendGrid能够高效地同时处理数百万封电子邮件。对于一家通信基础设施提供商而言,他们的电子邮件发送系统不仅实现了高吞吐量,还保持了低延迟。此外,SendGrid通过开源他们开发的Go库,增强了自身在开发者社区中的地位,同时改善了招聘流程。 ## Monzo 数字银行创新者Monzo采取了与大多数技术公司不同的策略。他们不是在遇到规模限制后迁移至Golang,而是从一开始就基于Go构建整个银行基础设施。 ### Monzo的使命 成立于2015年的Monzo,是英国首批基于应用的挑战者银行之一,截至2023年,服务于超过750万客户。这家以移动优先的银行持有金融行为监管局下的完整英国银行执照,提供全面的数字银行服务。用户可以按类别跟踪支出,设置预算,向其他Monzo用户发送即时付款,赚取储蓄利息,并访问透支、联名账户等传统银行功能。该平台还支持Apple Pay、Google Pay和3D Secure在线支付。 ### Monzo如何使用Golang 大多数公司都从单体架构演变为微服务。Monzo则选择了相反的路径。根据Monzo首席工程师Matt Heath的说法,公司专门选择Go,是因为其内存管理能力、静态类型和卓越的并发原语。这一战略决策导致超过1600个微服务为其银行系统提供动力,所有服务打包在Docker容器中并部署在Kubernetes上。 在高峰使用期间,这一规模显得尤其令人印象深刻。这些系统在AWS云服务上运行,同时使用开源技术,包括Linux、Apache Cassandra和PostgreSQL数据库,每秒处理4000笔交易。 ### Monzo从Golang中获得的好处 Golang的并发特性使Monzo能够构建一个能够扩展到为全球数亿客户服务的银行平台。这种架构在没有维护窗口或单点故障的情况下保持99.9%的系统正常运行时间。除了技术可靠性外,Monzo在实施Golang后还将运营成本降低了大约20%。 Matt Heath总结了他们成功的本质:“Go是一种完美的语言,用于创建微服务架构……在Monzo轻松创建围绕‘单一责任原则’的小型、简单的网络服务。” ## Facebook 当世界上最大的社交网络需要每天处理数十亿次用户交互时,会发生什么?Facebook——现在的Meta——转向Golang,用于为其庞大的技术生态系统提供专门的后端系统。 ### Facebook的使命 Facebook运营着全球最大的社交网络平台,将数十亿用户连接在一起。该公司管理着一个庞大的技术生态系统,每天必须高效地处理、存储和传输大量数据。除了旗舰平台,Facebook还负责其它社交应用程序,包括Instagram、WhatsApp和Messenger,这些应用都需要强大的后端系统以维持性能。考虑到如此庞大的基础设施,Facebook不断寻求能够高效处理并发操作且保持简单性的技术。 ### Facebook如何使用Golang Facebook的工程团队主要利用Go进行基础设施服务和微服务,充分利用其goroutines来同时处理多个任务。这种语言为许多网络工具和服务提供了支持,利用其强大的标准库来构建网络应用程序。Facebook还使用Go进行数据处理和分析任务,以高效管理大量信息。 该公司对Golang生态系统的最重要贡献是Ent,一个最初由Ariel Mashraki在Facebook的连接团队开发的Go实体框架。这个面向对象的关系映射工具专门设计用来处理复杂网络拓扑的映射,当标准解决方案显得不足时便显得尤其重要。Facebook随后将Ent开源,并于2023年将其移交给了Linux基金会,为未来的开发提供一个无厂商中立的归属地。 ### Facebook从Golang中获得的好处 Go的性能特征对于需要速度和资源效率的应用非常理想。这种语言的编译生成单一二进制文件简化了各类内部任务命令行工具的部署和分发。最重要的是,Go的并发模型使Facebook的开发者能够同时处理多个任务,这使其非常适合高性能应用,这些应用要求在巨大的数据集间高效利用资源。 Facebook的经验展示了即便是最成熟的技术公司也能在Golang处理并发操作的方式中发现价值。 ## Capital One 传统银行在采用新技术时面临着独特的挑战——必须在创新与严格的合规要求之间取得平衡。Capital One便是一个成功示范,展示了传统金融机构如何在满足这些苛刻标准的同时成功地拥抱Golang。 ### Capital One的使命 Capital One是美国第六大银行,提供全面的银行、信用卡和贷款服务,服务数百万客户。该公司在其位于弗吉尼亚州麦克莱恩的总部经营约755家分行。与其他不同的是,Capital One采用了以技术驱动的方式进行银行业务——该组织一直致力于投资技术,以创造更直接、更高效的客户互动,覆盖多个金融服务渠道。 ### Capital One如何使用Golang Capital One与Go的旅程从2016年开始,这一年他们为其信用优惠API添加了一个承认客户查看优惠的端点。最初,系统基于Java,但初步的概念验证测试显示出令人惊艳的性能提升,吸引了其工程团队的注意。 这次成功促使Capital One在其基础设施中扩展Golang的应用。目前,该公司使用Golang于: - 完全重建自JAVA的信用优惠API(版本3.0),现已完全无服务器化 - 处理公有云服务的资源配置和管理平台 - 支持MacOS和Windows客户端的命令行界面 - 将分层、基于序列的工作流转变为扁平化的微服务架构 这次迁移代表了一个拥有数十年Java系统的组织的重大架构转变。 ### Capital One从Golang中获得的好处 Capital One对Golang的采用所带来的成效超出了他们的预期。公司在请求和回复的响应时间上实现了70%的性能提升。更令人瞩目的是基础设施成本的减少——通过移除传统组件如EC2、ELB和RDS,组织实现了90%的成本节约。 团队的开发速度提高了大约30%,因为开发人员能够专注于创建面向业务的功能,而不是管理服务器基础设施。这一转变对一家在严格监管下运营的金融服务公司尤其重要,其中法规合规性和功能开发必须步调一致。 开发团队获得了创新的灵活性,同时支持API的扩展功能,并提高了与Capital One的持续集成/持续交付管道的整合度。对于一个受严格监管的银行来说,这种灵活性代表了许多传统金融机构难以达到的竞争优势。 ## Cloudflare Web基础设施巨头Cloudflare展示了公司如何利用Golang管理真正的大规模网络操作。 ### Cloudflare的使命 Cloudflare位于网络安全和性能优化的交汇点,每秒处理数百万个请求,并通过DDoS减缓服务维持实时的网络性能。公司的基础设施已成为现代互联网不可或缺的一部分,通过其内容分发网络服务处理着全球网络流量的相当大一部分。 Cloudflare的运营规模揭示了其技术挑战的复杂性。通过其网络流动的动态流量中,超过一半与API请求相关,使其成为全球Web应用的关键支柱。这一责任要求基础设施能够即时扩展,同时在分布式边缘计算系统之间保持可靠性。 ### Cloudflare如何使用Golang Golang是Cloudflare主要的编程语言之一。公司使用Go开发了多个主要系统,满足其基础设施需求的特定方面: - RRDNS:通过响应速率限制、缓存、负载均衡和CNAME扁平化,扩展Cloudflare的DNS基础设施 - Railgun:压缩技术,加速Cloudflare的数据中心与源Web服务器之间的连接,特别适用于高延迟连接 - 红十月(Red October):一种用于加密和解密操作的加密安全实现的双人规则控制机制 - SSL Bundler:计算客户SSL证书的最佳证书链的系统 这些实现展示了Go在网络基础设施不同方面的多样性,从DNS解析到安全协议。 ### Cloudflare从Golang中获得的好处 Cloudflare的Golang实现带来了可衡量的基础设施改进。他们最近在Go中采用的“性能指导优化(PGO)”使CPU使用率降低了大约3.5%,为其基础设施节省了近97个核心。此优化表明,语言级别的改进可以直接转化为规模化运营的成本节约。 Go的轻量级并发模型对于Cloudflare的服务至关重要,确保在他们的关键基础设施上最小的停机时间。实质性影响不仅限于内部操作——Cloudflare的2024年API客户端语言受欢迎度报告显示,Go已成为构建自动API客户端的首选,约占所有自动API请求的12%。 开发人员使用Cloudflare服务的大范围采用,验证了该公司在自己的Golang实现中所体会到的效率与可靠性。 ## Cockroach Labs 数据库科技公司Cockroach Labs在其开发过程早期做出了一个大胆的架构决定,选择几乎完全用Golang构建他们的分布式SQL数据库。 ### Cockroach Labs的使命 Cockroach Labs开发CockroachDB,一个针对对持续可用性要求极高的关键应用设计的分布式SQL数据库。成立于2015年的公司最近庆祝了自己的第十周年,标志着打造结合韧性、可扩展性和简约性的数据库技术的十年。其客户包括Bose、Form3、Hard Rock Digital和Shipt,以及财富50强的金融机构和大型零售及媒体公司。核心挑战是使企业能够运行那些即便在基础设施失败的情况下也能保持可用性的应用,这一需求要求容忍零停机时间。 ### Cockroach Labs如何使用Golang 在2014年早期,该公司面临一项关键的语言选择,选择Go而非成熟的替代品如C++和Java——此时Rust尚未稳定。令人惊讶的是,所有参与这个项目的开发者——包括创始人——当时均是Go的新手。如今,CockroachDB的代码库显示出对Go的承诺:89.6%用Go编写,其余部分用Java、C++、Python、TypeScript、Starlark和Yacc等小型组件构成。从一个空的GitHub仓库发展到现在超过125,000行非生成的Go代码,这一项目至今吸引了超过600名GitHub贡献者,截至2023年10月,证明了Go对没有编程经验的开发者仍然足够可及。 ### Cockroach Labs从Golang中获得的好处 Go在软件工程中的方法证明了其对数据库开发的理想性。语言的简单性和一致性加速了新开发者的入门,而Go强制的代码风格、直接的导入和自动导入管理以及最小化的编程习语则提供了显著的生产力提升。不同于Java强调的面向对象抽象,Go允许团队直接关注实现,仅在必要时添加接口。与C++相比,自动内存管理消除了常见错误源。 团队最初担心Go的垃圾回收会影响数据库性能。然而,他们发现可以实施手动调整来控制哪些内容进入垃圾堆,最终实现了与C++相媲美的性能,同时保持了更干净、更易懂的代码。 ## MercadoLibre 当一家公司意识到他们的技术栈无法跟上爆炸性增长时会发生什么?作为拉丁美洲电商领导者,MercadoLibre正面临这一挑战。 ### MercadoLibre的使命 MercadoLibre在拉丁美洲运营着最大的在线商业生态系统,目前覆盖18个国家。成立于1999年的该公司,总部位于阿根廷,提供全面的电子商务解决方案,使个人和企业能够通过互联网买卖、付款、广告和运输产品。这一规模是惊人的——在每分钟处理超过9亿个请求的同时,平均每天完成超过10,000次部署,管理大约120,000个Amazon EC2实例。 ### MercadoLibre如何使用Golang 该公司与Go的旅程是出于必要而非选择。最初,MercadoLibre的平ow平台基于Groovy和Grails以及关系数据库。然而,到2015年,当用户增长加速时,这些技术开始达到极限。战略性地迁移到Golang的做法,现在支撑着公司大约一半的流量。 他们的核心API团队利用Go构建和维护围绕微服务生态系统核心的关键服务。这些API支持多个平台,包括MercadoLibre市场、MercadoPago金融科技,以及运输/物流解决方案。现在,他们最大的一些API每分钟处理超过2000万请求。 ### MercadoLibre从Golang中获得的好处 这一转型带来了看似难以置信的效果。请求处理时间从一分钟降至仅10毫秒。MercadoLibre将服务器需求从32台减少到4台,同时将每台服务器的CPU核心数减半。这代表着服务器数量的减少达88%,而每台剩余服务器的CPU使用率减少了50%。 开发人员生产力的提高同样显著。构建时间变为原来的三分之一,测试套件执行速度从90秒加速到仅3秒——提升24倍。工程经理Eric Kohan完美地捕捉了他们的经验:“Go真的对我们而言非常出色。它功能强大且容易学习,在后端基础设施方面,真的是很棒的可扩展性。” ## Riot Games 游戏开发强国Riot Games展示了娱乐公司如何利用Golang支持全球分布的游戏平台上的数百万并发玩家。 ### Riot Games的使命 Riot Games开发和运营着一些全球需求最大的在线多人游戏。英雄联盟(League of Legends)和无畏契约(Valorant)需要复杂的匹配系统以及能够支持数百万并发玩家的实时游戏服务器。公司的技术基础设施面临独特压力,必须在全球范围内维护一致的性能,同时应对在主要赛事或内容发布期间可能迅速增长的庞大玩家基础。 ### Riot Games如何使用Golang Go在Riot享有“第一等公民”的地位,与Java并列成为主要服务语言。Riot开发者体验(RDX)团队广泛使用Go,加速游戏团队在全球范围内开发、部署和运营后端微服务。他们的实现覆盖关键系统,包括全球部署工具、访问控制管理层和管理AWS资源的云基础设施提供服务。 Valorant的整个后端微服务架构均运行在Golang上——从启动和管理游戏服务器进程到处理游戏内购买。这种全面采用反映了Go在现代游戏基础设施高并发需求中的适用性。 ### Riot Games从Golang中获得的好处 Go通过goroutines和通道的并行性和并发原语,使Riot能够高效地处理玩家连接。语言的简单性和小规格使新工程师入门变得非常简单,无论他们的编程背景如何。 Riot的工程经理Aaron Torres重视Go的分发简易性——应用程序只需下载和运行二进制文件,即可完美部署于命令行工具中。Go内置的并发支持让Riot在遭遇慢速时能够实现背压,平行处理独立操作,并在应用中运行后台进程。这些功能在管理塑造了竞争性游戏体验的复杂实时交互时至关重要。 ## Salesforce 企业软件迁移很少引起头条新闻,但Salesforce迁移到Golang的故事讲述了大规模的实际工程决策的引人注目的故事。 ### Salesforce的使命 Salesforce是全球第一的AI客户关系管理(CRM)平台,帮助各类组织通过AI驱动的解决方案重新构想业务。该公司提供来自不同来源的统一数据平台,以及全面的客户360应用程序。他们的旗舰产品使组织能够高效地管理客户关系,并通过复杂的分析工具提供洞察。Salesforce领导层一直站在新兴技术的前沿,从市场分析和客户讨论中获取专业知识,帮助企业预测未来趋势。 ### Salesforce如何使用Golang Einstein Analytics于2017年推出,作为一个可视化工具,提供Salesforce环境中所有活动的洞察。最初的架构采用了混合方法——C用于性能,Python用于诸如查询解析和REST API服务器等功能。这看起来是合理的,直到产品开始增长。 随着不必要的新功能附加到Python封装上,性能瓶颈开始显现,Einstein Analytics在推出之前经历了减缓,这对企业产品来说是一个关键问题。Salesforce做出了战略决定,将Einstein Analytics从Python-C混合迁移至Golang。首席架构师Guillaume Le Stum领导了这一过渡,几乎完全在Go中重建了后端。 ### Salesforce从Golang中获得的好处 Go有效地解决了Python在多线程方面的局限性,这是企业级应用必备的关键要求。该语言的静态类型比Python的动态类型提供了更高的可靠性,随着问题的增加,这种类型在APIs上变得尤为重要,客户为之付出了数百万美元。 Salesforce避免了他们所称的“庞大的依赖噩梦”,而Python库管理可能造成的问题。Go的跨平台能力提供了意想不到的灵活性——Le Stum指出:“如果我们需要将这些代码用于移动应用,我们可以将其交叉编译为iOS或Android,并且它会正常工作”。 或许最值得一提的是,Salesforce的开发者更欣赏Go的可读性超过Python的优雅,意识到在企业软件中,工程师实际花费更多时间读取代码而非编写代码。这一实用考虑反映了维护大规模商业应用的现实,在这个过程中,清晰相比巧妙更加重要。 ## 表格对比 这十七家公司所展现出的模式揭示了Golang在不同行业中实际影响的引人注目的见解。尽管每个企业因独特挑战而开始与Golang的旅程,结果却展示出显著一致的主题。 | 公司 | 主要业务 | Golang的主要应用场景 | 获得的关键好处 | 显著性能改进 | |--------------|------------------|---------------------------------------------|----------------------------------------|----------------------------------------| | Uber | 共享出行平台 | 地理围栏、动态定价系统、约2100个独特Go服务 | 改进并发性、系统简化、运行速度 | 地理围栏服务的CPU减少50%,PGO带来的4%总体性能改进 | | Twitch | 直播平台 | 聊天基础设施、Edge服务、Pubsub系统 | 简单性、安全性、性能、可读性 | 垃圾回收暂停时间提升20倍,CPU降低30% | | Dropbox | 云存储 | 文件同步、后端基础设施 | 高效的并发处理、降低基础设施成本 | 每个goroutine仅需2KB内存,可支持数百万个并发进程 | | SoundCloud | 音频流媒体 | 搜索基础设施、部署系统(Bazooka) | 更快的开发者上手、提高生产力 | 从概念到生产低于一个小时,简化了代码审查 | | Google | 技术/搜索 | 网页索引、Chrome优化指南、云服务 | 出色的可扩展性、标准化并发方法、编译速度更快 | Go 1.24带来显著CPU开销减少 | | Netflix | 视频流媒体 | Rend(Memcached代理)、分布式追踪、Chaos Monkey | 更低延迟、改进的开发者生产力 | 有效处理数万个并发连接 | | BBC | 广播 | 网络服务、内容交付、数据处理 | 强大的流量处理能力、高效并发处理 | 处理主要流量激增而不降级的服务 | | Docker | 容器化 | 核心容器技术、内部工具链 | 更快的编译时间、易于交叉编译 | 从300MB容器大小减少到6MB | | SendGrid | 电子邮件服务 | 核心电子邮件基础设施 | 高效的并发操作、减少维护成本 | 每天处理超过5亿封电子邮件 | 公司 | 主要业务 | Golang的主要应用场景 | 获得的关键好处 | 显著性能改进 | |--------------|------------------|---------------------------------------------|----------------------------------------|----------------------------------------| | Monzo | 数字银行 | 微服务架构、云基础设施 | 更强的可扩展性、降低运营成本 | 系统正常运行时间达到99.9%、运营成本减少约20% | | Facebook | 社交网络 | 后端系统、微服务 | 提高性能、易于开发、增强并发处理能力 | 提升多任务处理能力,降低内存使用与延迟 | | Capital One | 银行业 | 信用优惠API重构、资源配置 | 提高响应速度、降低基础设施成本 | 响应时间提高70%,成本节约90% | | Cloudflare | 网络安全与性能 | DNS基础设施、边缘计算 | 更好的CPU利用率、减少停机时间 | 通过PGO优化降低CPU使用约3.5% | | Cockroach Labs| 分布式数据库 | CockroachDB的核心系统 | 提高生产率、改进可维护性 | 与C++相媲美的性能、显著降低代码复杂度 | | MercadoLibre | 电子商务平台 | 位于高并发请求下的API | 提高处理效率、降低服务器数量 | 请求处理时间缩短至10毫秒 | | Riot Games | 电子游戏 | 后端微服务、实时游戏服务器 | 提高并发处理能力、简化开发流程 | 游戏服务器处理能力大幅提高 | | Salesforce | 企业软件 | Einstein Analytics重构 | 改善可靠性、减少依赖问题 | 处理性能提升显著,避免依赖噩梦 | ## 结论 这些成功的例子充分展示了Golang在不同行业中的多样性和适用性。无论是快速处理高并发请求,还是支持复杂的后端系统,Go的并发与简洁特性为企业提供了一条有效的解决方案。 随着越来越多的公司认识到Golang的潜力,预计它将在未来的技术栈中占据重要位置。无论是初创企业还是已建立的公司,Golang都提供了构建高效、可扩展应用程序的能力,为企业的数字化转型提供了强大的支持。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章