分类 Bmob后端云 下的文章
Bmob云服务是如何做到稳定性99-5%
Bmob云服务是如何做到稳定性99.5%
Bmob作为国内早期Baas,是如何做到稳定性99.5%,这篇介绍性能核心问题解决。
稳定性的升级,在用户层感知是不明显的,这就跟微服务的概念一样,只要API层不变,底层技术将变得不那么重要,至少对于开发人员是这样的。你不需要关系,容器是什么、虚拟机是什么、只需要它们使用RESTful API就可以了。无论是android、ios、nodejs、C#等等SDK,在Bmob他们都是基于RESTful API.
稳定性主要一下几个大方面
- 平台技术成熟度 (Bmob Baas发展很多年,几乎不存在这问题)
- 机房网络故障率 (线路因素,本地电信,网通出现不稳定)
- 机房机器故障率 (物理宕机故障)
- 工作人为因素 (代码发布失败)
- 服务器性能不足,运行不稳定。
多年来累积的运维经验前面4项,几乎可忽略不计,一年难得出现一次。影响稳定性问题最大原因是服务器性能瞬间不足,从而影响稳定。这可能是所有IT企业面临的一个问题,如果没大并发,每个企业都能做到稳定。
性能不足、这里我们看一个典型用户案例
服务器性能不足原因,这个代表性的用户,出现的原因是DB 瞬间负载过高就像下面这样。
他这个应用是个正常应用,我们联系他,他说他的业务就是这样,我们告诉他,你是应用影响到其他开发者应用了,最开始他不是很理解,连续几天影响到跟他同一台机器的免费版应用。由于其他用户的投诉的厉害,我们不能为让其他用户这个时段没法用,决定联系他、并与他们技术开始与我们沟通,最终我们给他应用做了压力测试,定制了一套技术方案、来应对这种经常流量爆发的应用。目前这个应用每天还是这样运行者。
这个应用再也没出过故障,也没影响其他人。这个真实事件绝不只是一个应用,每天都可能出现这类奇怪的应用。
这样我们找到了问题的关键点:瞬间高并发。
(我们之前的架构与下面58同城的架构是一样的,这篇暂时不讨论之前的技术细节)

为解决经常瞬间高并发影响大部分人,我们策划了企业版与企业Pro版本完全隔离。实现了定制企业版,300天零事故的成绩。
为免费版瞬间爆发,我们也制定了下面方案。大大提高了解决问题的效率与稳定性
以Bmob的运维经验,云DB服务器的CPU,跟云主机的CPU监控是不一样的,云服务器DB的CPU到60%基本已经读取不到DB里面的数据,而云主机CPU到90% 程序还能正常跑。为了冗余一般我们把DB负载控制在3%左右,像下面这样

提高稳定性,主要是提高DB机器的处理能力,当DB机器,CPU大于10%,我们就能收到警报,进入机器查看是哪个应用异常,观察一段时间,如果其他人没受影响,发现该应用资源占有还是居高不下,我们会把他隔离到企业版本临时服务器,观察他2天,如果正常则迁移回来,不正常则通知开发者关闭应用。如果其他人直接受影响,我们当场会临时关闭这个应用。
提高稳定性,我们也做过一些其他尝试
性能不足主要出现在数据库身上,这个在最初我们以为加内存,加机器可以解决,最终发现是个无底洞。因为你无法知道所有开发者的业务。
免费的开发者在意的是短时间内立刻把我应用恢复正常访问,你怎么处理好,他并不在意。升级DB硬件需要重启,强制重启DB最低需要一小时,而且危险度高。问题根源没解决,重启后可能几分钟内有挂了。加机器是一样的道理,新机器加入负载,需要长时间的数据同步,短时间也没法恢复业务。同步好后加入负载还是可能几分钟内有挂了。因为你并没法预算处客户的瞬间并发是多少。
为了提高稳定性,我们调整过技术架构,升级了固态硬盘,优化过db存储,推出过容器服务。也走过非常多的弯路,经过不断思考试验与技术迭代,最终决定将应用进行服务划分。

