钉钉开发文档

稳定性认证标准

更新时间: 2019-1-10

1. 应用核心业务场景梳理

按优先级梳理应用核心业务场景

2. 架构标准

(1)系统部署在钉钉云(早期应用部署在聚石塔)
(2)系统用到的所有存储服务(如数据库、缓存等)及中间件,必须用钉钉官方提供的服务,非官方服务需提交审核
(3)Tomcat等容器类应用,不允许单点,需至少2台服务器
(4)应用涉及的所有资源,比如数据库、ECS及其他存储服务等,不允许部署除该应用外的其他服务(避免各应用间相互影响)
(5)若使用ECS部署Tomcat,单个ECS不允许同时跑多个Tomcat实例
(6)使用Docker时,Docker容器需固定,不要随着重启而动态创建新的实例(用kubernetes的场景)
(7)使用Docker时,要合理编排,规则如下
a.提供相同服务的Docker,每个ECS上只允许部署1个
b.ECS作为宿主机,高峰期资源利用率需满足稳定性压测标准,包括CPU使用率、CPU Load1、内存利用率等

3. 监控标准

监控标准包括系统监控、前端调用的服务端API监控、错误日志监控、核心业务监控和前端监控,并通过演练确保监控配置有效

3.1 系统监控

系统监控需包括:
(1)CPU使用率、CPU Load情况、内存占用率、网络流量、磁盘利用率等基本项
(2)Java应用JVM FullGC情况
(3)磁盘IO每秒占比

3.2 所有前端调用的服务端API监控

所有前端调用的服务端API监控需包括:
(1)QPS监控,及趋势图,设置合理报警阈值,可以提前扩容
(2)RT监控,及趋势图,设置合理报警阈值,以便发现系统异常抖动
(3)成功率监控,设置合理的报警阈值,以便发现系统异常抖动

3.3 错误日志监控(可选)

所有错误日志需统一输出到同一日志文件,并监控此错误日志文件

3.4 核心业务场景监控(可选)

针对核心业务场景,增加业务监控,例如接入阿里云日志服务

3.5 前端监控

接入啄木鸟监控,监控项包括PV、UV、JS异常等基本项;详见接入说明

4. 前端稳定性标准

如果是E应用,以下前端标准指标不做严格要求

4.1 首页性能标准

(1)页面大小:首屏页面大小<200k
(2)加载时间:首屏加载时间<2s
(3)微应用性能检测:提供测试链接,检测评分>90分(联系钉钉同学进行线下测试)

4.2 线上监控标准

数据可通过啄木鸟监控查看
(1)页面性能,首屏性能Android T2<2s,iOS页面完全加载<2s,PC页面完全加载<2s
(2)JS异常,JS异常次数为0
(3)白屏,白屏率<0.1%
(4)资源加载异常无
(5)API调用成功率
a.API成功率>99.9%
b.API时间<200ms

5. 服务端稳定性标准

5.1 预估所有API的QPS峰值

应用分类
如何评估
要求
已上架应用
查看线上监控QPS峰值
(例如查询近2个月QPS最高为100)
要求压测至少支持:QPS峰值的3倍
例如本次压测QPS至少为300)
未上架应用
评估上线后QPS峰值
要求压测至少支持:评估的QPS峰值的3倍

5.2 限流标准

所有服务端API请求需有限流机制,超过QPS峰值时能触发限流,保障系统稳定

  • 限流概念
    (1)先梳理出核心业务的接口
    (2)根据评估确认这些接口的qps上限(一般为平时高峰期的3倍)
    (3)为所有接口增加限流保护的能力,确保超过接口上限的请求可被限流,返回自定义错误码,比如http 5xx
    (4)对核心接口需要进行演练,其它接口不需要
  • 限流如何演练
    (1)通过压测工具对梳理的核心业务接口施加压力到qps上限时(这里假设为100qps),请截图,此时在压测工具端看到的接口成功率应该是100%
    (2)通过压测工具对上述接口施加压力超过qps上限时,比如达到200qps,请截图,此时在压测工具端看到的接口成功率应该是50%

5.3 ISV应用服务端授权激活场景

服务端响应时间小于3s(ISV应用且授权开通使用HTTP协议开发接入需关注)

6. 稳定性压测标准

针对核心业务场景及接口,请压测线上环境且至少持续10分钟,压测到最高支持的QPS时,通过标准如下:
(1)峰值RT<=200ms,平均值150ms
(2)峰值错误率(统计非200)<=0.1%
(3)单核平均峰值CPU利用率<=70%(总利用率/核数)
(4)单核平均峰值LOAD1<=0.8(总利用率/核数)
(5)峰值内存利用率<=80%

7. 降级方案

(1)提供降级场景
对提供的服务进行梳理,按照重要程度优先级从高到低列出所有模块
(2)提供降级方案
a.对优先级较低的模块增加开关,可以在系统出现不稳定的情况下(系统不稳定并不一定是流量过大引起的,比如bug或慢sql都有可能),通过开关临时关掉优先级低的功能,保障优先级高的功能可用
b.开关要能单独设置,不推荐与业务系统部署在一起;否则系统出故障时,可能无法设置开关
c.开关服务可自行设计,也可使用阿里云应用配置管理
(3)针对降级方案进行演练,并保障降级方案生效

8. 定期进行稳定性评估

(1)本季度线上业务高峰期的QPS及对应系统稳定性状态需达到稳定性认证标准
(2)下一季度活动开展情况并预估QPS,在系统优化或扩容后需达到稳定性认证标准

9. 早值班机制

应用服务商需要执行早值班机制,早值班需要观察应用监控、分析稳定性指标、排查问题和跟踪解决,并于早10点前发出值班日志。值班日志使用“钉钉ISV沟通组”的日志应用,选择“早值班记录”模板发出。

钉钉开放平台会根据应用服务商早值班的执行情况,对应用进行稳定性评级和其他运营策略上的激励。

以上内容是否对您有帮助:
在文档使用中是否遇到以下问题(多选):
  • 内容错误
  • 更新不及时
  • 链接错误
  • 缺少代码/图片示例
  • 太简单/步骤待完善
手机号
更多建议
提交成功,感谢您的反馈!