Web系统架构:巴黎城市化所带来的启示

信息技术(IT)正带领我们大踏步地奔向更快更好的未来,事实证明,我们需要了解所有关于高性能系统架构的问题,都可以从巴黎城市化的历史中找到答案。

作为开发者或者建筑师,我们经常不得不将网络或系统架构中好的想法呈现给“决策者”们。20年来,我个人一直采用智慧城市作类比。为了庆祝 Web 的 25岁生日,我准备将 Web 和巴黎(有着很好规划的城市)作一番类比。

Paris image via Shutterstock)

基于 Fielding 的论点,我们从如下方面来比较 Web 和巴黎,涉及限制条件、继承的特征、架构设计的选择并最终评估这些选择是否满足目标。所有这些集中在巴黎的转变时期:1853—1869年,Haussmann 在这一时期担任巴黎的设计师。Haussmann采用的方法值得很多大公司的信息系统学习,也就是由 Fowler 和 Newman 所提出的微服务(Microservice)。

我们在即将到来的 JAX 伦敦会议上会涵盖七个方面的内容,这篇文章里是最开始的两个部分。我们的听众会是这样一些人,一些软件专家,他们对于用城市建筑学阐述 HTTP REST 和持续交付的设计之美很感兴趣;或者是希望了解 Web 成功的任何人,他们可以了解到万维网的关键术语和概念。

Haussmann 是何许人也,他在巴黎面临怎样的挑战?

1853年,Eugene Haussmann 被拿破仑三世委以公职,以加速巴黎这座城市的现代化。他负责巴黎的城市建筑长达16年之久。当他走马上任之时,巴黎的用户体验(UX)逊毙了,放在今天的 Google Play 或者 App Store 上,估计还不到 1 颗星。数据包丢失率很高(每 5 年就有 1 万人死于霍乱中风),服务器(住宅)超载(人均不到1平米,按美国习惯转换,一层联排别墅的地板上里要塞100人),数据中心只能间歇工作:没有动力(煤气、水),没有制冷(下水道)。没有高速缓存(地下室),没有代理(门房),没有流媒体(地铁)……简直是噩梦般的体验。

外观更烂,昏暗的街道上充斥着网络犯罪(你懂的),缓慢而狭窄的接入线(街道),没有主干网络(林荫大道),没有轮询流量的共享协议(人行道)或者流媒体(地铁),也没有垃圾收集(明白了)。

更糟的是,当用户从一个网页转向另一网页时,由于线路上拥挤和没有协商机制,传输线上的脉冲(TLP,Transmission Line Pulse)是相当可怕的。由于没有给服务器(过高的建筑造成在狭窄的街道上,见不到阳光和空气流通差)持续打补丁,他们会携带病毒回家。

最重要的是,服务完全被打乱,经常被重新设计(1789—1815年的大革命,和1830—1848的三个时期)却没有考虑到向前的兼容性。虽然从长期看,用户可以从这些改变中受益,但他们当然不喜欢长时间的去熟悉新的用户界面(UI,user interface),更不要说电话投诉不存在的服务台(贫民和妇女的投票权)。好吧,事实上,这些有限的接入线很容易造成 DDOS 攻击(路障),商务人士(拿破仑三世)也不喜欢这样。

Haussmann 最终采用设计风格中的某些元素,是被他老板(拿破仑三世,拿破仑的侄子)强加的。我这里当然不是为了美化拿破仑,毕竟他给欧洲带来那么多年的战乱,但有一个值得肯定的是,他引入了流程的概念:即民法典。民法典中,详细规范了人们相互交往的方式,哪些可以做、哪些不可以做,这都源于法国大革命时期的热烈争论。它的问世等同于 CERN 在 1990 年最初发表的 HTTP 论文一样。民法典规范了公民的生活方式,如同 HTTP 协议规范了我们在 Web 上的传输方式。

民法典的基本原则在于厘清关系:它定义了什么是公民(客户端),再按照利益和相互影响定义出公司、非赢利组织和政府机构(.com、.org、.gov 后缀名的服务器)。任何利益的牵涉都是不合法的(滥用社会资产),非常类似 HTTP 中客户端服务器和无状态的设计。一台服务器不能区别对待两个客户端(平等),或者两个服务器不平等(这和目前关于网络中立的争论有关):

