Go 让 Apache APISIX 如虎添翼

本文介绍了如何使用 Go 语言开发 Apache APISIX 插件,通过 Go Runner SDK,开发者可以利用 Go 生态为 Apache APISIX 添加功能。详细步骤包括安装 Go Runner、开发插件,以及在开发和运行环境中设置 Apache APISIX。Apache APISIX 利用插件系统支持多语言,使得功能拓展更加灵活。
摘要由CSDN通过智能技术生成

为什么是 Go

Apache APISIX 允许用户通过插件的方式来拓展功能,如鉴权、限流、请求改写等核心功能都是通过插件的方式实现的。虽然 Apache APISIX 核心代码是使用 Lua 编写的,但是 Apache APISIX 支持多语言开发插件,比如 Go 、Java。

这篇文章将详细讲解如何用 Go 来开发 Apache APISIX 插件。通过拥抱 Go 的生态圈,为 Apache APISIX 开创一片新天地,希望 Go 能让 Apache APISIX 如虎添翼!

安装

采用库的方式来使用 Go Runner,apisix-go-plugin-runner 中的 cmd/go-runner 官方给出的例子,展示该如何使用 Go Runner SDK。未来也会支持通过 Go Plugin 的机制加载预先编译好的插件。

开发

使用 Go Runner SDK 进行开发

$ tree cmd/go-runner
cmd/go-runner
├── main.go
├── main_test.go
├── plugins
│   ├── say.go
│   └── say_test.go
└── version.go

上面是官方示例的目录结构。main.go 是入口,其中最关键的部分在于:

cfg := runner.RunnerConfig{}
...
runner.Run(cfg)

RunnerConfig 可以用来控制日志等级和日志输出位置。

runner.Run 会让应用监听目标位置,接收请求并执行注册好的插件。应用会一直处于这一状态直到退出。

打开 plugins/say.go

func init() {
  err := plugin.RegisterPlugin(&Say{})
  if err != nil {
     log.Fatalf("failed to register plugin say: %s", err)
  } 
}

由于 main.go 导入了 plugins 包,

import (
  ...
  _ "github.com/apache/apisix-go-plugin-runner/c
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

API7.ai 技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值