10.11杭州Clouder lab 十分钟搭建共享应用1:函数计算及表格存储操作说明

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
文件存储 NAS,50GB 3个月
简介: 10.11杭州Clouder lab 十分钟搭建共享应用操作说明

欢迎大家来到无服务器(Serverless)编程的阿里云clouder lab实验课参与学习。

这几年,共享经济越来越火,大到共享汽车、共享电动车,小到共享雨伞,共享充电宝。人人参与,人人收益是共享经济最大的特点,共享经济提高了社会资源的利用率,也大大方便了我们的生活。

也正式由于人人参与的特点,共享经济给底层的系统架构带来了非常大的挑战。以目前主流的共享单车为例,单车数量达到千万之巨,日订单数以十亿百亿计,访问流量的波峰波谷非常明显,而传统的架构方案很难满足这种业务增长迅速,访问波峰波谷明显的场景。而Severless的这种编程方式,无需提前准备任何服务器,根据用户的实际访问流量自动做弹性伸缩,最大程度的将云计算的优势发挥出来。

现在创业竞争异常激烈,在对业务创新周期要求越来越短,业务爆发越来越快的情况下,Severless编程模式很好的满足了业务的快速搭建、快速发展以及快速迭代的要求。下面,我们就通过对几款云产品的实际上手操作,来与大家分享如何通过云产品技术来解决共享经济系统架构的问题。

本次共享单车服务架构

fc_construction_output

  • 1 请求开锁/上锁
  • 2 获取天气信息
  • 3 写入日志系统
  • 4 记录行车位置
  • 5 触发写事件到函数计算
  • 6 短信报警推送
  • 7 获取行程路径

1. 获取云账户

  • 1.1 每位观众入场都会得到一个云账户
  • 1.2 获得账号ID和Accesskeys

2. 开通表格存储(TableStore)

2.1. 开通表格存储服务

t1.png

t2.png

2.2. 创建表格存储实例

  • 2.2.1 登陆表格存储控制台
  • 2.2.2 在控制台上创建实例,在华东2创建实例(注意:实例的整个区域Region级别)
  • 2.2.3 记录实例信息,主要包括实例名

t3.png

t4.png

t5.png

t6.png

3. 开通简单日志服务

3.1. 开通日志服务

3.2. 创建日志服务

  • 3.2.1 点击创建简单日志服务
    sls_create_service.png

4. 开通函数(FunctionCompute)服务

4.1. 新建函数计算service服务

fc_new_service

4.2. 服务配置

  • 4.2.1 服务名称中设定一个服务名
  • 4.2.2 角色创建方式中选择创建新的角色
  • 4.2.3 模板策略中添加AliyunLogFullAccess
  • 4.2.4 模板策略中添加AliyunOTSReadOnlyAccess
  • 4.2.5 角色名称自定义一个名字
    fc_create_service

4.3. 新建空白函数函数

  • 4.3.1 选择python,点击空白函数选择

fc_function_create

  • 4.3.2 触发器配置中选择不创建任何触发器,并进入下一步

4.4. 函数基础配置

  • 4.4.1 函数名使用unlock
  • 4.4.2 选择本地上传,上传指定的unlock.zip文件
  • 4.4.3 运行环境使用python2.7
  • 4.4.4 函数入口使用unlock.req_unlock
  • 4.4.5 超时时间为30
    fc_unlock_function_create_config

4.5. 函数调试输入参数编辑

  • 4.5.1 建好函数后,选择对应unlock,进入函数详情页
  • 4.5.2 将代码中的event对应的dict选择复制到剪切板,备用
  • 4.5.3 点击触发事件按钮
    image

4.6. unlock事件编辑

  • 4.6.1 将剪切板的内容粘贴到编辑框并点击确定

image

编辑event内容如下:

{
    "MobileNo" : "18612345678",
    "DeviceId" : 123456,
    "Latitude": 30.131852,
    "Logitude": 120.0776645
}

4.7. 函数调试调用测试

  • 4.7.1 点击执行按钮可以开始调试函数

image

4.8. 锁车函数配置

  • 4.8.1 如同unlock函数建立类似,新建lock函数
  • 4.8.2 函数名使用lock
  • 4.8.3 选择本地上传,上传指定的lock.zip文件
  • 4.8.4 运行环境使用python2.7
  • 4.8.5 函数入口使用lock.req_lock
  • 4.8.6 超时时间为30

image

  • 4.8.7 将图片中的fc-ots-sandbox替换成准备过程中新建的表格存储实例名
  • 4.8.8 点击保存

image

5. 搭建Demo

5.1 根据不同的环境下载不同的Demo

5.2 配置环境

1. 解压包,并进入解压目录
2. 编辑conf/app.conf, 修改如下字段:
- ws_userid                # 账户ID
- ws_accessid              # 账户的AccessId
- ws_accesskey             # 账户的Accesskey
- ws_tablestore_instance   # 表格存储的实例名称
- ws_fc_service            # 函数服务的Service
- ws_mobile_no             # 请填写自己的电话号码,后面报警的Demo演示会使用到这个字段

conf/app.conf具体内容如下:

appname = workshop

httpport = 8080

runmode = dev

ws_userid =

ws_accessid =

ws_accesskey =

ws_tablestore_instance =

ws_fc_service =

ws_mobile_no =

5.3 启动

5.3.1 Mac 启动方式
- 在终端中直接运行: ./workshop
- 或者直接双击run

