准入模板
基本信息
- scm模块名:
- 模块直接负责人:
- 报警接收人:
系统与网络
网段
- 检查点:网段需求
- 规范描述:除金融类产品外应避免特殊网段需求(特殊网段:比如需要隔离网段,在交换机上设置acl控制)
硬件
- 检查点:套餐或配件
- 规范描述:业务程序仅提供虚拟化资源,其他存储业务暂时可使用物理机
软件
- 内核版本:应避免特殊内核版本或操作系统发行版的需求,默认centos4u3和6u3
- 系统配置:服务应该根据其实际需求在软件中修改对应的参数,不应该依赖于非系统通用套餐规定的特殊系统参数配置。
- 依赖软件:除redis/zk这种独立的服务外,不应该依赖于系统来提供特殊的软件或运行时环境(如python的环境),应在程序的整体代码环境中打包给出。
性能
- 性能测试:要求:有全系统性能数据(至少有子模块的性能测试测试数据),具体需要满足如下2点,需要QA确认
- 可测性-可通过模拟流量或环境, 而非直接影响用户的方式给出
- 性能-满足 SLA 要求下的能承担的极限压力;
- 启动时间:要求:程序的启动时间最长不应超过5分钟。(PHP/java的时间不能超过1分钟;C 5分钟)
- 资源扩展:资源合理利用性,要求:CPU/内存资源使用不应有明显浪费(比如内存用满,CPU空闲)
服务架构
关联关系
- 数据热加载:要求:
- 对数据更新时效性要求高的(10分钟内),服务运行依赖的本地数据, 需要通过非重启的方式加载。
- 数据实时更新的服务,如重启后需要追数据(否则会有数据延迟),要求在10分钟同步更新完毕
- RPC等服务调用解耦:要求:
服务调用(包括上下游的所有调用)不能使用具体的物理位置,如机器名、机器IP等,应使用BNS名字服务(推荐)/域名/VIP/zookeeper(不推荐)来解耦
上游调用:调用模块/调用方式/配置文件路径/调用是否存在跨IDC调用
下游调用:调用模块/调用方式/配置文件路径/调用是否存在跨IDC调用
idc运营商
- 多IDC部署多运营商接入
- IDC:一级服务需要能够至少在2个IDC部署,并且在单机房故障下有明确的预案
- 运营商:速度敏感型服务至少需要有联通/移动/电信3个运营商的接入
容错与预案
容错策略
- RPC请求需要对所调用服务的失败、读写超时有容错处理,能够容忍下游单实例故障,能够容忍下游非核心模块全部故障,能够容忍bns/zookeeper服务异常
- 建议配置:连接超时100ms/读写超时不超过2s/重试1次,超时重试的时长不应超过5s
- 下游服务异常恢复后,上游服务应具备自恢复能力(不需要重启)
- bns/zookeeper服务异常后,服务需要有本地关联配置的cache的策略,bns的通用解决方案
- 其他第三方服务需要有明确的运维团队和运维接口人
- 实例可以被随时停止、重启、增加
上游调用1: 调用模块名:XXX/连接超时:xxms (参考值100ms)/读超时:xxms (需要小于其上游调用超时)/写超时:xxms (需要小于其上游调用超时)/重试次数:1次 (建议共请求2次,以免雪崩)/重试的条件:连接、读、写超时均会重试/重试后仍失败的影响:比如下单失败或者降级后无促销信息
预案
- 服务明显异常时应具备明确的预案,并明确执行条件和流程
部署
包管理
- 目录结构建议:
- bin: 运维接口, 主程序
- conf: 配置文件
- data: 数据文件
- log: 日志文件
- lib: 依赖的lib库"
- 运维接口:服务必须提供一个可执行文件(不接受多个文件启动的方式), 作为对其运维操作(启动/停止/重载/健康检查)的唯一入口
- 启动 sh dispaly_control start
- 停止 sh dispaly_control stop
- 重启 sh dispaly_control restart
- 健康检查:sh dispaly_control status|monitor|healthcheck
- 配置文件:配置文件只能存在SCM或者paas发布平台上,不能并存,也不能存在其他位置(以一个为最终版本,否则造成的不一致风险业务自行承担)
日志
- 日志操作:
- 支持日志随时被删除、切割(不需要重启服务);
- 日志切割和删除:切割方式默认以小时为单位切割,命名为:xxx.log.yyyymmddhh(如 as.log.2016081009)
- 日志本地保存天数默认3~7天,如需要额外保留需明确需求给OP备份到Hadoop
- 声明核心报表依赖的日志:日志文件名以及日志传输异常的报警接收人
- 日志格式:
- a.日志中的时间需要符合标准的时间格式,便于查看,建议:level: %Y-%m-%d %H:%M:%S,如NOTICE: 16-08-11 10:59:59
- b.日志中需要有的字段标志
- 错误日志:请求的异常状态,异常的原因(错误码+错误信息)
- 访问日志:请求来源(client ip)、总耗时、关联模块的处理实例id/ip、请求关联模块的耗时、logid(建议有可trace的id-可选)
上线
- 上线:要求模块上线不能要求停服务或者切流量(多系统联合的复杂上线可单独评审)
监控
服务核心指标
- 服务与模块都需要明确自己的核心功能,对应核心指标项、如何采集(日志或者接口)以及判定异常的方法,默认要求至少包含平响/pv/pvlost/报警阈值
核心功能: pv: 提供日志样例(匹配的关键字飘红)/ pvlost: 提供日志样例/ 平均响应时间:提供日志样例/ 可用性计算方式:/ 报警阈值:/
默认通用监控
- 机器,资源使用,进程,端口等通用监控默认由OP添加,报警同步发送给RD
依赖服务状态
- 必须提供方法(通常是日志),呈现所依赖的服务(上下游均需要包含)的请求状态,包括但不限于:调用的ip:port,请求失败的错误(错误信息+错误码)、时延等(与日志的格式保持一致);
安全
https接入
- 直接对外可见的服务需要支持https(防内容劫持)
代码开发
- 符合公司安全规范
第三方组件
- 服务使用的第三方组件必须通过公司安全组的扫描
- 服务使用的内外部组件不允许是snapshot或停止维护的版本
非业务接口
- 要求服务不允许开放非业务需要的后门端口和接口
SLA
- 服务必须明晰其在端上核心功能,每个功能对应的核心指标,衡量方法以及目标SLA。 (如成功率、时延、正确率等) 如果是已有核心流程增加了一些逻辑或者策略 那就需要review原来的指标是否需要调整; 如果是新增的用户可见的独立功能,则需要确定新的SLA