1 - Arklet 架构设计与接口设计
概述
Arklet 为 SofaArk 基础和模块的交付提供了一个操作接口。有了 Arklet,Ark Biz 的发布和操作可以轻松灵活地进行。
Arklet 是由 ArkletComponent 内部构建的
- ApiClient: 负责与外界交互的核心组件
- CommandService: Arklet 对外暴露能力指令定义和扩展
- OperationService: Ark Biz 与 SofaArk 交互,进行添加、删除、修改和封装基本能力
- HealthService: 基于健康和稳定性,计算基础、Biz、系统等其他指标
他们之间的协作如图所示
当然,您也可以通过实现 ArkletComponent 接口来扩展 Arklet 的组件功能
命令扩展
Arklet 外部公开了指令 API,并通过每个 API 映射的 CommandHandler 内部处理指令。
CommandHandler 相关的扩展属于 CommandService 组件的统一管理
您可以通过继承 AbstractCommandHandler 来自定义扩展命令
内置命令 API
以下所有的指令 api 都使用 POST(application/json) 请求格式访问 arklet
启用了 http 协议,默认端口是 1238
您可以设置
sofa.serverless.arklet.http.port
JVM 启动参数覆盖默认端口
查询支持的命令
- URL: 127.0.0.1:1238/help
- 输入样例:
- 输出样例:
安装一个 biz
- URL: 127.0.0.1:1238/installBiz
- 输入样例:
- 输出样例(成功):
-输出样例(失败):
卸载模块
- URL: 127.0.0.1:1238/uninstallBiz
- 输入样例:
-输出样例(成功):
- 输出样例(失败):
Switch a biz
- URL: 127.0.0.1:1238/switchBiz
- 输出样例:
- 输出样例:
查询所有 Biz
- URL: 127.0.0.1:1238/queryAllBiz
- 输入样例:
- 输出样例:
查询健康状况
- URL: 127.0.0.1:1238/health
以下根据不同的输入参数,获取到不同的状态信息
查询健康状况
- 输入样例:
- 输出样例:
查询系统健康信息
- 输入样例:
- 输出样例:
查询模块健康信息
- 输入样例:
- 输出样例:
查询插件健康信息
- 输入样例:
- 输出样例:
使用端点查询健康状况
使用端点获取 k8s 模块的健康信息
默认配置
- 端点暴露包括:
*
- 端点基本路径:
/
- 端点服务器端口:
8080
http 代码结果
HEALTHY(200)
:如果所有健康指标都是健康的,获取健康信息UNHEALTHY(400)
:一旦健康指标不健康,获取健康信息ENDPOINT_NOT_FOUND(404)
:找不到端点路径或参数ENDPOINT_PROCESS_INTERNAL_ERROR(500)
:获取健康过程中抛出错误
查询所有健康信息
- 输出样例
查询所有 biz/plugin 健康信息
- 输出样例
查询单个 biz/plugin 健康信息
- 输出样例:
2 - 如何发布 Arklet 版本
触发 github Action 发布到 snapshot staging
版本发布到 maven 中央仓库,发布能力集成到了 github action 里:
该 action 需要手动触发执行:
执行成功后,只会发布到 snapshot staging,如果是 SNAPSHOT 版本,则这里执行完就可以结束。如果是正式版本,发布到 snapshot staging 之后,还需要推送到 release staging。
发布到 Release staging
打开 https://oss.sonatype.org ,点击右上角的 Log In, 登陆信息可找管理员。
点击左侧的 Staging Repositories:
搜索刚才记录的 ID:
钩上之后就可以进行 Release (发布) 或者 Drop (放弃) 的操作。
当看不到这两个选项,只有 Close 选项时,则先选择 Close 操作,这时候如果包没有问题,则接下来可以 Release 或者 Drop。如果有问题,下面的内容中的 Activity 中会显示包不能正常 Close 的原因, 按照提示进行修改就可以了。
仓库包同步与搜索
在包发布到 release 仓库之后, 10 分钟后包会更新,在 http://central.maven.org/maven2/com/alipay/sofa/ 能看到包。2 小时之后,可通过 搜索 查询到包。