aliyun-migrate-business.md 14.1 KB
Newer Older
WangMoYang's avatar
WangMoYang 已提交
1 2 3 4
# 阿里云公测版迁移到正式版

为了开发者更方便的将业务从公测版迁移到正式版,我们提供了公测版一键迁移到正式版的功能,开发者可在[uniCloud控制台](https://unicloud.dcloud.net.cn)操作迁移,流程如下:

WangMoYang's avatar
WangMoYang 已提交
5
## 购买正式版迁移空间
WangMoYang's avatar
WangMoYang 已提交
6 7 8 9
公测版迁移正式版,需通过`迁移正式版`操作来下单购买待迁移的正式版空间,该操作会为两个空间增加迁移绑定关系,方便后续迁移配置。

![](https://f184e7c3-1912-41b2-b81f-435d1b37c7b4.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/a0eea46e-f89f-40de-ac99-6f0eb09a55f3.png)

10
迁移时,可以选择新空间使用**按量计费****包月套餐**
11

12 13
如选择套餐,目前会根据公测版老服务空间最近三十天的平均用量水位,一共十二项计费指标,然后分别和不同档位套餐的阈值相比较。最低套餐满足了每一项指标都不超限。

WangMoYang's avatar
WangMoYang 已提交
14
经与阿里云协调,已上线新版推荐套餐方案,改为只强制校验5个计费指标:
15
- 云数据库容量
WangMoYang's avatar
WangMoYang 已提交
16
- 云存储容量
17 18 19 20
- 前端网页托管容量
- 过去30天云存储累计CDN流量
- 过去30天前端网页托管累计CDN流量

WangMoYang's avatar
WangMoYang 已提交
21
满足这5个指标,就可以迁移。其他指标超过使用的套餐会发出警告,但也允许迁移。
22

23 24 25 26
如果你的迁移选项里只有按量计费,没有套餐,那说明即便是最高档的套餐也无法满足。

因为老空间未提供流量统计,且一直免费。导致很多开发者不知道自己的流量和存储消耗多大,可能会惊讶于最低套餐的标准。

27
对于认为套餐超过预期的开发者,可能是存储里过多无用文件或代码需要优化,推荐改用按量付费,跑1天看看使用量消耗到底在哪里,问题出在哪里,然后优化下代码和存储,把成本降下来。
28

29 30 31 32 33
虽然用户量小,但套餐推荐较高,常见的问题有:

1. 存储文件体积太大,低档套餐的存储不够,迁移不了
2. 定时任务导致云函数使用量和数据库读写量偏高
3. 不合理的代码设计,一个页面发起太多请求次数
34 35
4. 云函数运行内存设的太高。正常情况下256M内存是够的。可以在[云函数package.json](https://uniapp.dcloud.net.cn/uniCloud/cf-functions.html#memory)或web控制台调整。
5. 如果之前使用uni统计,建议调整下统计的上报数据频率和云端跑批频率。不能太造资源。[详见](https://uniapp.dcloud.net.cn/uni-stat-v2.html#savemoney)
36

37
DCloud始终是为开发者提供更高性价比方案的产品服务公司,DCloud不会为了挣钱故意推荐开发者用不着的高档套餐。
WangMoYang's avatar
WangMoYang 已提交
38

39 40
目前包月套餐可以转按量计费,但按量计费还不能转包月套餐。我们会推进阿里云尽快解决。

WangMoYang's avatar
WangMoYang 已提交
41
在购买待迁移空间前,已经可以获取到迁移后云存储上传及下载的域名,**开发小程序的话,由于小程序安全域名白名单在客户端有缓存,建议迁移前两天将云存储域名添加到白名单**
WangMoYang's avatar
WangMoYang 已提交
42

WangMoYang's avatar
WangMoYang 已提交
43
下单时可设置迁移任务执行的时间,迁移时间仅支持两小时后到三天内的时间点,在未开始执行之前可更改迁移时间。
WangMoYang's avatar
WangMoYang 已提交
44 45 46

由于待迁移正式版空间是一个全新且独立的空间,所以在创建后会分配新的SpaceId,规则为`mp-公测版SpaceId`

雪洛's avatar
雪洛 已提交
47
为了更好的在云函数/云对象中兼容,购买待迁移正式版空间时, 可选择`是否在云函数/云对象代码中兼容 SpaceID`,如果开启该选项,迁移后在云函数/云对象内获取的`context.SPACEINFO.spaceId``cloudInfo` 内的 SpaceId 将保持不变,仍为原公测版SpaceId。开发者可以通过`context.SPACEINFO.useOldSpaceId``cloudInfo.useOldSpaceId`判断当前获取的spaceId是不是迁移前的,true表示当前服务空间在云函数内取到的服务空间id为迁移前的服务空间id,否则为新空间id。如运行本地云函数,此特性于`HBuilderX 3.6.13`起支持,云端默认支持此特性。**迁移后的新服务空间id为旧空间id加`mp-`前缀。**
WangMoYang's avatar
WangMoYang 已提交
48

WangMoYang's avatar
WangMoYang 已提交
49
![](https://f184e7c3-1912-41b2-b81f-435d1b37c7b4.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/1febab5f-e51e-462e-8833-aad26127efc5.png)
WangMoYang's avatar
WangMoYang 已提交
50 51 52 53


**注意**
- 公测版不可迁移到正式版的免费版(开发者版)
54
- 目前还不支持跨账户迁移,但已经在做,预计很快上线
WangMoYang's avatar
WangMoYang 已提交
55 56
- 购买待迁移正式版空间后,为了保证数据迁移的一致性,此时的正式版空间无法在HBuilderX关联、无法在控制台创建数据表、无法在云存储及前端网页托管上传文件等操作,直至迁移完成。
- 只有通过`迁移正式版`完成创建的正式版服务空间才支持一键迁移,原已创建的正式版空间无法使用该功能。
WangMoYang's avatar
WangMoYang 已提交
57
- 如果客户端为小程序,请在迁移前先到小程序后台配置新的上传域名到上传域名白名单(注意不要移除公测版服务空间的上传下载域名),**由于小程序安全域名在微信客户端内有缓存,建议再迁移前两天进行配置**
WangMoYang's avatar
WangMoYang 已提交
58
- 建议在半夜等用户不访问的时间进行迁移。迁移过程耗时数分钟(具体取决于云存储的文件量),迁移中大多数功能仍可以使用,但云存储的上传功能在迁移中会关闭。
雪洛's avatar
雪洛 已提交
59 60 61 62 63
- 正式版固定IP代理出口IP和公测版不同,如有在三方平台配置域名白名单请自行修改,参考:[阿里云固定IP](cf-functions.md#aliyun-eip)
- 迁移到正式版后公测版服务空间的数据库备份不会被迁移过来
- 迁移到正式版后开发者下次在HBuilderX打包发行时会使用正式版服务空间ID。请注意这时候需要修改小程序request域名白名单,将`api.next.bspapp.com`添加到request域名白名单内
- 迁移到正式版后公测版服务空间前端网页托管默认域名将在公测结束后自动回收  
- 迁移到正式版后不可删除公测版服务空间,需等待公测结束后自动回收
WangMoYang's avatar
WangMoYang 已提交
64

WangMoYang's avatar
WangMoYang 已提交
65
## 迁移开始
雪洛's avatar
雪洛 已提交
66

WangMoYang's avatar
WangMoYang 已提交
67 68
系统会在设置的迁移时间自动开始执行迁移任务,迁移逻辑及注意事项如下:

WangMoYang's avatar
WangMoYang 已提交
69
### 云数据库
WangMoYang's avatar
WangMoYang 已提交
70 71 72

- 云数据库无需迁移,会将公测版服务空间的数据库关联到正式版上,所以**请勿删除公测版数据**

WangMoYang's avatar
WangMoYang 已提交
73
迁移期间是否可正常服务:<font color=#42b983></font>
WangMoYang's avatar
WangMoYang 已提交
74

WangMoYang's avatar
WangMoYang 已提交
75
迁移类型:<font color=#42b983>无感迁移</font>
WangMoYang's avatar
WangMoYang 已提交
76

WangMoYang's avatar
WangMoYang 已提交
77 78
迁移耗时:无

WangMoYang's avatar
WangMoYang 已提交
79
### 云函数
WangMoYang's avatar
WangMoYang 已提交
80 81 82 83

- 云函数定时任务、url化配置及自定义域名会一并迁移,公测版服务空间的url化请求会自动转发到正式版服务空间上
- 如果绑定了自定义域名,此时仍会请求到公测版空间然后转发到正式版空间,您也可以将域名解析到正式版服务空间,免去请求转发的逻辑

雪洛's avatar
雪洛 已提交
84 85 86 87
阿里云公测版callFunction请求、云对象调用使用了`api.bspapp.com`这个域名,正式版是`api.next.bspapp.com`。为避免迁移后旧客户端(迁移前发布的客户端)无法访问到新服务空间,阿里云做了请求转发,迁移完成后旧客户端仍会请求`api.bspapp.com`而阿里云会把发送到旧空间的请求转发到新空间去。从而保证迁移前后旧版本客户端能正常请求云函数

url化访问时不管是默认域名还是自定义域名均和上述转发逻辑类似。开发者也可以将自定义域名解析到新空间去,省去请求转发的逻辑。

WangMoYang's avatar
WangMoYang 已提交
88
迁移期间是否可正常服务:<font color=#42b983></font>
WangMoYang's avatar
WangMoYang 已提交
89

WangMoYang's avatar
WangMoYang 已提交
90
迁移类型:<font color=#42b983>无感迁移</font>
WangMoYang's avatar
WangMoYang 已提交
91

WangMoYang's avatar
WangMoYang 已提交
92 93
迁移耗时:约3-5分钟

WangMoYang's avatar
WangMoYang 已提交
94
### 跨域配置
WangMoYang's avatar
WangMoYang 已提交
95 96

- 由于正式版跨域配置上限为9条,跨域配置记录迁移后可能会超上限,此时无法新增。正式版跨域配置支持泛域名,可将公测版配置的多个子域名删除后添加一条泛域名
雪洛's avatar
雪洛 已提交
97
- 跨域配置同时会对前端网页托管生效,如果你迁移前配置了前端网页托管自定义域名。迁移后需要先将前端网页托管的自定义域名重新绑定后才可添加新的跨域配置。
WangMoYang's avatar
WangMoYang 已提交
98

WangMoYang's avatar
WangMoYang 已提交
99
迁移期间是否可正常服务:<font color=#42b983></font>
WangMoYang's avatar
WangMoYang 已提交
100

WangMoYang's avatar
WangMoYang 已提交
101
迁移类型:<font color=#42b983>无感迁移</font>
WangMoYang's avatar
WangMoYang 已提交
102

WangMoYang's avatar
WangMoYang 已提交
103 104
迁移耗时:很短,可忽略不计

WangMoYang's avatar
WangMoYang 已提交
105
### 云存储
WangMoYang's avatar
WangMoYang 已提交
106 107 108

- 云存储在迁移开始后,上传文件的功能不可用,访问不受影响
- 原云存储链接仍可正常访问,流量费用会计到正式版空间,正式版空间如果是包年包月则从资源用量中扣除,如果是按量计费则会出账并从余额中扣除,出账时间为T+2
雪洛's avatar
雪洛 已提交
109
- 使用HBuilderX 3.6.10-alpha或3.6.5-正式版之前的版本发布的应用,迁移后上传文件会报错(错误信息为:`文件上传失败`,web端上传请求会返回403错误码),需要使用更新的HBuilderX版本重新发布应用(不管是app、小程序、web均需要重新发布)
WangMoYang's avatar
WangMoYang 已提交
110
- 正式版新上传的视频文件,视频截帧只支持H.264编码格式,不支持H.265编码格式,原公测版上传的视频不受影响
WangMoYang's avatar
WangMoYang 已提交
111

WangMoYang's avatar
WangMoYang 已提交
112
迁移期间是否可正常服务:<font color=#f3a73f>可正常访问,不可上传</font>
WangMoYang's avatar
WangMoYang 已提交
113

WangMoYang's avatar
WangMoYang 已提交
114
迁移类型:<font color=#f3a73f>有感迁移,迁移期间不可上传文件</font>
WangMoYang's avatar
WangMoYang 已提交
115

WangMoYang's avatar
WangMoYang 已提交
116
迁移耗时:单文件体积较大,1GB迁移耗时约1分钟;单文件体积不大文件较多,1万个文件耗时约30分钟
WangMoYang's avatar
WangMoYang 已提交
117

WangMoYang's avatar
WangMoYang 已提交
118
### 前端网页托管
WangMoYang's avatar
WangMoYang 已提交
119 120

- 前端网页托管文件及自定义域名会一并迁移,迁移期间访问不受影响
WangMoYang's avatar
WangMoYang 已提交
121
- 网站首页需设置为index.html,如果设置为其他子目录(xxx/index.html),迁移可能会失败
WangMoYang's avatar
WangMoYang 已提交
122
- 单页应用配置取消,改为由错误页面实现,迁移时会自动将开发者配置的单页应用目录转为错误页面配置项,开发者无需操作
WangMoYang's avatar
WangMoYang 已提交
123
- 默认域名及自定义域名此时仍会请求到公测版空间,与云存储不同的是不会转发到正式版空间
WangMoYang's avatar
WangMoYang 已提交
124
- 正式版空间如果为按量计费,在迁移任务执行时会自动开通前端网页托管
WangMoYang's avatar
WangMoYang 已提交
125

WangMoYang's avatar
WangMoYang 已提交
126
迁移期间是否可正常服务:<font color=#42b983></font>
WangMoYang's avatar
WangMoYang 已提交
127

WangMoYang's avatar
WangMoYang 已提交
128
迁移类型:<font color=#f3a73f>有感迁移,迁移完成后自定义域名需重新绑定及解析CNAME到正式版</font>
WangMoYang's avatar
WangMoYang 已提交
129

WangMoYang's avatar
WangMoYang 已提交
130
迁移耗时:单文件体积较大,1GB迁移耗时约1分钟;单文件体积不大文件较多,1万个文件耗时约30分钟
WangMoYang's avatar
WangMoYang 已提交
131 132


WangMoYang's avatar
WangMoYang 已提交
133
## 迁移完成
WangMoYang's avatar
WangMoYang 已提交
134 135 136

在迁移任务执行完成后,业务中公测版服务空间相关的数据会一并迁移至正式版:

WangMoYang's avatar
WangMoYang 已提交
137
1. 插件市场购买的付费插件
WangMoYang's avatar
WangMoYang 已提交
138 139 140 141 142 143
2. 公测版服务空间购买的Redis
3. 公测版服务空间添加的协作者
4. 公测版服务空间添加的安全网络及IP防刷配置

此时公测版服务空间将无法在[uniCloud控制台](https://unicloud.dcloud.net.cn)操作,无法在HBuilderX关联, 正式版服务空间已完全替代公测版,可在HBuilderX关联进行打包。

WangMoYang's avatar
WangMoYang 已提交
144
### 迁移完成后的TODO
WangMoYang's avatar
WangMoYang 已提交
145 146 147

- 检查云函数运行是否正常,比如定时任务及url化是否正常、云函数/云对象中获取到的SpaceId是否符合预期
- 检查云存储上传是否正常,公测版服务空间的上传请求会转发到正式版,所以上传的文件会在正式版里体现
WangMoYang's avatar
WangMoYang 已提交
148
- 检查前端网页托管是否正常,比如自定义域名的访问。如果有使用默认域名请尽快替换为正式版域名
WangMoYang's avatar
WangMoYang 已提交
149

WangMoYang's avatar
WangMoYang 已提交
150
### 前端网页托管绑定了自定义域名
WangMoYang's avatar
WangMoYang 已提交
151

WangMoYang's avatar
WangMoYang 已提交
152 153 154 155 156 157 158
如果绑定了自定义域名,则仍会请求到公测版服务空间,此时正式版上传的文件并不会反向同步到公测版,导致自定义域名无法访问新上传的文件。

由于自定义域名仍绑定在公测版服务空间,正式版空间前端网页托管的域名状态为`需解绑后重新绑定`

![](https://f184e7c3-1912-41b2-b81f-435d1b37c7b4.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/5fa6249a-2900-40aa-b4b8-16f37d2307a1.png)

需要开发者在[uniCloud控制台](https://unicloud.dcloud.net.cn)将自定义域名删除后重新绑定,通过该操作获取到新的CNAME后,将域名解析更换到新的CNAME以完成域名迁移。 这个期间前端网页托管自定义域名访问会中断,建议在访问量较低的时候处理。
WangMoYang's avatar
WangMoYang 已提交
159 160 161 162


### 迁移后uniCloud相关业务消耗资源费用变更情况

163
#### 短信及一键登录资源消耗评估@sms-unilogin-fee
WangMoYang's avatar
WangMoYang 已提交
164

165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
`短信``一键登录`业务涉及费用的部分主要是云函数/云对象的使用量、调用次数、和出网流量(如:使用`uni-id-co`或自定义的云函数/云对象来发送短信)。
接下来,我们对不同资源,分别进行费用评估。

我们按照[uniCloud官网](https://uniapp.dcloud.net.cn/uniCloud/price.html#aliyun-postpay)列出的按量计费规则,计算一下云函数的资源消耗。

![](https://mp-8ca8132b-2139-4831-aff2-582d4c8385da.cdn.bspapp.com/cloudstorage/8492ba8e-f4c6-45de-abf2-f9d6825ceefb.png)

我们可以简单得出如下公式:

`云函数/云对象费用 = 资源使用量 * 0.000110592  + 调用次数 * 0.0133 / 10000 + 出网流量 * 0.8`

其中:
- 资源使用量 = 云函数内存(单位为G) * 云函数平均单次执行时长(单位为秒) * 调用次数
- 调用次数 = 发送短信条数(一般情况下发送条数 = 调用次数,特殊情况除外)+ 一键登录调用次数(如果只使用其中某一项业务,则可设另一项业务调用次数为0)


我们假设如下数据模型:

- 云函数内存:512M,即0.5G (云函数内存默认为512M,用户可以自定义设置,最低可设置为128M)
- 云函数平均单次执行时长:200毫秒,即0.2秒
- 短信和一键登录业务平均每日调用次数:10000次
- 出网流量:单次请求 2 KB

按照如上公式,其`短信`业务云函数每天的费用为:

```
云函数费用(天) = 资源使用量 * 0.000110592  + 调用次数 * 0.0133 / 10000 + 出网流量 * 0.8
			  = 云函数内存(单位为G) * 云函数平均单次执行时长(单位为秒) * 调用次数 + 调用次数 * 0.0133 / 10000 + 出网流量 * 0.8
			  = 0.5G * 0.2S * 10000 * 0.000110592 + 10000 * 0.0133/10000 + 10000 * 2 * 0.8 / 1024 * 1024 
			  = 0.110592 + 0.0133 + 0.0152587890625
			  = 0.1391507890625(元)
			  ≈ 0.139(元)
```

即:如果你的`短信``一键登录`业务平均每天发送条数为10000条,使用阿里云正式版云服务空间后,对应云函数每天大概消耗0.139元,对比之前的短信和一键登录费用,平均每次调用多花0.0000139元,几乎可忽略不计。