代码规范详情

收藏
我的收藏
    1.服务本身 必须是 无状态 的,如需状态可存储到远端 redis/mysql,服务启动不依赖本地内存cache/落盘的数据​
    2.服务目前 能且只能 监听8000端口,如果您的服务没有监听正确的端口,服务发布冷启动过程将会出现以下错误:​
{ "Status": "failed", "StatusMessage": "Function cold start timeout, please check your log/code and then retry, or contact oncall" }
    3.[开启"模版部署"功能后忽略该步骤] 服务需要提供一个启动脚本 run.sh该脚本需要在服务的根目录下(自定义镜像需要将根目录下的 run.sh 脚本拷贝至容器目录:/opt/application/run.sh,底层通过该脚本启动用户服务。需要注意的是,run.sh 必须具有可执行权限,否则发布服务会有 permission denied 的报错。可通过以下命令给 Linux 系统所有的用户组添加run.sh的执行权限:​
chmod a+x run.sh
    4.对于 HTTP 服务,必须 额外实现一个GET "/v1/ping" 接口,平台通过该接口状态(是否返回 Status Code 200)判断服务存活性​
    5.不鼓励 服务启动后台进程、线程(即请求已经返回了Response,但后台仍有任务异步执行),平台测会根据请求量对后端实例进行动态扩缩容,所以无法保证后台进程/线程存活性。​
    6.默认都是 UTC 时区(不区分中国区和非中国区)。通过以下两种方式可以设置时区:​
    a.通过环境变量设置时区; 可以在服务配置页面上设置TZ环境变量,重新发布后生效。 注意:存在一些基础镜像,由于自身不携带tzdata包,导致设置TZ环境变量后,代码中也无法生效。
    b.代码入口,执行全局时区设置。​
func init() { var cstZone = time.FixedZone("CST", 8*3600) time.Local = cstZone }