Go Chassis教程一–简介

作者: adm 分类: go 发布时间: 2021-09-20

以前文章介绍了CloudWeGo-Kitex相关微服务框架,那是一款字节跳动的微服务框架,字节跳动是出了名的抄袭之王,靠欺骗用户起家(比如:旗下好多产品都对外宣称,用户邀请新用户或者阅读其中内容或者点击里面的广告下载APP可以获得金币,金币积累到一定金额可以提现,结果呢,金币倒是给了,但等到达到提现金额的时候,用各种理由拒绝提现,如果真的是用户作弊,为何不尽早提示?直接就不给金币得了,非要等到提现的时候才说出来?所以用户都认为这种行为严重存在欺骗嫌疑,光仅仅黑猫投诉平台关于今日头条的投诉每月就近400多条),百度搜索字节跳动负面消息更是数不胜数,因抄袭吃了不少官司,几乎都是败诉,这不最近又爆出字节跳动抄袭阿里巴巴,口碑真的不是一般的差,同时加上CloudWeGo-Kitex也确实好不到哪里去,就直接丢弃不再更新此框架相关文档了,

今天推荐一款华为的go微服务开源框架go-chassis,华为无论在口碑上,还是在技术实力上都远甩字节百万条街,所以go-chassis这款框架很值得大家学习使用,以前关注java比较多,现在才发现go语言中居然有这么一款优秀的框架,非常值得学习应用。

Go-Chassis 是一个go语言的微服务开发框架,专注于帮你实现云原生应用。Logo的含义是开发者可以通过引入go chassis重新创造和定制自己的“轮子”(即开发框架),以此来加速云原生应用的交付速度

为什么使用 Go chassis
强大的中间件 “handler chain”:不止拥有 “filter” or “interceptor”的能力. chain中每个handler都可以拿到后面的handler的执行结果,包括业务代码的执行结果。这在很多场景下都非常实用,比如:

跟踪业务指标,并导出让prometheus收集。

跟踪关键的业务执行结果,审计这些信息。

分布式调用链追踪,end span可以等到业务执行后在handler中去完善,无需写在业务代码中。

客户端调用远程服务时,也会需要中间件进行处理。比如客户端负载均衡,请求重试

以上场景的共性是帮助你解耦通用功能与业务逻辑,解放业务开发者。业务开发者可以将这些工作交给基础设施团队,自己只专注于业务逻辑开发。基础设施团队开发出来的中间件,可作为基础能力供任给何业务团队使用。

强大的特性基线: 开箱即用的限流,请求校验,金丝雀发布,客户端负载均衡,通信保护等功能, 这些特性均面向云原生应用的开发场景。

面向交付: 在将代码编译发布后,向软件使用者交付最终应用软件包(一个或多个)时, 可以通过插件机制按需引用不同插件以满足不同用户诉求。同时还可以根据业务场景对软件按需裁剪,例如开源与商业的源码是不同的,不同用户对功能诉求不同等。

通信协议中立: 你可以将自定义的协议集成到go chassis中。应用统一特性基线,面向云原生。go chassis只需要通过配置文件来使用这些功能,减去了集成各种方案的烦恼。

轻量级内核:所有的功能都是可插拔的支持按需引入。不引入的功能就不会编译到二进制执行文件中。此外,开源三方件依赖很少。

特性
注册发现: 当前支持Apache ServiceComb,kubernetes与Istio,无论是服务端发现还是客户端注册发现都可以适配。
客户端负载均衡: consumer实时缓存依赖服务的网络信息拓扑,并直接进行负载均衡算法选择
流量标记: 定义流量特征并为他标记为一个独有的字符,便于后续根据特征进行流量管理
流量管理: 可以根据访问特征,微服务元数据,权重等规则灵活控制流量,可支持金丝雀发布,限流等场景。
韧性: 支持重试、限流、客户端负载均衡、断路器。在业务受损和请求失败时保证关键任务运行正常。
丰富的中间件: 利用handler chain,提供了多种通用中间件。比如认证鉴权、限流、重试、流量标记等。
插件化协议: 当前支持http、gRPC,支持开发者定制私有协议。
多端口管理: 对于同协议可以开放不同的端口。使用端口来划分API,面向不同调用方。
内置安全: cipher插件化设计,可以定制不同加解密算法。
遥测: 提供metrics抽象API,并且默认收集请求数、延迟等通用指标。支持prometheus、zipkin。集成opentracing-go作为标准。
后端服务: 将后端服务视为插件使用,比如配额管理、认证鉴权服务。这样便于测试并保证组件的可替换性。
原生支持配置热加载: 集成轻量级配置管理框架 go-archaius, 开发者可以轻松实现配置热加载功能的云应用。
API first: 自动生成 Open API 2.0 文档,并把它注册到Apache ServiceComb的service center。 可在统一的服务查看微服务文档。
spring cloud与service mesh统一治理: 由servicecomb-mesher, spring cloud提供。
极少的开源依赖 查看go.mod文件,已做到做少的开源库依赖,更多的扩展和插件功能请查看插件库

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!