漫画 | 一口气搞懂 Serverless !
简介: 第二届云原生编程挑战赛为热爱技术的年轻人提供一个挑战世界级技术问题的舞台,希望用技术为全社会创造更大价值。
作者 | 刘欣
呃,我可能是别人眼中所说的不用奋斗的一代。
大家喜欢听的什么多姿多彩的生活,我都经历过一些些。
我家里开的是连锁超市,主要集中在几个二线城市。
在我上小学的时候,各连锁店里开始装电脑,购置并安装了完整的收银设备。
我爸说要向那些大的连锁超市学习,提高生产效率。
那个时候我对那些灰色界面的收银软件很感兴趣,可惜爸妈不让我碰。
后来他们给我买了电脑,当时小镇上有电脑的人家不多,亲戚的小孩也常常跑到我这儿来玩电脑。
也正由于和电脑接触得早,上大学时就选了计算机专业。
我才刚上大学没几个星期,我爸就问我:
那个时候我连数据库什么的都还没有个概念,还在学反码补码,我告诉他:能,但现在不行,等我一两年。
我爸说不要紧。按照他的思维,我们不需要完全会写,只要明白怎么写出来就行,具体的实现我们可以交给软件公司做。
但搞明白软件是怎么造出来的很重要,因为这能够帮助我们在购置软件时站在供应商的角度思考,知己知彼,缩小我方信息差。
做买卖本质上玩的就是这一套。
2005年,我大三,学校要搞一次软件开发大赛,一共有三个命题,其实基本涵盖了所有场景,学生可以自由发挥。于是我就想到了超市的收银软件。
当时淘宝刚火起来,我想为啥不学习一下呢, 彻底革新我爸的商业模式,从线下转到线上!
整个网上商城, 浏览商品,购物车,下单,配送,但我们主要卖的是自己的货源。
当时用到的技术是 MySQL+ Java + JSP,然后自己买了服务器让服务跑起来。
在学校演示这套系统时,我拿了最高的成绩。
满心欢喜之余,我尝试把这套系统用到实际业务中,先从自家的总店开始试点。
没想到我爸给我泼了一盆冷水,他说我们这里的用户没有上网购物的习惯,送货问题没法解决。
我不服,非要尝试,果然理想与现实间存在着巨大的差异,我跌了一个大跟头。
虽然我搞了很多活动,发传单宣传商城,但真正上网购物的寥寥无几。
有些愿意尝鲜的,在网上买了东西,都是我亲自开车送货的。
毕业回家,我本想出国留学,但被我爸拽了回来, 我先跟着信息部的负责人老张学习,然后慢慢接班。
当时家里的每个超市都很大,都有一二十台 POS 机, 每个超市有一台服务器,一个数据库。
POS 机直接连到本超市的服务器上, 典型的客户端/服务器结构。
在那个时代,我估计大家都是这样的吧!
说实话,这样的软件架构表面看似挺稳的,只要机器不出问题,稳定供电,整套收银系统就没有问题。但实际上面临着许多缺陷:
1. 机器是真的会坏的,而且真的有坏过的案例
2. 每次有商品数据要更新都要通知每一家店的管理人员进行更新,出现纰漏是很正常的
3. 更新软件的时候,工程师需要到各个现场配置,更新4. 各个店面统一数据困难,每个月统计数据的时候需要统一汇总,不能随时随地得知当前各分店的数据5. 等等......
每一家店单独运作一套系统,这缺点要是列下去就没完没了了
我建议老张搞个中央机房,把软件集中化,每个门店都连接到统一的机房服务器,这样就把上面的问题给解决了:
后来的系统改造,经过投标、招标,我们选了本地一家颇有实力的公司来做。
我发挥了计算机专业的优势,帮助老张发现了不少问题。
看来我爸说的是对的,缩小信息差很重要。
中央机房运作了几年,效果不错, 不过自家的机房管理起来非常麻烦。
平时需要仔细规划、购买服务器,需要安装软件, 需要负责运维,我们还专门建立了一个团队来应对这些事情。
更可气的是黑客攻击无处不在
还有就是宕机、断网,一出事就是大事,影响所有的超市,我在半夜不知道被叫醒了多少次。
这还不算啥,有一年为了配合超市双11 期间促销,我让我爸一下子买了好多服务器,双11 过后,全部闲置了,把我爸气得够呛。
所以当阿里云出现的时候,我两眼放光,这简直就是为了解救我而设置的。
马上、立刻、全面上云。
操作系统会按照你的要求自动给你安装好。网络自然不用操心, 要多大带宽直接买就行。
安全问题也不用操心,如果出了问题,我就可以理直气壮地给我爸说:你看,这不是我的问题,是阿里云的问题,哈哈。
而且机器能很方便地扩容,CPU 核心从 4 核到 8 核,内存从 16G 到 64G......
从此以后,我们的机房中的服务器要下岗了。
转眼间,十多年过去了,伴随着超市 IT 系统的发展, 我也从一个用 JSP 写网上商城的少年成长为公司的技术领头人。
技术在不断变迁, 小程序兴起,我们也跟着做了小程序,用优惠信息吸引顾客扫码关注、注册,慢慢地积累了几百万粉丝。
每个月我们都在小程序给会员发送优惠券,可以在线下门店消费。
没想到这下可惨了,抢购优惠券的请求量很难准确估算,也就很难预估需要准备多少台虚拟机来应对。
我赶紧发动我所有的关系去解决这个问题,一个偶然的机会,我发现了一个新技术:函数计算, 即 Serverless。
平台会根据请求的数量来创建对应的函数实例来执行,无需人工干预,瞬间弹性扩容,应对流量爆发。
在中国,谁家的 Serverless 技术最强呢?
权威咨询机构 Forrester 发布的报告显示, 阿里云函数计算凭借在产品能力、安全性、战略愿景和市场规模等方面的优势脱颖而出,产品能力位列全球第一,这也是首次有中国云厂商进入 FaaS 领导者象限。
正好我们之前用的也是阿里云的虚拟机,就是它了!
除了函数计算外,由于业务需要查询会员数据库,我们希望它也能无缝弹性扩展,于是就使用了阿里云的表格存储。
上了这套 Serverless 的系统, 再也不用考虑服务器,虚拟机用多少 CPU,多少内存了,弹性十足!
函数部署也特别简单,完全不需要考虑底层的细节,一键更新函数就搞定。
当年的双十一度过得非常平稳,事后进行成本估算:以前买云服务器的时候,会按照可能遇到的最高并发量进行性能评估,由于 Serverless 是按量计费,用多少花多少,最终评估下来,当年在成交量增加 120%的情况下,成本比往年节省了 45%!研发交付效率提升也超过 30%!
从那以后,我爸对我刮目相看,看我的眼光都温柔了不少。
当然,除了技术之外我还是很关心业务的,贴合各种当代的新潮玩法。前不久给公司搭了个直播间,在平台上促销自己的商品。
后来想了想,自己玩没意思,我尝试联系了超市附近各行各业的商家,邀请他们加入我的直播间,一起唠嗑卖货。其实当时没多少店家搭理我,唯独一家洗浴中心的老板对这个感兴趣。不得不说,那洗浴中心的老板唠嗑能力极强,和我算是棋逢敌手。
第一次直播时,我们连锁超市和洗浴中心各家分店搞了一次联合优惠活动,但当晚直播竟然从卖货推销变成了讲相声。
直播我们每周举办一次,越来越多网友闻声而来,成交的订单数也越来越多。直播当晚的成交量甚至能抵上过去一周的总量。
直播过程中总有热心的网友主动连麦, 从技术上来说,就需要把多个网友的画面接入,和主播的画面合成一个新画面, 这叫“混流”。
由于连麦的观众不固定,我得考虑一定的并发和弹性,我们的相声直播一周才一次,不可能去储备大量服务器去应对业务的高峰期。
之前尝过 Serverless 的甜头,这次我立刻让研发部采用阿里云函数计算来处理混流的需求。
当并发量上升时,函数计算自动扩容多个执行环境来处理实时数据流, 当业务高峰期过去后,自动缩减资源,非常爽。
当然,Serverless 的应用不仅仅是这些,还有我们的“相声”视频需要做转码,优化推流,我也用了阿里的函数计算,节省了 60%以上的计算资源。
这两年,我是深刻地体验到了 Serverless 的好处:完全不用考虑服务器的事情,集中注意力实现自己的业务逻辑就好!
这么多年,一路走来,技术在不断变迁,今年我有幸被母校的计算机学院邀请去作分享,我给大家分享了这些年的技术历程
演讲期间,我提起了当年大学的那个编程比赛,那也是我编程生涯的起点。
正好,我知道阿里云举办了一个云原生的编程大赛,我也想把这项赛事分享给朋友们:这个大赛 2015 年就有了,那时候叫做中间件性能挑战赛,已经有 7 年历史了, 去年升级为云原生编程挑战赛,共吸引了超过 23000 支队伍,覆盖 10 余个国家和地区。
大赛为热爱技术的年轻人提供一个挑战世界级技术问题的舞台,希望用技术为全社会创造更大价值。
原文链接
本文为阿里云原创内容,未经允许不得转载。
漫画 | 一口气搞懂 Serverless !的更多相关文章
- 彻底搞懂Javascript的“==”
本文转载自:@manxisuo的<通过一张简单的图,让你彻底地.永久地搞懂JS的==运算>. 大家知道,==是JavaScript中比较复杂的一个运算符.它的运算规则奇怪,容让人犯错,从而 ...
- 完全搞懂傅里叶变换和小波(2)——三个中值定理<转载>
书接上文,本文章是该系列的第二篇,按照总纲中给出的框架,本节介绍三个中值定理,包括它们的证明及几何意义.这三个中值定理是高等数学中非常基础的部分,如果读者对于高数的内容已经非常了解,大可跳过此部分.当 ...
- 完全搞懂傅里叶变换和小波(1)——总纲<转载>
无论是学习信号处理,还是做图像.音视频处理方面的研究,你永远避不开的一个内容,就是傅里叶变换和小波.但是这两个东西其实并不容易弄懂,或者说其实是非常抽象和晦涩的! 完全搞懂傅里叶变换和小波,你至少需要 ...
- 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码
程序员都自视清高,觉得自己是创造者,经常鄙视不太懂技术的产品或者QA.可悲的是,程序员之间也相互鄙视,程序员的鄙视链流传甚广,作为一个Python程序员,自然最关心的是下面这幅图啦 我们项目组一值使用 ...
- 来一轮带注释的demo,彻底搞懂javascript中的replace函数
javascript这门语言一直就像一位带着面纱的美女,总是看不清,摸不透,一直专注服务器端,也从来没有特别重视过,直到最近几年,javascript越来越重要,越来越通用.最近和前端走的比较近,借此 ...
- java线程间通信:一个小Demo完全搞懂
版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...
- for语句,你真正搞懂了吗?
今天看书时,无意间看到了这个知识点,啥知识点?也许在各位大神看来,那是再简单不过的东西了. 说来惭愧.原来直到今天我才真正搞懂for语句. for语句的结构如下所示: for(语句A;语句B;语句C) ...
- 每个java初学者都应该搞懂的问题
对于这个系列里的问题,每个学JAVA的人都应该搞懂.当然,如果只是学JAVA玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列.内容均来自于CSDN的经典老贴. ...
- 一天搞懂深度学习-训练深度神经网络(DNN)的要点
前言 这是<一天搞懂深度学习>的第二部分 一.选择合适的损失函数 典型的损失函数有平方误差损失函数和交叉熵损失函数. 交叉熵损失函数: 选择不同的损失函数会有不同的训练效果 二.mini- ...
- 一文搞懂RAM、ROM、SDRAM、DRAM、DDR、flash等存储介质
一文搞懂RAM.ROM.SDRAM.DRAM.DDR.flash等存储介质 存储介质基本分类:ROM和RAM RAM:随机访问存储器(Random Access Memory),易失性.是与CPU直接 ...
随机推荐
- java的接口和抽象类区别
转自:深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在 ...
- [pyplot]在同一画面上绘制不同大小的多个图像
一.背景 做计算机应用数学作业时要求使用matplotlib库在同一张图上绘制两个图像,但是这两个图像的大小不同,百度之后发现大部分只是转载的同一篇博客,而且只能实现部分子图比例排版,并不能随意设置各 ...
- Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 开始之前 Composition API 可以说是Vue3的最大特点,那么为什么要推出Composition Api,解决了什么问题? 通 ...
- 启用Windows防火墙后,FTP传输非常慢
我们有一个计划任务,该任务使用Windows命令行FTP程序在两个Windows服务器之间传输大文件(〜130 MB).速度很慢(大约需要30分钟),有时会在传输完成之前终止.服务器是2003年(发送 ...
- KingbaseES 查看函数中最耗时的sql
测试 创建测试环境所需表及函数 create table test1(id int); INSERT INTO test1(id) VALUES (generate_series(1, 10000)) ...
- KingbaseES V8R6 sys_squeeze 使用
sys_squeeze介绍 sys_squeeze是KingbaseES的一个扩展插件,该组件将提供人工调用命令实现对表dead tuple的清理工作.该组件在清理表空间的过程中,不会全程加排他锁,能 ...
- CSP 2021 入门级
CSP 2021 入门级(DONE) 1.C 语言不支持面向对象. 2.计算机界的最高奖项"图灵奖"以英国的阿兰·艾伦·图灵命名,被称为"计算机界的诺贝尔奖". ...
- 提升系统管理:监控和可观察性在DevOps中的作用
在不断发展的DevOps世界中,深入了解系统行为.诊断问题和提高整体性能的能力是首要任务之一.监控和可观察性是促进这一过程的两个关键概念,为系统的健康和性能提供了宝贵的可见性.虽然这些术语经常可以互换 ...
- AtCoder Beginner Contest 181
ABC181 A - Heavy Rotation 题目传送门 代码(签到题) #include <cstdio> #define rr register using namespace ...
- JDK12的新特性:CompactNumberFormat
目录 简介 CompactNumberFormat详解 自定义CompactNumberFormat 解析CompactNumber 总结 JDK12的新特性:CompactNumberFormat ...