分为三类
- 免费+专业版
- 企业版
- 企业pro+版
通过服务划分与预警来提升稳定性
A类用户(企业PRO)、B类用户(企业)、C类用户(专业+免费),A、B 用户类用户稳定性直线上升,C类用户由于一个副本集有几百上千个应用,还是有可能出现瞬间爆发,这边内部加强了一些监控,以及形成一套标准的问题快速解决办法,整体稳定性也提高几倍。
稳定性一直是Baas 不能逃避的问题
为此Baas厂商开发好基础服务后,都在不断的在为此努力。毕竟没稳定性就没后续服务可言,用户都用不了了,人家也不可能应用一直放你这里,我们也在为此事业不断努力。
此文只代表个人观点,如有疑问可以留言或私信
Quikapp快应用【小程序】开发入门教程四
简介
开发快应用最近遇到太多问题可能10篇都写不完,经过很长时间,多少次想放弃,不断尝试,在华为开发工具与快应用联盟工具之间切换,希望有个是稳定的,最终是通过快应用联盟开发工具开发出了新的快应用SDK,并写了Demo。华为的开发工具属于内侧我就在用,问题比联盟的问题多,最近更新频繁些了,希望尽快可以完善商用,所以最终是通过联盟的工具。
地址:https://github.com/bmob/quick-app
效果

调试经验
准备以下工具
- 华为手机
- nodeJS环境
- 抓包工具
1.为什么要华为手机
首先他必须是有android手机,建议越新款越好,太卡,耽误时间。华为手机因为有些API,其他手机暂时不支持,调试如果都不支持,后面你完全没法看效果。
2.为什么需要抓包工具
因为目前不管是华为的开发工具,还是联盟的开发工具都还不支持网络调试,需要自己设置手机代理抓取请求。
华为开发工具与联盟开发工具调试区别
华为:
通过ADB驱动与手机连接,与手机调试,优点,当系统多个页面的时候,单词刷新调试速度会快10s左右, 但也很慢啦,你要知道不管是小程序还是H5,刷新一次也没都是零点几秒。 快应用如果项目有2个页面,平均时间大概是30s,这可能跟电脑也有关,我这台是MAC版
联盟:
走的node体系,反应虽然慢,但相对稳定。只有你有耐心,一般都可以看到效果, 不像华为,经常等个10分钟,还是没响应过来, 应该是确实进入BUG模式了。
调试界面样式注意事项
今天2018-05-11,2个开发文档,都还不支持审查元素,项目2个页面,单次刷新在30s左右。 (这个跟手机、已经打包工具有关,新建的项目就很快,调试一个小时后就到30s了。打包出来的文件到了4MB),没法审查元素,一切全靠猜。那就以DIV+CSS技术来理解了,如果文档有写例子的功能,绝对不自己手写,这样能避免很多坑。
目前是华为的文档有例子,不过文档复制过去也都是错的多。像少了text结束符、不支持的标签乱用,很常见。
什么华为的文档,还会用错标签?
没错的,写文档这位兄弟肯定也是没写过快应用的,以为WEB那套成熟的技术,替换下标签就可以了。
快应用这套标签完全自造,导致问题太多,例如div不能包含div,text不能包含text,如果你想页面上显示个表单组件出来,list下面必须是list-item,必须带上type属性,css不支持float:left ,等等常用属性都不支持,目前这些标签、css属性都不支持,布局做起来比做个APP还难。
为什么只做了个登陆功能?
我把Bmob云数据库的,所有功能,包含短信、云函数等等功能都已经支持了快应用,为什么只做了登陆,因为上面说的,目前的快应用布局对于开发者来说,非常难理解。开发成本比APP还高,主要的问题还是存在于Css上面,大量css属性不兼容,例如float:left 这个这么常用的属性都不支持,css布局上举步维艰,不过听华为的工程师反馈是,未来小程序支持的,他们大部分都能兼容,并且会支持小程序转快应用。这个是下一步工作。
Bmob后端云的最新这套SDK最初就是为快应用而开发,然而由于快应用还不成熟导致目前安装都还不支持npm 安装方式,打包出来也没法像小程序H5一样直接使用,必须单独修改下。虽然在这么早期开发出SDK非常艰难 ,庆幸的是,通过编译后单独修改,这次SDK,我做了全平台兼容, H5、或者小程序的JS代码,可以直接复制到快应用,并且完全兼容不会有任何异常。

