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

本文涉及的产品
简介: 转载自 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 系统。它总结了过往数十年的人流量数据,高效运营的同时保证乘客的安全(数据安全)。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
15天前
|
传感器 小程序 搜索推荐
(源码)java开发的一套(智慧校园系统源码、电子班牌、原生小程序开发)多端展示:web端、saas端、家长端、教师端
通过电子班牌设备和智慧校园数据平台的统一管理,在电子班牌上,班牌展示、学生上课刷卡考勤、考勤状况汇总展示,课表展示,考场管理,请假管理,成绩查询,考试优秀标兵展示、校园通知展示,班级文化各片展示等多种化展示。
39 0
(源码)java开发的一套(智慧校园系统源码、电子班牌、原生小程序开发)多端展示:web端、saas端、家长端、教师端
|
13天前
|
前端开发 JavaScript Java
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
计算机Java项目|基于Web的足球青训俱乐部管理后台系统的设计与开发
|
17天前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之如何实现一键迁移Web框架
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
16天前
|
数据库 数据安全/隐私保护 Python
Web实战丨基于Django与HTML的新闻发布系统(二)
Web实战丨基于Django与HTML的新闻发布系统(二)
19 1
|
16天前
|
存储 数据库 数据安全/隐私保护
Web实战丨基于Django与HTML的新闻发布系统
Web实战丨基于Django与HTML的新闻发布系统
17 1
|
16天前
|
存储 搜索推荐 数据库
Web实战丨基于Django与HTML的用户登录验证系统
Web实战丨基于Django与HTML的用户登录验证系统
23 1
|
17天前
|
Java Serverless 应用服务中间件
Serverless 应用引擎产品使用合集之Web函数启动的Spring Boot项目可以通过什么方式配置Nginx
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
30天前
|
应用服务中间件 nginx
蓝易云 - 编写Dockerfile制作Web应用系统nginx镜像
这是一个基本的例子,你可能需要根据自己的应用进行调整。例如,你可能需要添加更多的配置,或者使用不同的Nginx版本。
45 2
|
16天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的高校疫情防控web系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的高校疫情防控web系统附带文章源码部署视频讲解等
14 0
|
1天前
|
运维 前端开发 Serverless
函数计算产品使用问题之wordpress应用模板在什么地方
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

热门文章

最新文章

相关产品

  • 函数计算