电子围栏总体的方案架构就是,先将数据上传到 DIS ,再入库到 CloudTable 的时序数据库,用来给 Web页面展示车辆轨迹;同时也会给到 CS 实时计算,判断车辆是否在围栏里面,如果在则将告警信息写入到 DIS 另一个通道,用来给 Web 页面展示告警内容
前期准备
- 配置Java环境。
- 收集需要用到的认证等信息,主要包含 AK/SK/region/projectId。
- 由于华北-北京一区的cloudtable集群已售罄(也没有免费集群了),华东-上海二的DIS接入通道不能配置源数据,所以最后将地区定在了华南-广州区。
操作流程中的小细节
- 购买集群
购买集群时要注意勾选高级特性中 Open TSDB这个选项,后面配置数据源时需要用到。
注意记下此时使用的VPC、子网、安全组,后面创建其它项目时一定要要保持统一。
待集群创建完成后,点击集群名称,记下OpenTSDB 链接地址后面的 URL后面会用到。
集群创建时间略长,这个时候可以同时进行后面步骤的操作。 - 创建DIS输入通道
通道名称可以自定义,但是推荐使用“input”,这样就不用在后面创建实时数据流时更改SQL语句了。
源数据类型选择JSON,将删除换行后的内容复制到左边,点击转换源数据样例,OK后,就可以立即购买了。 - 创建CloudTable 转储
点击上一步创建的通道名称,再点击转储管理,添加转储日志。
配置参数,集群选择我们在第一步创建的集群,还要配置3个Items。
如果配置有错误,可能会出现以下提示
如果创建转储任务成功了,别高兴太早,并不一定代表你的配置就是全部对的。。。。也有可能有错误,不过先不管,等后面出问题再说吧。
- 创建输出通道
输出通道与输入通道过程相同,只需把通道名称修改为output,也可以自定义,源数据类型设置为BLOS,点击提交即可。 - 创建实时流作业
编辑框的SQL语句一定要删除多余换行。
若是DIS通道名称没有使用input和output,还需要将语句中的通道名称改为实际名称。
此外,由于当前区域是在华南-广州区,而原实验位于华北-北京一区,所以要将语句中的region,cn-north-1改为cn-south-1(一共有两处)。
若是仍提示有错误,建议重新检查语句是否有多余换行。 - 启动数据发送工具
配置dis.properties参数,ak/sk就是在我的凭证中获取的密钥的相关内容,projectID是华南-广州的项目ID值。
注意将cn-north-1改为cn-south-1。 - 进入 bin 目录,双击 start_producer.bat 即可,当界面能显示上传内容即
表示成功,程序会每 5s 发送一条数据。 - 接下来查看前面创建的转储的转储日志。如果状态是已完成,OK,下一步。
- 如果状态显示已失败,点击查看详情,出现下面的错误代码,这是因为前面转储任务的Items配置错了,返回去仔细查看,修改。
- 创建web服务器
打开镜像页面:https://market.huaweicloud.com/contents/99007d96-f449-4b6e-a5be-44cbc2910a8d 点击自定义云主机,购买弹性云服务器,配置参数。
然而在华南-广州区,并没有找到可用于UI界面展示的市场镜像,尝试用其他镜像试了一下,然而最后的网页还是打不开,,,,
所以最后,我做到这一步就做不下去了。。。。
就到这里吧。
小结
- 前面准备了那么多,最后还是没有做出来。我觉得我现在在操作过程中,不管碰到什么问题,都还是能保持冷静的,微笑。。。
- 在发送数据时,显示DIS输入通道的转储,一直显示cloudtable服务不稳定导致转储失败。
我首先是检查了cloudtable集群,甚至是重新建了集群,然而还是显示同样的错误。
没办法之后,联系到了华为云的技术售后,帮我排查了好久。
最开始给我的答复是,DIS接入通道的源数据中上传了一段中文字符,也就是“江苏省连云港市…”这一段,他们的cloudtable目前暂不支持中文,显然是不对的。
最后两位工程师查看了操作步骤后,找到了我在建转储任务时,其中有个Item的配置输错了。。。。
虽然转储任务可以成功建立,但上传的数据不能与转储的配置对应,所以转储不成功。 - 目前来说,我还不能做出最终的效果,希望能有同学完成实验,并可以分享一下下。