Skip to content

user_guide_cn

Yunfeng Tao edited this page Nov 3, 2017 · 2 revisions

示例代码使用说明

完整跑通本示例需要购买若干阿里云的服务。 建议先在阿里云账号里充值500元。 事先选定一个地区,该地区必须有函数计算服务。 以下所有服务都在该地区下开通。

数据路径

表格存储

费用:无。 表格存储支持按量付费,无需预付费用。 另外表格存储支持相当大的免费额度,正常使用本示例不会产生费用。

表格存储控制台上开通一个测试用实例,记下实例名以及公网访问地址内网访问地址

日志服务

费用:无。 日志服务同样有免费额度,正常使用本示例不会产生费用。

日志服务控制台上新建一个project和一个logstore,并租用一个shard。 记下projectlogstore的名字。

访问控制

费用:无。 访问控制不收费。

访问控制控制台上新建一个角色,授权给函数计算服务,授权策略里加入AliyunFCInvocationAccess, AliyunLogFullAccess, AliyunOTSReadOnlyAccess, AliyunOTSWriteOnlyAccess四个授权。 记下角色名

函数计算

费用:无。 函数服务同样有免费额度,正常使用本示例不会产生费用。

函数计算服务控制台上新建一个服务。 在服务详情页找到“高级配置”,填入日志服务projectlogstore,以及访问控制角色名。 记下服务名

根据服务入口的规则取得公网服务地址以及内网服务地址,并记下。

代码上传及试跑

  1. 下载代码并记下代码目录的绝对路径
  2. 构建编译环境。 我们建议使用docker容器来编译本示例,这样可以规避系统环境的不一致。 读者若对自己的系统比较熟悉也可以参考dockerfile/Dockerfile自行安装示例所依赖的程序。 后面的解说都以使用容器为前提。 自行安装程序的读者请自行裁剪、调整命令。
    1. 构建镜像。在dockerfile/目录下执行
      $ sudo docker build -t delivery .
      
    2. 进入容器。在任意目录执行
      $ sudo docker run -it -v $ROOT:/opt/demo delivery /bin/bash
      
      其中$ROOT需换成代码目录的绝对路径。
    3. 配置函数计算命令行工具。在容器内执行
      # /fcli
      
      其中endpoint填入函数计算公网服务地址
    4. 配置生产函数。以任意编辑器打开代码目录下src/common/cfg.py, 在OTS_ENDPOINT填入表格存储内网访问地址, 在OTS_INSTANCE填入表格存储实例名, 在FC_ENDPOINT填入函数计算内网服务地址, 在FC_SERVICE填入函数计算服务名
    5. 编译代码以及上传。在容器内执行
      # cd /opt/demo; scons
      
    6. 准备示例环境变量。在容器内执行
      # export OTS_ENDPOINT=$OTS_ENDPOINT
      # export OTS_INSTANCE=$OTS_INSTANCE
      # export ACCESS_KEY_ID=$ACCESS_KEY_ID
      # export ACCESS_KEY_SECRET=$ACCESS_KEY_SECRET
      
      将其中$OTS_ENDPOINT, $OTS_INSTANCE, $ACCESS_KEY_ID, $ACCESS_KEY_SECRET分别替换成表格存储公网访问地址表格存储实例名、阿里云账号的access-key idaccess-key secret
    7. 准备表格存储上的表。在容器内执行
      # /opt/demo/build/debug/tools/Prepare
      
  3. 表格存储控制台创建一个Logbook表的触发器,”使用已有函数计算,“服务”选择之前记录的函数计算服务名,“函数”选择transformer,“触发器名称”随便填。 勾选“授权表格存储发送事件通知的权限”(若需要)。
  4. 灌入测试数据。在容器中执行
    # TPS=1 /opt/demo/build/debug/tools/DataFaker
    

至此,数据路径构建完成。 读者可以从日志服务projectlogstore内查询到transformer, accumulatorflywireUpdater三个函数产生的日志, 也可以从表格存储的表监控上看到对Logbook, PackageInfo, FlywireBubble四张表的写入。

请保持DataFaker处在运行状态。

展示路径

API网关

费用:5分钱一天。 API网关每万次请求收6分钱。 示例里DataV每10秒访问一次。

API网关控制台里操作

  1. 新建一个分组。
  • 点击刚才新建的分组,记下二级域名
  1. 新建一个API。 “分组”选择刚才建立的分组, “API名称”填flywire, “安全认证”选择“无认证”, “类型”选择“私有”, “请求Path”填/flywire, “后端服务类型”选择“FunctionCompute”, “区域”选择事先决定的地区, “Service”填写函数计算服务名, “Function”填写flywire, “RoleArn”选择“获取授权”(可能需要多点几次,直到RoleArn被填入), “后端超时”填写5000, “返回ContentType”选择“JSON”, “返回结果示例”填[]
  2. 发布该API到线上。
  3. 左边找到“签名秘钥”,新建一组秘钥,记下KeySecret,并绑定到刚才发布的API上。