5.3.2 Windows 启动方式
- 直接双击workshop exe

5.3.3 Linux 启动访问
- cd 到解压文件目录,直接运行: ./workshop

6. Demo演示

  • 6.1 访问APP
  • 6.2 模拟手机APP,进行解锁、骑行、上锁、查看历史记录等

7. 利用表格存储和函数服务实现报警

7.1 场景:通过配置短信报警,实时了解单车的状态。我们通过如下的简单的例子,监听单车承载的重量,如果超过我们的阀值,我们会通过短信网关,将报警信息发送到管理员处。

7.2 配置报警

  • 7.2.1 登录函数服务控制台
  • 7.2.2 进入之前创建的Service
  • 7.2.3 在FC的service下新建一个空白函数—不创建任何触发器,到函数配置页面,按照下图进行配置:

    • 函数名称:根据实际情况填写,示例为alarm
    • 运行环境:python2.7
    • 上传代码:将附件alert.zip的代码包下载下来,直接选择本地上传
    • 函数入口:alert.my_handler
  • 7.2.4 点击完成, 在服务界面就可以看到相关的函数
  • 7.2.5 测试alert的函数行为是否符合期望。
    a) 进入alarm,点击触发事件,选择自定义,将下述的json内容粘贴至编辑框,如下图,修改红框中的值,MobileNo为异常情况短信报警的手机号码,Weight为重量,超过120则会触发报警短信,点击保存。

fc_alarm

{
    "Records": [
        {
            "Info": {
                "Timestamp": 1506135175100900
            },
            "Type": "PutRow",
            "PrimaryKey": [
                {
                    "ColumnName": "Uid",
                    "Value": 10
                },
                {
                    "ColumnName": "Sid",
                    "Value": 1001
                },
                {
                    "ColumnName": "CreateTime",
                    "Value": 1506135175
                }
            ],
            "Columns": [
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "MobileNo",
                    "Value": "1234567"
                },
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "Weight",
                    "Value": 109
                },
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "Bid",
                    "Value": 3005
                },
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "BatteryLevel",
                    "Value": 0.55
                },
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "Distance",
                    "Value": 10.1
                }
            ]
        }
    ],
    "Version": "Sync-v1"
}

b) 由于TableStore Trigger触发函数服务的数据事件为CBOR格式,是一种类似于JSON的二进制格式,不可读,所以我们暂时使用JSON来做调试。将my_handler中的序列化修改为records = json.loads(event),点击执行,会看到测试成功,如果Weight大于120,配置好的手机号还将会收到一条短信。
2.jpg
c) 调试完成之后,将 records=json.loads(event) 删除或者注释掉,打开 records = cbor.loads(event) ,点击保存。

  • 7.2.6 进入表格存储控制台的实例下,会看到多张表,选择“geo”的表,点击开启Stream,设置过期时间为24,成功之后,点击使用触发器
  • 7.2.7 选择使用已有的函数计算

f1.png

  • 7.2.8 将之前创建的alert函数绑定
    f2.png
  • 7.2.9 重新运行Demo APP,选择一辆单车骑行,在骑行的过程中,APP会虚拟一个异常的重量,此时,大家能都到一条报警短信

8. 函数服务日志收集及分析

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
5月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
437 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
3月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
156 0
|
5月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
443 30
|
8月前
|
人工智能 运维 物联网
云大使 X 函数计算 FC 专属活动上线!享返佣,一键打造 AI 应用
如今,AI 技术已经成为推动业务创新和增长的重要力量。但对于许多企业和开发者来说,如何高效、便捷地部署和管理 AI 应用仍然是一个挑战。阿里云函数计算 FC 以其免运维的特点,大大降低了 AI 应用部署的复杂性。用户无需担心底层资源的管理和运维问题,可以专注于应用的创新和开发,并且用户可以通过一键部署功能,迅速将 AI 大模型部署到云端,实现快速上线和迭代。函数计算目前推出了多种规格的云资源优惠套餐,用户可以根据实际需求灵活选择。
|
5月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
307 12
|
5月前
|
人工智能 开发框架 运维
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
Serverless MCP 运行时业界首发,函数计算支持阿里云百炼 MCP 服务!阿里云百炼发布业界首个全生命周期 MCP 服务,无需用户管理资源、开发部署、工程运维等工作,5 分钟即可快速搭建一个连接 MCP 服务的 Agent(智能体)。作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力。
 Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
|
6月前
|
人工智能 运维 架构师
Serverless + AI 让应用开发更简单,加速应用智能化
Serverless + AI 让应用开发更简单,加速应用智能化
176 5
|
7月前
|
机器学习/深度学习 分布式计算 大数据
阿里云 EMR Serverless Spark 在微财机器学习场景下的应用
面对机器学习场景下的训练瓶颈,微财选择基于阿里云 EMR Serverless Spark 建立数据平台。通过 EMR Serverless Spark,微财突破了单机训练使用的数据规模瓶颈,大幅提升了训练效率,解决了存算分离架构下 Shuffle 稳定性和性能困扰,为智能风控等业务提供了强有力的技术支撑。
320 15
|
7月前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
128 0
|
7月前
|
存储 弹性计算 运维
海量日志接入 Elasticsearch Serverless 应用降本70%以上
本文将探讨在日志场景下,使用阿里云Elasticsearch Serverless相较于基于ECS自建Elasticsearch集群的成本与性能优势,展示如何通过Serverless架构实现高达 70%以上的成本节约。
393 0