Coder Social home page Coder Social logo

dmhao / hgw Goto Github PK

View Code? Open in Web Editor NEW
107.0 9.0 41.0 13.24 MB

hgw是由gateway网关服务、manager控制服务构成的一套轻量级网关系统。目前支持http/https协议的服务控制

License: MIT License

Go 100.00%
gateway gateway-manager http-proxy api-gateway microservices go golang gateway-microservice http http-server

hgw's Introduction

hgw

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

开发初衷

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

功能特性

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

测试地址

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

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

域名配置

hgw

路径配置 请求拦截

hgw-path

强制熔断

hgw-breaker

访问统计

domain-metrics

安装

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>]

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>]

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

hgw's People

Contributors

dmhao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hgw's Issues

你好, 我测试你的项目发现一个问题。想请教一下

我是在本机测试安装测试的, 但是 “*监听的域名”我是使用的部署机器的内网地址:
http://192.168.0.50:9091, 然后“*负载均衡”我是选择随机填写了2个域名: http://www.baidu.comhttp://www.qq.com, 其他什么都没有配置。

我在浏览器上面输入, http://192.168.0.50:9091, 显示“无法访问此网站,拒绝了我们的连接请求。”错误。
难道不能使用非80端口吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.