客户端 服务器:网络化架构中最基本的概念:系统被认为是一系列的服务,这些服务来自于各种服务器(商店、基础公共设施、社团),并提供给客户端(市民)。一旦角色和他们之间可能的交互方式被固定下来,每个方面可以独立发展:一个市民可以从学生成长为店主,一个杂货店可以成为果汁供应商。不会因为在同一栋建筑里面,其中的住户就必须在里面的商店买肉,店主也可自行定价商品。关注点分离的原则允许市民自由选择,而企业有服务公民(食物、娱乐、社会关系或者文化)的精神(能够创造、投资和改变)。

无状态:即没有会话的状态,来自客户端的请求必须包含服务器处理所需要的所有信息。不管市民是谁,服务器都必须为他服务,而且不能要求他比其他市民提供更多的信息。客户端和服务器的类型不能搞混:所有的市民必须平等的对待,同样的请求接受同样的服务。这种建筑物之间、人与公司之间的关系划分成为现在市民生活的基础(通常如此)。

巴黎的 DNS 规划

Haussmann 考虑的另一个特征是巴黎的寻址方式(1805年进行了规定),类似在 HTTP 请求中用到的 DNS 机制。

  • 塞纳河作为主干,确定了每个街道的起点(我们的根节点)
  • 每个非赢利组织(.org)、政府机构(.gov)和公司(.com)可以在内部定义自己的规则

拿破仑三世的自负建立在民法典上(HTTP),他不能容忍自己首都的文明程度不如伦敦和新兴的纽约。

就性能而言,他的网络化架构需要完成如下工作:

  • 网络(街道)性能:吞吐量(快速的行人和车辆)、开销少(市民不需要警察保护他过马路)、带宽(宽阔的街道)。
  • 用户可感知的性能:时延(能够快速到达建筑的一层)和完成度(把事情搞定)。
  • 网络的效率:最高效的做法是避免街道被过度使用。例如可以在家办公(差异化的数据)、设立新闻和音乐亭,避免只能去歌剧院听音乐,只能从法国世界报总部获取新闻(缓存)。

至于 Fielding,他会按照如下标准选择建筑风格:

  1. 可扩展:让巴黎可以变得更大。
  2. 简单:不需要用户手册,市民、公务员和游客很容易理解城市运作的方式。
  3. 可更改:可以随着变化,在将来不断演进。
  4. 可扩充:增加新社区而不影响系统。
  5. 可定制:针对某一个建筑专门处理,而不影响其它建筑。
  6. 可配置:建成后(后期部署)很容易修改一座建筑(组件)。
  7. 可重用:一栋建筑既可以作为会计事务所,也可以作为奶油厂。
  8. 可见性:基于系统提供的安全机制和审核机制,两个组件间的交互是可见的(人们在大街上可以互相看到)。
  9. 可移植:在不同的材料和天气条件下,设计在其它区域也可正常工作。
  10. 可靠性:容错能力 (市供的水、煤气和空气循环,不会被单一事件影响)。

深入了解这些挑战,Haussmann 打算利用他的建筑设计来加以解决。他基于评估标准,考量每一个属性。主要的目标:

  • 低准入门槛:Haussmann 不强制市民们住在巴黎,而是希望提供尽可能好的用户体验以增加满意度。市民可以方便地找到地址,建筑师可以发布新的参考设计就可以很快创建一个初始系统。
  • 可扩展性:低准入门槛帮助创建了 Haussmann 所希望看到的现代化社区。从长期而言,巴黎需要准备改变风格以适应新的技术。
  • 分布化的超媒体:巴黎需要给市民提供不同的生活体验,从音乐(歌剧院和报刊亭)、电影(事实上是剧院)、电子商务(来自巴黎大堂的事物)和健康(公园)。这些体验相当丰富,会吸引大量的市民,所以要把它们分散在城市各地。
  • 无政府的可扩展性:一旦新社区出现第一栋楼,城市会沿着一个方向或者另一方向成长到相当大的规模,并不需要集中管理(无政府)来保证系统的完整性。只要每栋建筑都有自己的身份证明,并可以监控通过防火墙进入的流量(双开门、看门人)。
  • 独立部署:每一个服务器(建筑)或者应用(社区)可以独立部署,不需要影响系统。原有系统(老社区不应该改变,例如 Notre Dame de Paris)应该很容易被封装起来,并作为整个系统中的一部分参与互动。

打赏支持我翻译更多好文章,谢谢!

打赏译者

打赏支持我翻译更多好文章,谢谢!

任选一种支付方式

1 4 收藏 评论

关于作者:至秦

Linux,Networking 个人主页 · 我的文章 · 53 ·  

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部