带货|创新推出 | Serverless 场景排查问题利器:函数实例命令行操作

带货|创新推出 | Serverless 场景排查问题利器:函数实例命令行操作

文章图片

带货|创新推出 | Serverless 场景排查问题利器:函数实例命令行操作

文章图片

带货|创新推出 | Serverless 场景排查问题利器:函数实例命令行操作

文章图片

带货|创新推出 | Serverless 场景排查问题利器:函数实例命令行操作

文章图片

带货|创新推出 | Serverless 场景排查问题利器:函数实例命令行操作

文章图片


背景介绍 全托管的 Serverless 计算平台能给用户带来更少的运维代价、更强的稳定性和更快的弹性能力 , 在 Serverless 落地的过程中 , 遇到的一个很大的挑战是 Serverless 平台如何给予开发者足够的安全感 。 让开发者们无负担地使用并信任 Serverless , 是我们一直追求的目标 。
全托管的初衷是为了减小开发者的使用和运维复杂度 , 但这一定程度上削减了用户对自身服务的控制权力 。 比如在很多场景中 , 用户会想知道 , 如何能够掌握自己应用的实际运行情况?应用出现问题时如何能快速确认是自身问题还是云平台问题?如果是云平台的问题 , 如何能快速恢复服务 , 及时止损?
这些问题的根本原因 , 都是用户对云平台无法做到完全的信任 , 这也进一步阻碍了他们迁移应用和扩展业务场景 。 所以我们也在思考 , 如何打破这种不信任局面 , 让用户拥有更多资源层面上的掌控力 , 但又能远离资源层的复杂运维 。
在这样的背景和需求下 , 阿里云函数计算创新推出了 Serverless 场景下的函数实例命令行操作功能 , 支持用户在控制台界面登录进函数实例内部 , 或者使用工具对实例执行指定的命令 。 本文将具体介绍这个功能的使用方式和使用场景 。
实现 Exec 功能定位及使用方式 实例命令行操作功能提供和 K8s Pod Exec 与 Docker Container Exec 一致的使用体验 , 支持在函数实例的真实运行环境中执行具体命令 。
同时 , 由于 Serverless 极致弹性、按量收费等特性 , 在 Serverless 场景下的实例 Exec 功能又与 K8s 和 Docker 有着一些本质的区别:

















【带货|创新推出 | Serverless 场景排查问题利器:函数实例命令行操作】













只能对还存活着的实例(包括预留常驻实例和按量活跃实例)执行 Exec 操作 , 如果按量实例空闲超时被释放 , 则无法再执行; InstanceExec 请求不占用实例的并发度 。 因此即使函数的实例并发度设置为 1 , 也可以同时执行 InvokeFunction 和 InstanceExec 操作; InstanceExec 的一次操作被视作一次 InvokeFunction 请求调用 。 只要 InstanceExec 请求建立的 websocket 连接没有和函数实例断开 , 那么函数实例将一直处于活跃状态 , 和 InvokeFunction 采用同样的计费规则 。 用户可以设置 InstantceExec 的 idleTimeout 参数让客户端在空闲指定时间后主动断开连接 。实例命令行操作功能支持在控制台上登录实例、使用 Serverless Devs 工具执行命令 , 或者 SDK 调用接口 , 执行命令 。控制台登录实例 在函数计算官网控制台上在函数详情-监控指标-实例指标页面 , 在最右侧可以对实例执行登陆操作 。点击“登录实例” , 界面将会调到一个终端界面 , 即可马上登录进实例 , 执行命令进行问题排查 。在函数详情-监控指标-实例指标页面 , 点击实例 ID 可以进入到函数的实例详情页面 , 界面右上方有登录实例的按钮 , 点击即可进入实例 。SDK 调用 以 golang SDK 为例 , 其它 SDK 的调用方式大都类似 。SDK 对 InstanceExec API 进行了封装 , 在调用接口的时候需要使用建 OnStdout、OnStderr 传入两个回调函数 , 回调函数定义了处理 Exec 通道返回数据的具体逻辑 ;同时可以使用返回的 execConn 输入 stdin 消息以传输给远端的 Exec 通道 。command := [