http 网关,反向代理

本贴最后更新于 1938 天前,其中的信息可能已经时移俗易

闲来无事,写了一个简单的 http 网关系统,下面是该网关的一些介绍。

hgw

hgw 是一套支持 http/https 协议的网关系统,由 gateway 服务、manager 服务构成。

开发初衷

产品开发过程中版本多次迭代,缺乏服务管理,通过网关系统的负载均衡转发 Api 请求
可以清晰了解到各个模块的请求情况,对接口细节进行细致管理,提高服务的可用性。
有了网关还可以增加一些参数绑定、路径替换、权限验证、copy 请求数据等功能,方便我们开发调试。

功能特性

  • 反向代理
  • 黑名单
  • 访问日志
  • 限流
  • 熔断 【错误熔断、超时熔断、强制熔断】
  • 负载均衡 【轮询、随机、权重】
  • 请求路径过滤、路径级私有负载均衡
  • 访问统计 【访问量、访问时长】
  • 支持 https, 动态设置 https 证书 【https 证书热加载,动态更新】
  • 访问拷贝 【复制请求数据、返回数据】

测试地址

网关服务:https://test.articlechain.cn/
控制服务:http://test.articlechain.cn:8080/admin/ 账号:admin 密码:admin

尽量新增数据,请不要删除测试数据

访问统计

domain-metrics

证书在线修改

cert-setting

域名配置

domain-setting

请求路径配置

path-setting

请求拦截的列表

request-copy-list

请求详情数据

request-copy-info

安装

1. 获取 hgw 代码

go get github.com/dmhao/hgw  

gateway 文件夹是网关服务的核心代码

manager 文件夹是控制服务的核心代码

2. 编译 gateway

go build gateway.go  

3. 编译 manager

go build manager.go  

4. 运行 gateway

[root@localhost gateway]# ./gateway -h  
usage: gateway --ser-name=SER-NAME --addr=ADDR --etcd=ETCD []  
  
Flags:  
 -h, --help               Show context-sensitive help (also try --help-long and --help-man). --ser-name=SER-NAME  SerName: gateway listen addr --addr=ADDR          Addr: gateway listen addr --tls-addr=""        Tls-Addr: gateway tls listen addr --etcd=ETCD          Addr: etcd server addr --u=""               Username: etcd username --p=""               Password: etcd password --version            Show application version.```  
  
##### 参数  
--ser-name 【gateway服务的识别名称】  
  
--addr 【gateway http服务的监听地址】  
  
--tls-addr 【gateway https服务的监听地址】  
  
--etcd 【连接etcd服务的地址】  
  
--u 【连接etcd服务的账户】  
  
--p 【连接etcd服务的密码】  
  

./gateway --ser-name=gateway-1 --addr=0.0.0.0:80 --etcd=127.0.0.1:2379

  
#### 5. 运行manager  

[root@localhost manager]# ./manager -h
usage: manager --addr=ADDR --etcd=ETCD []

Flags:
-h, --help Show context-sensitive help (also try --help-long and --help-man). --addr=ADDR gateway listen addr --etcd=ETCD etcd server addr --u="" Username: etcd username --p="" Password: etcd password```

参数

--addr 【manager 服务的监听地址】

--etcd 【连接 etcd 服务的地址】

--u 【连接 etcd 服务的账户】

--p 【连接 etcd 服务的密码】

./manager --addr=0.0.0.0:8080 --etcd=127.0.0.1:2379  

6. 使用

访问 manager 监听的服务地址 +/admin/ 管理 gateway 服务。

: 自己搭建服务,第一次访问请先访问 /admin/init.html 初始化管理账号密码。

感谢

x-admin 后台管理 html 模板

gin Golang Web 框架

go-chi Golang Router

jwt-go Golang Jwt

logrus Golang Log

hystrix-go Golang CircuitBreaker

  • Gateway
    5 引用 • 2 回帖
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    491 引用 • 1383 回帖 • 370 关注
  • http-gateway
    1 引用 • 2 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    你的是文章直接博客同步到黑客派里的吗

  • 其他回帖
  • someone

    我看你写的这些文章里,有不少都是搭建很多第三方的环境,也看你有写一些代码,感觉你还是很厉害的,也为自己感到羞愧,感觉很多时间都浪费掉了