广州地铁是一个优美的 Serverless Web 系统

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月免费额度15元,12个月
简介: 转载自 http://www.bullshitprogram.com/guangzhou-metro/

web 本质是一种流量,一种数据的流转。当前的 web 只是 Serverless 的一种特例(存活期很长的 Serverless )。如果从这个角度上看,其实广州地铁是一个很优美的 Serverless 系统。

高效率的web,本质是一种希望数据的流转尽可能快(TPS越高越好),这跟广州的地铁的设计理念是不谋而合的。我之前在知乎上说过,广州地铁本质上是一个排水系统 ,他设计的目的不是把你运送到目的地,而是希望你尽快离站。所以现在就算你进站后再出站,也要收费(以前有一段时间我记得不用)。

回到本题。 Serverless 是一种存活期相对较短的设计。比如广州地铁的存活期一般是日间,到了夜间设备要进行维护。我们把整个问题简单化,只取一号线来讲。假设平时只运行 3~50 辆车。那么低峰期应该只运行3辆车(降低成本),高峰期应该在确保安全的前提下,把运营效率尽可能提高(增加班次)。而到了晚上,众鸟归巢。运行实例为0。

Serverless 的优势

减少成本:每一个站台只需要少量的广州地铁人员,就能撑起一个站点。地铁工作人员无需关注底层系统(地铁)的运维。他们只需要在调度室吹空调,按按这个按按那个按钮就行。

快速创新:以前广州地铁需要人工买票什么的,现在支持银联卡,NFC,微信,支付宝计费。

按需使用、灵活弹性:业务可以根据配置的条件灵活调配资源,它会在夜间睡觉(运行实例为0),在低峰期低开(运行实例为3),在高峰期高开(运行实例50),在超高峰期限流,从而实现资源的最大化利用与运营成本的压缩。

广州地铁其实是一种实时数据流处理

从乘客角度,搭地铁本质上是一种数据库事务。
持久性(Durability)是妹子要么上车,要么不决定搭地铁;
一致性(Consistency)是指妹子上车下车会按照她的期望值,如果她下错站了,说明了她没有实现一致性;
隔离性(Isolation)是指妹子懒得理你;
持久性(Durability)是指妹子上车这一行为有地铁系统作证(上下车买票的凭证)。

而从地铁角度,整个广州地铁其实是实现了分布式事务的一套实时数据流处理系统。

广州地铁2020

前端常驻,后端动态高效伸缩容

我们会发现,那些固定设施都固定在那里的。基础设施是一种“前端”。而地铁列车是一种“后端”。

因为广州地铁事关人命,所以在伸缩容方面采取的策略是根据过往数据预测未来。而伸缩容目前是用人工方式解决。

这一点也是一种提醒。我们在设计 web 系统的时候通常分前后端。如果按照 Serverless 角度来重新思考这个问题。那么应该让前端资源常驻(前端只是一些简单的静态文件,占用服务器资源很少),而让后端动态伸缩。这样就不会影响用户体验。

流量切分

高峰期广州地铁的运营人员会设置各个栅栏。超高峰期会飞站或者拒绝乘客搭乘。从而实现数据的安全(乘客的安全)。

计量能力

根据乘客的搭乘距离计费。而站台距离本质上是时间。可以说使用时间越长,费用越高。

后端的单一职责

基本上广州地铁是偏向于人运,而不是货运。每次我要搬家的时候,搭广州地铁总是相对比较麻烦。因为一开始我也说了,广州地铁的设计理念就是一个排水系统。如果变成货运的话,运营效率会大幅度降低。

所以,我们在设计 Serverless 后端微服务的时候,也要记住这一点。尽可能让后端微服务的职责尽可能小,小到甚至不需要微服务发现系统。举个例子,xx网盘通过 Serverless 服务处理瞬时的视频转码请求。

结论

广州地铁其实是一个运营很高效的 Serverless 系统。它总结了过往数十年的人流量数据,高效运营的同时保证乘客的安全(数据安全)。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
12天前
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
|
17天前
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
76 2
|
18天前
|
开发框架 缓存 前端开发
基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
|
12天前
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
|
20天前
|
Java Serverless Docker
函数计算产品使用问题之使用Docker镜像部署的Web服务如何获取客户端的真实IP
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
20天前
|
域名解析 运维 Serverless
函数计算产品使用问题之设置最大实例数为1和最大并发数为20,当请求数量超过20时,系统会如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
1月前
|
算法 计算机视觉 C++
web 丨 nft 元宇宙链游项目系统开发模式逻辑详细(成熟源码)
一、什么是元宇宙? 元宇宙指的是通过虚拟增强的物理现实,呈现收敛性和物理持久性特征的,基于未来互联网,具有链接感知和共享特征的 3D 虚拟空间。 大概可以从时空性、真实性、独立性、连接性四个方面交叉描述元宇宙:
|
10天前
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
22 0
|
21天前
|
人工智能 关系型数据库 分布式数据库
PolarDB产品使用问题之如何将自有BI系统接入NL2BI的Web前端
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
2月前
|
监控 Python 缓存
缓存系统提升Web应用性能
【6月更文挑战第22天】
25 0

热门文章

最新文章

相关产品

  • 函数计算