会议主题 :CloudWeGo 社区会议 11.3
参会人 :GuangmingLuo, Cheng Guozhu, welkeyever, YangruiEmma, liu-song, Chen Rui, li-jin-gou, joway, liuq19, Duslia, bodhisatan, L2ncE, Code:Z, justlorain, CarlCao17, HeyJavaBean, jayantxie, Yang Hong, baiyutang, skyenought, rogerogers, cyyolo, cloudwegoIce, chens, Bai Yang
会前必读 :http://www.cloudwego.io/ ; https://github.com/cloudwego
-template-extension
传入一个 extensions.json
文件,这个文件可以把 Suite 的代码注入到生代码里。extensions.json
是一个 JSON 文件,实现的是 TemplateExtension 的对象,这个对象里面有一些已经完成定义、可以注入到特定位置的代码。extend_option
加一行代码,把用户自定义 package 里面的 Suite 注入进来,我们生成的代码里面就自动包含了这个 Suite,方便用户使用。具体字段含义是,通过 import_paths
导入包,extend_file
主要功能是可以在生成代码里面提供一些全局的工具函数,如果用户需要提供公共方法,那么可以在这里注入。Server 端与之类似,比如需要公司内限流之类的功能,也可以通过封装到 Server Suite 里面注入代码即可实现,业务不用再导入对应的包。官网:https://www.cloudwego.io/zh/docs/kitex/tutorials/basic-feature/bizstatuserr/
BizStatusErrorIface
提供用户实现自定义异常接口,框架同时提供默认实现,用户只需要在 ServiceHandler
里返回 Error,就可以在 Kitex 处理的时候把它编码到 TTheader 或 grpc trailer 中。封装完成后通过 Server 传递到 Client 端,Kitex 在解码的时候会对 TTheader 或 trailer 里面字段做特殊处理,把它转成业务 Error,再返回给 Client。这种方式在中间件处理或治理采集时直接跳过了用户自定义异常的处理。因此我们通过在业务 handler 里面直接返回 BizStatusErrorIface
不会触发熔断和链路异常等情况,它仅用于用户之间业务 Error 的传递。StatusCode
业务的状态码;StatusMessage
业务侧信息。Client 侧提供了对 Error 的识别,收到 Error 后,可以通过 kerrors.FromBizStatusError
把它转换成业务异常。收到业务异常后,我们就可以对不同的状态码做特殊的处理。StatusError
里面提供了 Details 功能,所以我们在业务异常里面同样也提供了这个功能。用法可以参考代码示例:https://github.com/cloudwego/kitex/blob/develop/pkg/kerrors/bizerrors.go#L73。飞书开放平台文档:https://open.feishu.cn/document/ukTMukTMukTM/uETO1YjLxkTN24SM5UjN
Go SDK 说明文档:https://github.com/larksuite/oapi-sdk-go/blob/v3_main/README.md