总结:
由于需要开发SDK,快应用大部分接口我们都需要封装,这比开发一个应用要困难的多,其中开发工具的不成熟,让我举步维艰。奔溃、卡死、无报错、代码不运行,常有的事。 如果三个小时还没解决那个问题,我会重启电脑,新建个项目重新来封装这个接口。
为什么我不说三个小时还没解决那个错误,因为不像小程序还有40125 之类的错误,因为他根本就没报错,官方也没任何错误码,你根本不会知道错误是哪个。唯一的办法是,关闭软件,重新建个项目,重新编译,重新写。
最后感谢下华为的快应用相关工作人员,如果没有你们支持,也就没有今天的这个快应用SDK。
Bmob后端云域名解决办法
2022-08-19日这次主要的原因是bmob.cn域名解析被阿里云hold封禁。
到22年还有部分客户还没有绑定域名解决办法,核心是改掉客户端请求的域名。
区分自己使用的域名
1.android ,ios统一是 SDK域名,绑定SDK域名,初始化前重制即可
2.php、小程序 把sdk里面自己请求域名改为 自己公司的api域名(如果没有自己的备案域名,暂时无解)
3.C# C#用的也是API域名,如果不是源码,就把代码改为源码引入,找到源码api.bmob.cn 改为自己请求域名改为 自己公司的api域名(如果没有自己的备案域名,暂时无解)
4.如果改了还是不行,那要看是否自己没上传https证书,域名却写了https。
最后附上官方操作教程:http://doc.bmobapp.com/other/domain/#_1
Quikapp快应用【小程序】开发入门教程一
最近华为牵头国内几大厂商出了小程序Quikapp快应用,这里给大家编写快应用入门教程
首先记住几个网站
- 官网:
https://www.quickapp.cn - 文档:
https://doc.quickapp.cn/ - 工具:
使用Visual Studio Code开发
使用WebStorm开发
教程地址(https://doc.quickapp.cn/tutorial/getting-started/code-edit-conf.html)
4.环境:
需安装6.0以上版本的NodeJS,请从NodeJS官网下载
5.依赖库hap-toolkit、hap-tools
第一步:安装
npm install -g hap-toolkit
第二步:hap脚手架生成一个初始项目
hap init test1
这一步大家别急着
npm run server否则报一下错误

第三步:安装依赖
npm install第四步:运行服务
npm run server
还是失败,新出的东西官网还不是很完善,后面应该不会出现,这里花了几分钟找到了原因,项目少了hap-tools库, 这里没看到官网有这个库的介绍,package.json里也没 ap-tools 这个库的引入。
大家输入npm install hap-tools 手动安装下这个库。
然后
npm run server- 开发者可以通过命令行终端或者调试服务器主页看到提供*
扫描的二维码 - 开发者通过快应用调试器扫码安装按钮,扫码安装待调试的rpk文件
- 开发者点击快应用调试器中的开始调试按钮,开始调试

完美
给大家解释下目录说明
├── sign rpk包签名模块
│ └── debug 调试环境
│ ├── certificate.pem 证书文件
│ └── private.pem 私钥文件
├── src
│ ├── Common 公用的资源和组件文件
│ │ └── logo.png 应用图标
│ ├── Demo 页面目录
│ | └── index.ux 页面文件,可自定义页面名称
│ ├── app.ux APP文件,可引入公共脚本,暴露公共数据和方法等
│ └── manifest.json 项目配置文件,配置应用图标、页面路由等
└── package.json 定义项目需要的各种模块及配置信息大家像小程序一样,在这上面开发就好了。
Quikapp快应用基于Nodejs内建一个本地服务器运行代码、语言JavaScript,语法支持ES6,如果熟悉vue\weex一类的MVVM框架,基本可以直接入手。
这一章是Quikapp快应用开发入门,有空补上下一章编写第一个快应用。
Quikapp快应用、如何接入Bmob后端云?
既然语言是JavaScript, 直接下载Bmob的JavaScript SDk引入,就可以直接操作后端数据库,配合云函数可以实现Quikapp快应用的接口对接。很快Bmob也会推出快应用的针对性SDK,这样云函数也不需要写了,跟小程序一样无需写一行后端代码,愉快的对接Quikapp快应用了。