Skip to content

Gateway API网关

介绍

Gateway 网关服务是一个用 Go 语言开发的高性能 API 网关,旨在帮助开发者轻松管理和路由微服务请求。通过使用此网关,您可以集中处理身份验证、负载均衡、API 版本控制以及请求和响应的转换等功能。

源码仓库

https://git.apinb.com/bsm-infra/gateway

功能特性

  • 路由管理:自动发现注册的GRPC微服务,实现动态管理路由。
  • 支持协议:同时支持Grpc/Restful协议,自动映射转发。
  • 负载均衡:支持多种负载均衡策略(轮询、随机等)。
  • 身份验证:网关实现身份验证,采用不可视化的JWT机制。
  • 监控和日志:实时监控请求日志,方便问题排查和性能优化。

安装

要安装 Gateway 网关服务,请确保您已经安装了 bsm cli。:

bash
bsm install gateway

配置文件说明

etc/ 目录中,根据dev,test,prod环境不同读取不同的配置文件,您可以配置网关的基本设置,例如:

gateway_prod.yaml

yaml
Name: bsm-gateway

Open:
  - rpc
  - http
  
TLS: 
  Ca: /usr/local/bsm/cert/ca.crt
  Cert: /usr/local/bsm/cert/server.crt
  Key: /usr/local/bsm/cert/server.key

Rpc: 
  Addr: 0.0.0.0:10020 

Http: 
  Addr: 0.0.0.0:10021 

Https: 
  Addr: 0.0.0.0:10022

Etcd:
  Endpoints:
  - 127.0.0.1:2379

配置项说明

  • Open:要开通的服务。
  • TLS:数字证书,用于SSL和GRPC客户端连接。
  • Rpc/Http/Https:Rpc/Http/Https监听端口。
  • Etcd:ETCD服务配置。

启动网关

使用以下命令启动网关服务:

bash
bsm start gateway

查看启动日志 ./logs/gateway-v0.2.4.log

2024/10/04 11:27:15 [Blocks Service] gateway Starting...
2024/10/04 11:27:15 [Blocks Service] gateway Runtime Mode: test
2024/10/04 11:27:15 [Blocks Service] Service Route Prefix: service.      
2024/10/04 11:27:15 [Blocks Service] Service Anonymous Prefix: anonymous.
2024/10/04 11:27:15 [Blocks Service] gateway Service Build: Version v0.2.3, Go Version linux/amd64 golang:1.23.1-bookworm By 2024-10-03 20:56:05
2024/10/04 11:27:15 [Blocks Service] Connectd ETCD:[127.0.0.1:2379]
2024/10/04 11:27:15 [Blocks Service] gateway HTTP Proxy Addr [0.0.0.0:10021] Runing Success!
2024/10/04 11:27:15 [Blocks Service] gateway RPC Proxy Addr [0.0.0.0:10020] Runing Success!

测试网关

一旦服务启动,您可以使用 curl 或 Postman 等工具发送请求。例如:

bash
curl http://localhost:10021/ping

正常时,返回:

PONG

查看日志

网关服务会将日志存储至: /usr/local/bsm/logs/ 目录下。

Released under the MIT License.