文档首页 > > 开发指南> Go SDK> 开发指导> 处理链

处理链

分享
更新时间: 2019/08/26 GMT+08:00

概述

处理链中包含一系列handler, 在一次调用中可以通过扩展调用链的方式来插入定制的处理逻辑,如何开发新的Handler,可参考Handler,本章节只讨论如何配置框架已经实现的handler。

配置

cse:
  handler:
    Consumer:
      {name}:{handler_names}
    Provider:
      {name}:{handler_names}

Consumer表示,当你要调用别的服务时会通过的处理链。

Provider表示,当你被别人调用人会通过的处理链。

支持在Consumer和Provider中定义多个不同的chain name,如果handler配置为空,那么框架会自动为Consumer与Provider加载默认的handlers,chain的名称为default。

  • Consumer的默认chain中的handler说明
    表1 Consumer的默认chain

    名称

    功能

    ratelimiter-consumer

    客户端限流

    router

    路由策略

    loadbalance

    负载均衡

    tracing-consumer

    客户端调用链追踪

    transport

    各协议客户端处理请求,如果你使用自定义处理链配置,那么结尾处必须加入这个handler

  • Provider的默认chain中的handler说明
    表2 Provider的默认chain

    名称

    功能

    ratelimiter-provider

    服务端限流

    tracing-provider

    服务端调用链追踪

API

用户也可自定义默认处理链内的handler都有哪些。

//SetDefaultConsumerChains your custom chain map for Consumer,if there is no config, this default chain will take affect
funcSetDefaultConsumerChains(cmap[string]string)
//SetDefaultProviderChains set your custom chain map for Provider,if there is no config, this default chain will take affect
funcSetDefaultProviderChains(cmap[string]string)

你可以检查handler.go中的内置处理程序列表,const部分显示处理程序列表。

const (
    //consumer chain
    Transport           = "transport"
    Loadbalance         = "loadbalance"
    BizkeeperConsumer   = "bizkeeper-consumer"
    TracingConsumer     = "tracing-consumer"
    RatelimiterConsumer = "ratelimiter-consumer"
    Router              = "router"
    FaultInject         = "fault-inject"

    //provider chain
    RatelimiterProvider = "ratelimiter-provider"
    TracingProvider     = "tracing-provider"
    BizkeeperProvider   = "bizkeeper-provider"
)

示例

handler:
  chain:
    Consumer:
      default: bizkeeper-consumer, router, loadbalance, ratelimiter-consumer,transport
      custom: some-handler
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区