至此,飞线展示函数已发布到线上。 若进入“调试API”,可以看到类似如下的结果

200
Date: Fri, 03 Nov 2017 09:33:23 GMT
Content-Type: application/json; charset=UTF-8
Content-Length: 309
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,POST,PUT,DELETE,HEAD,OPTIONS,PATCH
Access-Control-Allow-Headers: X-Requested-With,X-Sequence,X-Ca-Key,X-Ca-Secret,X-Ca-Version,X-Ca-Timestamp,X-Ca-Nonce,X-Ca-API-Key,X-Ca-Stage,X-Ca-Client-DeviceId,X-Ca-Client-AppId,X-Ca-Signature,X-Ca-Signature-Headers,X-Ca-Signature-Method,X-Forwarded-For,X-Ca-Date,X-Ca-Request-Mode,Authorization,Content-Type,Accept,Accept-Ranges,Cache-Control,Range,Content-MD5
Access-Control-Max-Age: 172800
X-Ca-Request-Id: 5AAB55BD-1A00-444C-B230-D5717F4B18B6
Latency: 572

[{"to":"104.06,30.67","from":"104.06,30.67"},{"to":"121.29,31.13","from":"104.06,30.67"},{"to":"116.46,39.92","from":"121.29,31.13"},{"to":"121.29,31.13","from":"121.29,31.13"},{"to":"114.06,22.55","from":"121.29,31.13"},{"to":"116.46,39.92","from":"114.06,22.55"},{"to":"104.06,30.67","from":"114.06,22.55"}]

DataV

费用:500元。 必须企业版才支持表格存储和API网关作为数据源。 最低购买一个月,500元。

DataV控制台上操作

  1. 创建大屏
  2. “我的可视化”,“新建可视化”,使用空白模板“创建大屏”
  3. 上方“地图”,“基础平面地图”
  4. 右侧“样式”下,保留“底图层”,删除其余图层
  5. 气泡层
  6. 控制台“我的数据”,“添加数据” * “类型”选择TableStore * “公网地址”填入表格存储公网访问地址 * 填好其他项目后点击“测试连接”,通过
  7. 大屏“样式”标签下添加“呼吸气泡层”,并点击进行设置 * 点击“数据”标签 * “数据源类型”选择“TableStore” * “配置”选择刚才添加的TableStore数据源 * “操作”选择“getRange” * 配置框内填入
    {
        "table_name": "Bubble",
        "direction": "FORWARD",
        "columns": ["lat", "lng", "value", "type"],
        "range": {
            "limit": 60000,
            "start": {
                "DestinationCity": "A"
            },
            "end": {
                "DestinationCity": "z"
            }
        }
    }
    点击“查看数据响应结果”,可以看到类似如下的结果
    [
        {
            "lat": 39.92,
            "lng": 116.46,
            "type": 1,
            "value": 1857
        },
        {
            "lat": 30.67,
            "lng": 104.06,
            "type": 1,
            "value": 1846
        },
        {
            "lat": 31.13,
            "lng": 121.29,
            "type": 1,
            "value": 1848
        },
        {
            "lat": 22.55,
            "lng": 114.06,
            "type": 1,
            "value": 1873
        }
    ]
* 勾选“自动更新”,每1秒请求一次
  1. 飞线层
  2. 控制台“我的数据”,“添加数据” * “类型”选择阿里云API网关 * 填入API网关的二级域名KeySecret
  3. 大屏“样式”标签下添加“飞线层”,并点击进行设置 * 点击“数据”标签 * “数据源类型”选择“API网关” * “配置”选择刚才添加的API网关数据源 * “请求URL”填入/flywire * 点击“查看数据响应结果”,可以看到类似如下的结果
    [
        {
            "to": "104.06,30.67",
            "from": "116.46,39.92"
        },
        {
            "to": "104.06,30.67",
            "from": "104.06,30.67"
        }
    ]
* 勾选“自动更新”,每10秒请求一次

至此已完成大屏的配置,点击右上角预览可看到整体效果。

服务关闭

  1. 停止DataFaker
  2. 释放API网关下API、秘钥以及分组。
  3. 表格存储控制台上,解除Logbook表下的触发器。
  4. 表格存储控制台上,删除示例所用的实例以及其下所有的表。
  5. 函数计算控制台上,删除函数计算示例所用的服务以及其下所有的函数。
  6. 日志服务控制台上,删除示例所用的project与logstore。
  7. 访问控制控制台上,删除示例所用的授权。