-
Notifications
You must be signed in to change notification settings - Fork 112
zh_userguide
Motan是高性能的RPC服务化框架,Motan提供了强大服务治理功能以及优秀的扩展能力。Motan-go是Motan的golang版本实现,除了提供了client与server与其他语言版本进行交互外,Motan-go还提供了agent为不同语言使用Motan框架进行跨语言服务治理提供了支持。
Motan-go的基本交互方式请参考Motan架构概述
Motan-go的各模块的作用与Motan java版本的基本一致, 但是实现方式与java版本略有不同,其中transport部分在client端与server端分别由endpoint
和server
两个模块实现。
Motan-go的代码结构按package进行主要功能模块进行划分,各package功能可以参考GoDoc文档。
强大的扩展能力是Motan框架的特点之一,Motan-go通过扩展注册机制来支持自定义扩展,通过自定义扩展可以方便适配不同的系统或增加定制化功能。 Motan-go的各类扩展实现是通过ExtentionFactory来管理,Motan-go给出了默认实现类DefaultExtentionFactory,DefaultExtentionFactory提供了各类扩展实现类的注册与获取机制,并会提前注册所有的扩展实现。在实际使用client、server、agent时会默认使用DefaultExtentionFactory,用户在只需要注册自定义实现即可,这是推荐的扩展方式。
默认使用的DefaultExtentionFactory也可以使用自定义的ExtentionFactory实现来进行替换,但需要对所有扩展的使用方式比较了解,不建议一般用户通过此种方式进行扩展。
Motan-go对各主要功能都提供了可扩展能力,并提供了多种默认实现可供选择。主要扩展点如下:
- Registry: 不同注册中心扩展。目前支持zookeeper和direct,后续会支持其他注册中心,例如consul等
- Filter: filter是在请求处理中对reques和response进行处理的机制,提供endpointFilter和clusterFilter两个插入点。使用filter进行功能扩展是推荐的扩展方式。默认提供accesslog、metric等filter。
- HaStrategy: 高可用策略扩展点,默认提供failover。后续将提供backup request等策略
- LoadBalance: 负载均衡策略扩展点。默认实现random、roundrobin。同时给出了支持跨group权重处理的warper实现类,方便不同LB策略支持按权重跨group负载均衡
- EndPoint: endpoint为调用远程server的扩展点,可以理解为点对点直连场景下的client。默认提供motan协议实现与grpc实现。
- Provider: 具体rpc服务的实现类扩展,可以是调用本地代码实现,也可以是跨进程实现。默认提供本地服务实现调用与CGI跨进程调用。
- Server: 不同类型的server实现,一般与协议绑定。默认提供MotanServer实现。
- MessageHandler: 针对默认Server实现MotanServer的不同类型消息处理扩展。
- Serialization: 可以进行不同类型序列化实现扩展。默认支持simple序列化。