error errorreporter( 二 )




error errorreporter

文章插图



从架构上看,Kitex 主要分为两部分 。其中 Kitex Core 是它的的主干逻辑,定义了框架的层次结构、接口,还有接口的默认实现 。最上面 client 和 Server 是对用户暴露的,包含 Option 配置以及其初始化的逻辑;中间的 Modules 模块是框架治理层面的功能模块和交互元信息,而 Remote 模块是与对端交互的模块,包括编解码和网络通信 。另一部分 Kitex Tool 则是对应生成代码相关的实现,生成代码工具就是编译这个包得到的,里面包括 IDL 解析、校验、代码生成、插件支持、自更新等 。


从功能与特性这两个角度来看,主要可以分为以下七个方面:


error errorreporter

文章插图



高性能:网络传输模块 Kitex 默认集成了自研的网络库 Netpoll,性能相较使用 Go net 有显著优势;除了网络库带来的性能收益,Kitex 对 Thrift 编解码也做了深度优化 。关于性能数据可参考 Kitex-benchmark 。


扩展性:Kitex 设计上做了模块划分,提供了较多的扩展接口以及默认的扩展实现,使用者也可以根据需要自行定制扩展,更多扩展能力参见 CloudWeGo 官网文档 。Kitex 也并未耦合 Netpoll,开发者也可以选择其它网络库扩展使用 。


消息协议:RPC 消息协议默认支持 Thrift、Kitex Protobuf、gRPC 。Thrift 支持 Buffered 和 Framed 二进制协议;Kitex Protobuf 是 Kitex 自定义的 Protobuf 消息协议,协议格式类似 Thrift;gRPC 是对 gRPC 消息协议的支持,可以与 gRPC 互通 。除此之外,使用者也可以扩展自己的消息协议 。


传输协议:传输协议封装消息协议进行 RPC 互通,传输协议可以额外透传元信息,用于服务治理,Kitex 支持的传输协议有 TTHeader、HTTP2 。TTHeader 可以和 Thrift、Kitex Protobuf 结合使用;HTTP2 目前主要是结合 gRPC 协议使用,后续也会支持 Thrift 。


多消息类型:支持 PingPong、Oneway、双向 Streaming 。其中 Oneway 目前只对 Thrift 协议支持,双向 Streaming 只对 gRPC 支持,后续会考虑支持 Thrift 的双向 Streaming 。


服务治理:支持服务注册/发现、负载均衡、熔断、限流、重试、监控、链路跟踪、日志、诊断等服务治理模块,大部分均已提供默认扩展,使用者可选择集成 。


Kitex 内置代码生成工具,可支持生成 Thrift、Protobuf 以及脚手架代码 。原生的 Thrift 代码由本次一起开源的 Thriftgo 生成,Kitex 对 Thrift 的优化由 Kitex Tool 作为插件支持 。Protobuf 代码由 Kitex 作为官方 Protoc 插件生成,目前暂未单独支持 Protobuf IDL 的解析和代码生成 。


简单总结一下,CloudWeGo 不仅仅是一个开源的项目,也是一个真实的、超大规模的企业级最佳实践 。它源自企业,所以天生就适合在企业内部落地;它源自开源,最终也拥抱了开源,从 Go 基础库,到 Go 网络库和 Thrift 编译器,再到上层的服务框架,以及框架拥有的所有企业级治理能力,均对外开放开源 。
error errorreporter

文章插图

CloudWeGo 的微服务治理

微服务架构是当前软件开发领域的技术热点 。大系统终究会拆解成小系统,“合久必分,分而治之”,传统行业的系统架构大多都是庞大的单体架构,微服务是架构发展过程中一个非常自然的演变状态 。


那么,什么是微服务治理呢?众说纷纭,业界没有达成一个共识 。广义上,服务治理关注服务生命周期相关要素,包括服务的架构设计、应用发布、注册发现、流量管理,监控与可观测性、故障定位、安全性等;又或将其分为架构治理、研发治理、测试治理、运维治理、管理治理 。狭义上,服务治理技术包括服务注册与发现、可观测性、流量管理、安全、控制 。后续主要是从狭义上服务治理的角度出发,展开介绍 CloudWeGo-Kitex 相关的思考和探索 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。