共计 4397 个字符,预计需要花费 11 分钟才能阅读完成。
https://www.bilibili.com/vide…
引子
Bloomberg 有很多标签:寰球财经媒体巨头;创始人负责过纽约市长、竞选过美国总统;它也是世界上最大的科技公司之一,其开山之作彭博终端,是寰球近 33 万财经用户的决策和交易工具,至今仍为 Bloomberg 帝国带来 85% 的支出,也是汤森路透这样的老牌媒体团体和新锐们垂涎却无奈撼动的基石。
不过,在这些煊赫的标签背地,Bloomberg 既是开源软件的重度使用者,也是许多超级开源社区如 OpenStack、Apache 基金会、和 C++ 的重要贡献者。
大家好!我是 Koala。在云计算基础设施、大数据、和编程语言方面,Bloomberg 都有着大量的技术投入,明天,咱们就一起去探秘它和开源的故事。
彭博终端是一种怎么的存在?
作为公众,咱们日常接管的通常是 Bloomberg 提供的商业、金融和新闻资讯。而作为业余机构和集体,每一天 所依赖的可能就是 Bloomberg Terminal,即彭博终端了。
创建于 1981 年的 Bloomberg LP,第二年即推出了彭博终端,心愿以开创性的技术、为过后信息流传迟缓且低效的行业带来全面改革,也为证券经纪们提供更轻松的工作工具。
尽管,明天 一台彭博终端的年租用费用高达 2.4 万美元;尽管,它仍然还保留着老旧的界面、和轻便的键盘,但来自寰球近 33 万的订阅用户对它就是重度依赖,而且以领有一台彭博终端为身份的象征。
那么,传说中的彭博终端到底是怎么的一种利器呢?
彭博终端是一个向专业人士提供彭博业余服务和解决方案的对立平台,领有数以万计的数据库和应用程序。它将金融及周边信息都整合在一个平台上,向用户提供权威性的经济评论和观点;同时,以彭博终端为外围,它还提供多种金融解决方案;此外,它打造的即时通讯零碎 Instant Bloomberg 被称为华尔街的 Facebook,交易员们在下面交换各种金融产品的价格,甚至是小道消息。I IB you 已是金融圈的暗语。
Bloomberg 的“新闻 + 终端”模式,是它始终难以被模拟和超过的护城河。至今,彭博终端提供的服务仍然是 Bloomberg 帝国 85% 支出的起源。
打造彭博终端的技术挑战
每天早上 9 点 29 分,当寰球任何一个金融市场开市钟声行将敲响之际,大量市场数据也将涌入 Bloomberg 的数据基础设施中枢 Ticker Plant。
Bloomberg 本身不发明数据,然而,每一天,Ticker Plant 要存储和传输寰球各种金融工具输出的交易和报价,解决数千亿条的数据信息、200 万条的新闻资讯、和超过 10 亿条的电邮与即时通信,而后再将这些事件聚合、丰盛、存储和传输到彭博终端。
Bloomberg 的 6000 人技术开发团队,就在 Ticker Plant 里,打造着包含硬件、应用程序、网络和界面在内的基础设施和工具。
而因为寰球金融市场的区域性散布,Ticker Plant 不仅须要 24 小时昼夜运行,还要应答多时段的峰值数据。这些,都给 Bloomberg 提出了可扩展性、高性能、低提早、和稳定性的技术挑战。
开源的使用者和贡献者
面对这些挑战,Bloomberg 采取的是“开源优先”的准则。正如 Bloomberg 开源社区负责人兼 CTO 办公室成员 Kevin Fleming 在承受采访时所解读的:”在可能的状况下,咱们在应用程序和基础设施的开发中,优先应用开源工具而不是商业工具。当工具的源代码可用时,你能够灵便地理解它的工作原理、批改它并反对它;不受供应商隐没,或优先级扭转的影响。开源工具让咱们可能掌控本人的命运,如果某个工具对咱们足够重要,咱们甚至能够组建一个外部团队来为该工具提供反对和加强性能。”
同时,Bloomberg 也以 Take…and give back 的开源理念,在适当的时候将一些加强性能回馈给开源社区。
接下来,咱们就从云计算基础设施、大数据、和编程语言三个方向一探他们在开源软件上的抉择和奉献。
云时代基础设施 – OpenStack 和 Ceph
不久前,开源云软件 OpenStack 背地的 OpenInfra 基金会发文,欢送 Bloomberg 成为它的金牌会员。
2013 年,当 Bloomberg 在构建它的公有云基础设施时,对于技术栈的设计,提出了高可用性、可程度拓展、架构强壮、以及离线状态下可部署和运行等方面的要求。
在虚拟化基础设施的抉择上,过后的市场中既有商业化产品也有开源软件。最终,Bloomberg 抉择了在开源的 OpenStack 上部署和运行一系列开源软件,例如 Hypervisor OS 采纳了 Ubuntu、对象和块存储采纳了 Ceph、数据库用了 MySQL+Galera、音讯队列应用了 RabbitMQ3、日志采纳了 Elasticsearch Kibana。
投入 OpenStack 一年后,Bloomberg 的数据中心 中 就部署了数百台用于运行 OpenStack 的服务器。
谈到对 OpenStack 的奉献,Bloomberg 曾说,十年前退出 OpenStack 时,尽管社区中已有大量的厂商和初创公司,但成熟的公司并不多。而随着 Bloomberg 的退出,更多成熟公司退出到了 OpenStack 社区,为 OpenStack 生态削减了很多新的性能,反对了 OpenStack 云平台的开发、倒退和胜利。
而对于云基础设施中的存储,Bloomberg 则抉择了 Ceph。
Ceph 是一个对立的分布式存储系统,具备高性能、高可用性、高可扩展性,和反对块、文件、和对象多种存储接口、反对多语言驱动的丰盛个性。而且在过后,通过多年的倒退,Ceph 曾经失去了泛滥云计算厂商的反对并被广泛应用。红帽和 OpenStack 都能够与 Ceph 整合、以反对虚拟机镜像的后端存储。
在 Bloomberg,它的存储工程团队,为彭博终端的 6000 名应用程序开发人员、治理着超过 100 PB 的容量和外部云,承当着存储的设计、构建和保护工作。
因为 Bloomberg 在存储方面的投入,当 2020 年 3 月下旬因疫情导致全球股市暴涨时,过后,彭博终端上来自寰球资本市场的数据简直翻了一番,某几日的信息量甚至达到了 2400 亿条,但 Bloomberg 的存储系统禁受住了考验。
Apache 软件基金会
Bloomberg 对开源软件的宽泛应用,也使他们与 Apache 软件基金会产生了分割。目前,Bloomberg 是它的金牌赞助人。
从 2012 年至今,Bloomberg 已参加了 Apache 数十个开源我的项目的开发和奉献。这些我的项目反对了 Bloomberg 的数据迷信工作流程、数据处理工作流程和网络服务,以及公司经营的其它外部和内部服务。
在这些开源我的项目中,就有出名的 Hadoop 和 Solr。
对于 Bloomberg 来说,在他们面临的技术挑战中,包含了大规模数据存储、低提早检索、海量申请、以及分布式计算和存储环境下的高可用性。而 Hadoop 以及 HDFS、HBase、Hive、Oozie、YARN/Spark 等开源软件,则是他们大规模、高可用数据利用的根底。
目前,Bloomberg 的 Hadoop 基础架构团队治理的集群能够解决 10 PB 级别的存储,这些集群散布在 1000 台服务器上,每天运行上千亿个申请。
搜索引擎是彭博终端的另一项重要性能。Bloomberg 的搜寻基础设施团队认为,搜寻不只是针对文本,更是对于数字,而且是大量的数字。为了使客户能对这些数字进行钻研、判断和决策,Bloomberg 必须提供灵便、精确和及时的剖析工具。而 Solr 就是 Bloomberg 用来构建这些剖析工具的重要开源软件。
Apache Solr 是用 Java 编写的企业级搜寻平台,提供了搜寻相干的一系列高级性能,并且因为具备很强的扩展性和容错性,因而被广泛应用于企业搜寻和剖析用例。
在 2015 年,Bloomberg 搜寻基础设施团队,利用 Solr 所构建的工具,就为 100 个以上的利用提供了搜寻服务。而到 2019 年,利用 Solr 构建的 Bloomberg 搜寻,已能够将散布在数百台机器上的上千个 Solr 云服务中的信息对立起来。
业内最好的 C++ 工程师都在为 Bloomberg 工作
最近,一篇文章的题目是这样的:《业内最好的 C++ 工程师都在为 Bloomberg 工作》。
在 Bloomberg,有近 6000 名工程师在写 C++。能够说,Bloomberg 是金融行业最大的 C++ 用户之一,也是头等赞助商。
Bloomberg 对语言的酷爱,源自它的工程师们置信,抉择正确工具的重要性。他们的大多数软件用 C++、JavaScript、TypeScript 和 Python 编写,同时他们也是这些开源社区的踊跃贡献者。
Bloomberg 与 C++ 的历史源远流长。最后,彭博终端的服务器端是用编程语言 Fortran 开发的,之后用 C 语言编写,再之后,客户端和服务器端都已向 C++ 和嵌入式 JavaScript 过渡。
C++ 是 Bloomberg 的外围编程语言之一。在毫秒级敏感的金融行业,代码要有可扩大、牢靠、和低提早的个性。因而,Bloomberg 用 C++ 构建了从底层库、组件,到性能最高的金融应用程序和交易系统的所有内容。
C++ 在 Bloomberg 的应用之广,体现在 Bloomberg 有上万个 C++ 我的项目、约 2000 个 C++ 库。它还成立了专门的的开发环境小组 BDE,负责为上千名 Bloomberg 开发者提供一组 C++ 软件库、开发工具、和方法论。
Bloomberg 对 C++ 社区的奉献也具备独到之处。尽管古代 C++ 提供了许多新性能,但随着语言变得越来越简单,在解决大型企业应用程序时,危险依然很高。凭着对 C++ 的历史教训积攒,以及在大规模利用上的实际体验,去年底,Bloomberg 传奇程序员、C++ 专家 John Lakos,与他们的其它三位资深 C++ 专家还合著了《Embracing Modern C++ safely》一书,分享并揭示大家 留神审慎利用古代 C++ 的一些个性。
ending
对于 Bloomberg,开源不是一个时尚的词汇,而是每一天的工作。
就在 2 个月前,Bloomberg 又开源了 Memray 这个 Python 的内存分析器,并迅速在 GitHub 上受到关注。
在 Bloomberg,有 3000 多名工程师应用 Python 编写代码和运行数据分析。Memray 这个我的项目旨在使开发人员可能剖析应用程序中的调配,以帮忙缩小内存应用、发现内存透露并辨认代码中导致低效调配的热点。
Memray 这个例子,再次证实了 Bloomberg 的开源优先理念。
因为领有彭博终端,成立后的 Bloomberg 仅用 20 年的工夫,就超过了有着 150 年历史的路透团体,成为寰球最大的金融信息服务提供商。
工夫流过四十年,彭博终端仍然是为 Bloomberg 帝国带来次要支出的常青树;而无论是老牌传媒团体或是新锐们如何想复制和分一杯羹,彭博终端始终是 Bloomberg 无奈被撼动的基石。