查看 Pat 的
关于分布式系统的零散思考
pathelland.substack.com
许多工程项目都规模庞大且复杂。它们需要融入现有环境,以便与先于新的、庞大的、复杂事物的事物联系起来。人们通常会抱怨处理先前存在的事物所带来的挑战。很多时候,工程师们并没有意识到他们的项目(以及他们的薪水)的存在仅仅是因为先前存在的复杂系统对新工作施加了约束。
本专栏着眼于旧金山日常生活中非常成熟的城市重建项目,并将它们与构建软件中固有的挑战进行比较。
修建地铁的最佳地点是在内布拉斯加州开阔的玉米地里。
那里非常平坦。您可以有条不紊地以一致的方式间隔地铁站。那里没有碍事的讨厌的历史古迹。没有大教堂,也没有市政中心。
不幸的是,玉米地里没有乘客,也没有在那里修建地铁的经济理由。这就导致了一个先有鸡还是先有蛋的问题。你不能轻易地在拥挤的地方建设基础设施,你也负担不起在不拥挤的地方建设基础设施。
我喜欢说有两种软件公司:一种是从一开始就构建可扩展基础设施的公司,另一种是正在运营的公司。
这意味着成功的公司将投资于发展其基础设施,以增强可扩展性。这很困难。
城市规划非常有趣。这里有城市改造的融资问题,以及土地利用和基础设施的变迁。一般来说,会做出让旧住户离开的决定,并以所谓的公平市场价值买断他们。该地区规划了重要的便利设施,如公园、交通枢纽等。有了现在空置的土地和承诺的豪华便利设施,开发商可以购买地块来开发办公楼、酒店和住宅的摩天大楼。摩天大楼下的房产价格支付了最初的土地购买和便利设施的费用。
我最近在旧金山金融区的渡轮大厦旁的金门通道住了五年。该地区在 1970 年代进行了重建。它涉及到拆除一个破旧的老旧农产品市场,该市场被搬到了以南约五英里的地方。五座办公楼摩天大楼、一个零售购物中心、数百套公寓、多个公园和一个凯悦酒店现在占据了这个空间。
我的工作正位于 Transbay 重建项目的中心,也在金融区。市场街以南的这一区域内一到两层的破旧轻工业建筑被宣布为危房,土地所有权转移到市政府。Transbay 自 2000 年左右以来一直是一个正在进行的项目,似乎已完成一半以上。当我上下班时,我看到了全新的塔楼、一个令人惊叹的交通枢纽和公园,以及起重机和建筑工地。
其他重建项目包括芳草地地区(现在包括莫斯康展览中心)和 Mission Bay 地区(现在包括新的篮球场馆 Chase Center)。
许多这些大型项目都产生了各种成本和挑战。在 1950 年代和 1960 年代,Fillmore 重建项目针对的是一个主要是黑人居住区的小镇。一个 36 个街区的区域被夷为平地,其中包括住房、一种独特的生活方式和一个世界著名的爵士乐社区。大多数以前的居民都负担不起返回的费用。
在许多情况下,这些耗时数十年的大型重建项目为城市的某些地区带来了新的活力,但有时我们无法预见我们将失去什么。
1847 年,旧金山还是一个小镇,人口约 600 人,以前被称为 Yerba Buena,就在前一年加入了美国。加利福尼亚州的黄金直到第二年才被发现,这将使旧金山转变为一个主要城市。
几年前,在 1835 年,William Richardson 在 Yerba Buena 定居,并为向南北方向扩展的定居点规划了街道。这个地区被称为朴茨茅斯广场,现在是中国城的一部分。到 1847 年,许多建筑物都沿着这个南北方向的网格排列。
在该镇的南部是 Mission Dolores 教堂。Mission 街从教堂向东北方向延伸 4 英里半到旧金山湾。我在 Mission 街上的一栋大楼里工作。
1847 年,旧金山新任美国军事市长委托 Jasper O'Farrell 对旧金山进行土地测量。他纠正了城市北部的一些地界和街道走向。他决定将城市划分为两个网格:北部网格南北走向和东西走向,南部网格东北-西南走向和东南-西北走向。现有的城市北部地区有一些数百个木制结构。街道宽度从 45 英尺到 69 英尺不等,有些稍大一些。在几乎没有人居住的城市南部,奥法雷尔决定将街道拓宽。Mission 街被规划为 82½ 英尺宽。
为了分隔网格的这两个部分,奥法雷尔创建了一条 120 英尺宽的大型 Market 街,与南部 Mission 街平行。对于一个人口只有 600 人的小镇来说,这是一条非常浪费土地的街道。请记住,当时的交通工具是马和马车。为什么要建这么宽的街道呢?
镇上的当地人勃然大怒。那片土地很值钱,却被他们白白拿走了。很快,一群暴徒聚集起来,决定绞死浪费他们土地的 Jasper O'Farrell。镇上的人们出发去抓他。幸运的是,一位朋友给奥法雷尔通风报信,他骑马去了北滩,乘船去了北湾,并在索诺玛县定居,于 1875 年去世。1
在 1950 年代,人们制定了 BART(旧金山湾区捷运系统)的计划。这条通勤列车将高速运行,通过旧金山湾下的隧道连接旧金山和东湾,包括奥克兰、伯克利等。令所有人惊讶的是,1962 年增加税收的投票勉强通过,BART 获得了资金。
Transbay 隧道在 Market 街与旧金山相连,计划包括一条 Market 街下约两英里的隧道。Market 街地铁与旧金山轻轨 Muni Metro 线路共用,该线路在整个旧金山运行列车。Muni 仅在旧金山境内运行。
Market 街的建设始于 1967 年,持续了近 10 年。使用明挖回填法大大降低了建设成本。明挖回填包括挖掘一条巨大的壕沟,并在露天建造车站和轨道。完工后,地下工程被泥土覆盖。Market 街地铁不太可能以侵入性较小的方式获得资金。不幸的是,在 10 年的时间里,Market 街一片混乱,许多企业倒闭了。
尽管如此,Market 街 120 英尺的宽度为尝试使用明挖回填法施工提供了可能性。如果没有如此宽敞的宽度,我们今天可能就不会有 BART。
当我有机会坐在飞机靠窗的座位上时,在起飞和降落期间,我总是会看高速公路上的立交桥。我经常看到道路在跨越高速公路时有一个轻微的弯曲。这让我微笑,因为我认出了高速公路拓宽的遗迹。
很多时候,我住在高速公路拓宽工程附近或通勤经过高速公路拓宽工程。每次,这个过程似乎都很荒谬。交叉道路一侧的建筑物被拆除。然后,在旧桥旁边并排建造新的地基和桥梁。一般来说,立交桥上的交通不会中断,更重要的是,高速公路上的交通也不会中断。有时,为了缓解极度的痛苦,高速公路不得不在一个漫长的节假日周末关闭。
当施工完成时,美丽的新立交桥将建在旧立交桥旁边。新立交桥连接到街道一侧,就像旧立交桥一样。它只是在跨越高速公路时向一侧倾斜,以便在拆除旧立交桥之前允许两条立交桥。
改造复杂系统的一个特别具有挑战性的部分是在系统被改造的同时保持其运行。多年前,任何新版本的软件都必须装在盒子里发送,安装后,它会在磁盘上存储的数据上运行得更好。到 1980 年代初,我开始担心广域网分布式事务,以及如何兼容地发展协议。这通常需要计划三次消息传递更改,每次发布间隔六个月。
现在,每个人都支持基于云的解决方案。一切都在 24/7 全天候运行。这对客户来说是一个巨大的价值,并对支持系统和应用程序的工程师提出了额外的约束。就像拓宽高速公路的人员需要保持高速公路 24/7 全天候运行一样,我们需要为系统的演进以及从这里到那里所需的详细步骤做好计划。
在我 40 多年的职业生涯中,我有近 35 年是在拥有数千名工程师的公司工作。拥有如此多的工程师意味着完成项目既更容易也更困难。拥有大量资源,您就有能力组建一支庞大的团队。然而,虽然您拥有大量资源的好处,但仍有大量的相互依赖性和工程细微差别需要考虑。更重要的是,还有庞大代码库的遗留问题。遗留问题通常带来的好处多于坏处。
城市通常围绕主要的交通方式而设计。我很荣幸参观了老耶路撒冷,这座城市在建造时就考虑到了驴作为交通工具。城市旧城区的大多数街道可能只有 20-25 英尺宽。汽车无法在这些街道上行驶。当然,拓宽它们而不破坏旁边的建筑物是不可能的。
应用程序从通信和数据或数据库期望,以及应用程序结构期望开始。就像城市和交通工具不断发展一样,计算基础设施也在不断发展。
从一张白纸开始似乎更令人向往。约束更少。你的软件项目也更有可能无法扎根,对任何人都没有意义。最好的希望是根据经济状况对基础设施进行适当的投资,从而构建一些东西。在这样做的时候,尽量要有远见,留下特别宽阔的道路,也许有 120 英尺宽,即使它们现在不太重要。只要确保镇上的人们不会变成一群寻找复仇的暴徒!
1. Prendergast, T. (1942). Forgotten pioneers. San Francisco: Books for Libraries Press, p.71.
当今的最终一致性:局限性、扩展和超越
在不保证安全性的情况下,如何基于最终一致的基础设施构建应用程序?
Peter Bailis 和 Ali Ghodsi
https://queue.org.cn/detail.cfm?id=2462076
公寓和云
环境中的约束赋予服务力量。
Pat Helland
https://queue.org.cn/detail.cfm?id=2398392
调整系统大小
Kode Vicious
https://queue.org.cn/detail.cfm?id=1413256
Pat Helland 自 1978 年以来一直从事事务系统、数据库、应用程序平台、分布式系统、容错系统和消息传递系统的实施工作。为了消遣,他偶尔会撰写技术论文。他目前在 Salesforce 工作。
版权 © 2020 由所有者/作者持有。出版权已许可给 。
最初发表于 Queue 第 18 卷,第 1 期—
在 数字图书馆 中评论本文
Brendan Burns, Brian Grant, David Oppenheimer, Eric Brewer, John Wilkes - Borg、Omega 和 Kubernetes
尽管人们对软件容器的广泛兴趣是一个相对较新的现象,但在 Google,我们管理大规模 Linux 容器已超过十年,并且在此期间构建了三个不同的容器管理系统。每个系统都深受其前身的影响,即使它们的开发原因不同。本文介绍了我们从开发和运营它们中吸取的教训。
Rishiyur S. Nikhil - 硬件系统设计中的抽象
软件工程的历史是不断发展抽象机制以应对日益增长的复杂性的历史。然而,硬件设计并没有那么先进。例如,两种最常用的 HDL 可以追溯到 1980 年代。标准的更新落后于现代编程语言的结构抽象,例如类型、封装和参数化。它们的行为语义甚至更加落后。它们是根据在单处理器冯·诺依曼机器上运行的事件驱动模拟器来指定的。
John R. Mashey - 通往 64 位的漫长道路
莎士比亚的话语常常涵盖超出他最狂野的梦想之外的情况。即使人们提前计划,辛勤工作和麻烦也伴随着重大的计算转型。为了校准“今天的明日遗产”,我们应该研究“昨天的明日遗产”。明天的许多软件仍将受几十年前的决策驱动。过去的决策会产生意想不到的副作用,这些副作用会持续数十年,并且可能难以撤消。