如何在阿里云上快速实现企业实例一键迁移

简介: 五张图,看懂企业实例迁移

一、背景

阿里云IoT物联网平台2020年初上线企业实例,企业实例在功能、计费、稳定性方面相比原有公共实例有不小优势(企业实例相关内容请参考实例概述但如何从公共实例迁移到企业实例,并不是一个简单的事情。实例的业务场景中涉及用户服务、阿里云IoT物联网平台服务、设备等,业务链路长、场景复杂。


二、业务介绍&挑战

图一.jpg

图1

如上图1为一个典型的IoT业务场景。

  • 共享设备联网接入阿里云IoT物联网平台,然后上报数据。
  • 用户应用通过阿里云IoT物联网平台的消息通信,接收设备上报的数据、状态等。
  • 消费者,通过用户提供的APP扫码认证授权后,可以查看共享设备状态,然后控制共享设备提供服务。
  • APP连接用户应用,鉴权后开始计费。用户应用调用阿里云IoT物联网平台提供的设备控制服务,控制设备开始工作。
  • 设备运行过程中,上报设备状态。服务完成后上报状态,通过数据流同步给用户应用,用户推送PUSH给APP,提醒消费者,服务结束提醒计费等信息。


业务场景中涉及用户服务、阿里云IoT物联网平台服务、设备,业务链路长、场景复杂,给实例迁移工具设计带来了很大的挑战。

设备无法修改,需要降低用户改造成本。IoT设备可能部署在地下、安装在商场中或者散落在城市不同角落(如公共自行车),同时设备数量会很多,手动升级设备几乎不可能。同时OTA涉及用户设备二次改造开发, 设备型号碎片化、SDK版本碎片化存量设备改造成本高, OTA升级周期会较长。

涉及功能和业务方多,影响面广对于稳定性要求高。IoT物联网平台涉及控制台功能如产品管理、设备管理、拓扑管理、分组管理、标签、检索等众多功能。

业务数据类型多且异构,数据需要按照业务维度迁移,无法采用工具统一进行。阿里云IoT物联网平台涉及数据如产品、设备、脚本、拓扑等多张表,同时数据存储在RDS、DRDS、OTS、TSDB云产品中。业务模型上按照产品维度迁移产品、设备涉及的数据,不能采用工具如DTS统一进行。

业务链路长设备流量和用户控制流量路由需一致,业务上需要无损,用户改造方案成本高。已经迁移到企业实例的设备,通过长连接连接到企业实例中,用户可能不知道控制设备时会控制失败。


三、实例迁移设计

企业实例迁移面临设备无法修改、涉及功能和业务方多、业务数据类型多且异构、业务链路长设备流量和用户控制流量路由需一致四个方面的挑战,对我们的产品和技术设计方案从用户使用门槛、稳定性提出了一定的要求。

用户迁移过程可灰度、可监控、可回滚。用户设备体量大从几千到几十万都有,且设备都是通过长连接连接到平台,迁移的时间必然较长。同时用户设备可能涉及到民生如公共交通领域,升级需要凌晨按区域先灰度然后升级。升级的过程中用户需要能够感知和监控升级是否成功,作为服务提供者我们自己也需要能监控服务成功信息避免故障的发生。方案实现中采用状态机结合异步任务方式处理,做到用户侧状态可控,数据迁移执行稳定。

设备不做改造,用户服务端少改造。基于开发成本考量,方案设计中需要兼容设备能自动路由到企业实例,避免设备改造。用户服务端少改造,保障和设备路由一致性避免业务有损。

四、实例迁移可控

用户迁移企业实例,涉及用户服务端开发不是简单的开发一下切下流量,需要业务评估、改造、发布、切流同时需要和我们提供的实例迁移无缝的结合。我们从迁移过程可控、系统设计稳定、监控等方面保障迁移过程可灰度、可监控、可回滚。


4.1 实例如何迁移

图2.jpg

图2

整个迁移过程主要分为4部分:业务评估、系统改造、实例升级、接口切流。

  • 业务评估。实例升级前需要评估业务影响,具体参考文档实例迁移
  • 系统改造。针对评估的点,对业务系统进行兼容改造。
  • 如实例升级后,开放接口需要传企业实例id。
  • 实例迁移。通过IoT实例迁移功能,对待迁移产品进行迁移。
  • 灰度迁移。灰度迁移部分设备,观察影响面。
  • 灰度迁移后,如系统使用规则引擎流转。需要系统使用新的规则引擎配置,并重启应用。
  • 全量迁移。灰度后无异常,开始全量迁移。
  • 回滚。全量迁移过程中如果业务有问题可以进行回滚。
  • 接口切流。
  • 如设备控制接口,针对已迁移到企业实例设备传企业实例id。

4.2 实例迁移系统设计例

图3.jpg

图3

状态管理

       如图3所示,实例迁移过程分为不同的状态,很适合采用状态机方式管理业务流程避免业务代码耦合。同时采用分布式锁,保障任务状态唯一。


数据迁移

由于实例迁移数据从业务模型上是按照产品维度,迁移产品下所有的设备。需要先查询出产品和设备涉及的数据,然后迁移到对应的企业实例存储(存储目前逻辑隔离,物理隔离单元化项目已经进行中)。根据业务诉求和数据特性,采用不同的策略。

  • 数据复制一份
  • 如产品、规则引擎相关数据。产品数据设备运行过程中会使用到,产品下部分设备已迁移到企业实例,部分设备未迁移到企业实例,需要保证业务兼容需要复制一份相同的数据。
  • 数据先增加后删除
  • 设备数据全局唯一,需要保障数据唯一性,因此先增加后删除


异步任务

需要迁移的数据类型多、迁移的设备数量多,导致迁移的时间比较久。需要保证异常情况下数据迁移的稳定可靠,避免ECS宕机、应用发布、依赖服务异常时迁移的稳定性。

  • 采用异步任务方式,抽象实例迁移过程。灰度迁移、全量迁移、迁移回滚采用任务方式执行,并配合状态机业务可中断从业务维度保障稳定。
  • 实例迁移任务执行过程中,针对任务心跳保活、异常检测、异常重试、限流排队等策略保障业务执行的可靠性。
  • 业务执行过程,业务错误(约定错误码)接口级别重试,系统异常任务维度重试。


存储&查询

实例迁移过程中,设备数量多且状态更新查询频繁,迁移任务和迁移设备状态更新需要考虑对于的压力,同时考虑功能对于实时性和容错的需求。由于实例迁移任务和设备状态重要程度,在存储上进行拆分,实例迁移任务存RDS,任务设备设备详情存OTS。

数据的查询依赖高效的检索服务,通过配置方式可以支持RDS、OTS数据使用SQL的方式查询方式。


五、监控设计

图四.jpg

图4

监控面向受众包括阿里云IoT物联网平台用户和IoT内部开发者,其需要看到的监控指标和展示方式各不相同。从用户和功能开发者的诉求触发,针对不同场景进行埋点(日志、存储),采用现有的监控产品构建我们的监控告警体系。

  • 数据收集
  • 数据迁移系统,可以将任务执行的状态持久化存储到RDS中。设备的迁移状态由于数据量比较到可以存储到OTS或者Hbase中。迁移过程中的一些操作,可以打印日志,收集到云产品SLS中。
  • 业务系统如系统A和系统B,针对设备在线量、消息量进行统计打印到日志中,通过云产品SLS收集。
  • 数据聚合
  • 针对日志SLS、RDS、OTS不同维度的数据,按需进行不同的维度聚合分析。
  • 数据展示
  • 针对阿里云IoT物联网平台用户,聚合后的数据采用云监控的视图。提供不同实例关键链路业务指标对比,如设备在线数、消息数、规则引擎流转数。
  • 针对IoT内部开发者sunfire提供关键接口维度监控如接口成功率,系统异常。Grafana聚合统计分析提供基础的大盘展示外,还提供不同任务状态的告警,避免如任务积压等异常。


六、设备少改造

图5.jpg

图5

实例迁移过程,采用设备不改造,服务端少改造的方式策略,避免阿里云IoT物联网平台用户改造成本过高。

用户设备

  • 设备连接到物联网平台时,统一接入层能查询到设备信息,判断企业实例信息,自动路由到企业实例。
  • 设备建连认证过程中依赖的一些数据,如拓扑关系,云端也做了响应的兼容,避免网关子设备的场景实例迁移过程中建连认证失败。


用户服务端

由于迁移企业实例后开放API必须传实例id,   用户系统调用开放API控制设备需要和设备迁移保持同步。

  • 用户系统通过规则引擎,订阅实例升级状态变更消息。
  • 当实例迁移过程中,设备迁移完成后的消息中会流转设备成功的消息。
  • 用户系统修改已经存储的设备实例信息,调用接口时传新的实例ID。
  • 同时需要订阅灰度后迁移到企业企业实例的服务端订阅以及规则订阅等,防止消息丢失。


相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
25天前
|
存储 弹性计算 数据库
阿里云权益中心,助力学生、开发者、企业用云上云无忧
阿里云权益中心支持学生、开发者和企业快速上云,提供“99计划”惠及中小企业和开发者,包括云产品试用、精选优惠和上云扶持。高校用户可通过“云工开物”计划享专属优惠。企业用户可获上云抵扣、1对1服务及成长权益。多种云产品免费试用,降低上云门槛。
阿里云权益中心,助力学生、开发者、企业用云上云无忧
|
1月前
|
存储 分布式计算 网络协议
阿里云服务器内存型r7、r8a、r8y实例区别参考
在阿里云目前的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y这几个实例规格,相比于活动内的经济型e、通用算力型u1实例来说,这些实例规格等性能更强,与计算型和通用型相比,它的内存更大,因此这些内存型实例规格主要适用于数据库、中间件和数据分析与挖掘,Hadoop、Spark集群等场景,本文为大家介绍内存型r7、r8a、r8y实例区别及最新活动价格,以供参考。
阿里云服务器内存型r7、r8a、r8y实例区别参考
|
30天前
|
缓存 编解码 弹性计算
阿里云服务器e/u1/c7/c7a/c8a/c8y/g7/g7a/g8a/g8ae实例适用场景汇总
目前阿里云活动购买云服务器时,除了轻量应用服务器之外,活动内的云服务器实例规格主要以e/u1/c7/c7a/c8a/c8y/g7/g7a/g8a/g8ae这几种为主,本文主要为大家介绍了阿里云服务器的实例规格是什么,有什么用?并汇总了阿里云轻量应用服务器和阿里云服务器e/u1/c7/c7a/c8a/c8y/g7/g7a/g8a/g8ae实例规格适用场景,以供大家了解和选择适合自己的需求的实例规格。
阿里云服务器e/u1/c7/c7a/c8a/c8y/g7/g7a/g8a/g8ae实例适用场景汇总
|
存储 弹性计算 网络协议
阿里云服务器经济型e、通用算力型u1与c7/g7/r7/c8y/g8y/r8y实例区别及选择参考
在阿里云目前的各个活动中,除了轻量应用服务器之外,活动内的云服务器实例规格主要以经济型e、通用算力型u1、计算型c7/c8y、通用型g7/g8y、内存型r7/r8y这几个实例规格为主,c7/c8y属于计算型实例,g7/g8y属于通用型实例,c7/r8y属于内存型实例,c7/g7/r7属于最新第七代云服务器实例,c8y/g8y/r8y属于倚天云服务器实例,不同的云服务器实例规格在性能、特点及适用场景上有所不同,本文大家介绍一下阿里云服务器经济型e、通用算力型u1与c7/g7/r7/c8y/g8y/r8y的区别,以供参考。
阿里云服务器经济型e、通用算力型u1与c7/g7/r7/c8y/g8y/r8y实例区别及选择参考
|
16天前
|
弹性计算 安全
电子好书发您分享《阿里云第八代企业级ECS实例,为企业提供更安全的云上防护》
阿里云第八代ECS实例,搭载第五代英特尔至强处理器与飞天+CIPU架构,提升企业云服务安全与算力。[阅读详情](https://developer.aliyun.com/ebook/8303/116162?spm=a2c6h.26392459.ebook-detail.5.76bf7e5al1Zn4U) ![image](https://ucc.alicdn.com/pic/developer-ecology/cok6a6su42rzm_f422f7cb775444bbbfc3e61ad86800c2.png)
35 14
|
26天前
|
存储 缓存 PHP
阿里云服务器实例、CPU内存、带宽、操作系统选择参考
对于使用阿里云服务器的用户来说,云服务器的选择和使用非常重要,如果实例、内存、CPU、带宽等配置选择错误,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文为大家介绍一下阿里云服务器实例、CPU内存、带宽、操作系统的选择注意事项,以供参考。
阿里云服务器实例、CPU内存、带宽、操作系统选择参考
|
29天前
|
存储 关系型数据库 数据库
超1/3中国500强企业都在用的「汇联易」,为什么选用阿里云RDS?
迎峰而上:汇联易依托阿里云RDS通用云盘,加速业务智能化升级
超1/3中国500强企业都在用的「汇联易」,为什么选用阿里云RDS?
|
1月前
|
缓存 编解码 前端开发
2024年阿里云服务器经济型e、通用算力型u1及计算型、通用型实例适用场景参考
目前阿里云的活动中提供了多种云服务器实例规格,包括经济型e、通用算力型u1、计算型c7/a系列和通用型g7/a系列等,适用于不同场景。实例规格定义了CPU、内存等配置,影响计算和存储能力。本文主要为大家介绍了阿里云服务器的实例规格是什么,并汇总了阿里云轻量应用服务器和阿里云服务器e/u1/c7/c7a/c8a/c8y/g7/g7a/g8a/g8ae实例规格适用场景,以供参考。
2024年阿里云服务器经济型e、通用算力型u1及计算型、通用型实例适用场景参考
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
存储 缓存 编解码
阿里云服务器通用型g7、g7a、g8a、g8ae、g8i、g8y实例区别参考
在阿里云目前的活动中,属于通用型实例规格的云服务器有通用型g7、通用型g7a、通用型g8a、通用型g8ae、通用型g8y这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,适用于中小型数据库系统、缓存、搜索集群、大数据服务和集群计算等场景。本文为大家介绍通用型g7、g7a、g8a、g8ae、g8y实例区别及最新活动价格,以供参考。
阿里云服务器通用型g7、g7a、g8a、g8ae、g8i、g8y实例区别参考