{"id":19989891,"url":"https://github.com/dmhao/hgw","last_synced_at":"2025-05-04T09:33:48.061Z","repository":{"id":57483272,"uuid":"159262730","full_name":"dmhao/hgw","owner":"dmhao","description":"hgw是由gateway网关服务、manager控制服务构成的一套轻量级网关系统。目前支持http/https协议的服务控制","archived":false,"fork":false,"pushed_at":"2018-12-07T08:35:21.000Z","size":13553,"stargazers_count":107,"open_issues_count":0,"forks_count":41,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-06-20T00:37:27.321Z","etag":null,"topics":["api-gateway","gateway","gateway-manager","gateway-microservice","go","golang","http","http-proxy","http-server","microservices"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dmhao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-27T02:19:08.000Z","updated_at":"2024-01-15T01:48:55.000Z","dependencies_parsed_at":"2022-08-27T20:02:27.985Z","dependency_job_id":null,"html_url":"https://github.com/dmhao/hgw","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmhao%2Fhgw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmhao%2Fhgw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmhao%2Fhgw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmhao%2Fhgw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmhao","download_url":"https://codeload.github.com/dmhao/hgw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224391390,"owners_count":17303609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-gateway","gateway","gateway-manager","gateway-microservice","go","golang","http","http-proxy","http-server","microservices"],"created_at":"2024-11-13T04:50:45.652Z","updated_at":"2024-11-13T04:50:49.700Z","avatar_url":"https://github.com/dmhao.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# hgw\n\nhgw 是一套支持http/https协议的网关系统，由gateway服务、manager服务构成。\n\n### 开发初衷\n产品开发过程中版本多次迭代，缺乏服务管理，通过网关系统的负载均衡转发Api请求\n可以清晰了解到各个模块的请求情况，对接口细节进行细致管理，提高服务的可用性。\n有了网关还可以增加一些参数绑定、路径替换、权限验证、copy请求数据等功能，方便我们开发调试。\n\n### 功能特性\n+ 反向代理 \n+ 黑名单\n+ 访问日志\n+ 限流\n+ 熔断 【错误熔断、超时熔断、强制熔断】\n+ 负载均衡 【轮询、随机、权重】\n+ 请求路径过滤、路径级私有负载均衡\n+ 访问统计 【访问量、访问时长】\n+ 支持https, 动态设置https证书 【https证书热加载，动态更新】\n+ 访问拷贝 【复制请求数据、返回数据】\n#### 测试地址\n网关服务：https://test.articlechain.cn/\n控制服务：http://test.articlechain.cn:8080/admin/  账号：admin 密码：admin\n\n\u003cfont color=red\u003e尽量新增数据，请不要删除测试数据\u003c/font\u003e\n\n#### 域名配置\n![hgw](https://github.com/dmhao/hgw/blob/master/img/hgw.gif)\n\n#### 路径配置 请求拦截\n![hgw-path](https://github.com/dmhao/hgw/blob/master/img/hgw-path.gif)\n\n#### 强制熔断\n![hgw-breaker](https://github.com/dmhao/hgw/blob/master/img/hgw-breaker.gif)\n\n#### 访问统计\n![domain-metrics](https://github.com/dmhao/hgw/blob/master/img/metrics.png)\n\n## 安装\n#### 1. 获取hgw代码\n```\ngo get github.com/dmhao/hgw\n```\n\ngateway文件夹是网关服务的核心代码\n\nmanager文件夹是控制服务的核心代码\n\n\n#### 2. 编译gateway\n```\ngo build gateway.go\n```\n\n#### 3. 编译manager\n```\ngo build manager.go\n```\n\n#### 4. 运行gateway\n```\n[root@localhost gateway]# ./gateway -h\nusage: gateway --ser-name=SER-NAME --addr=ADDR --etcd=ETCD [\u003cflags\u003e]\n\nFlags:\n  -h, --help               Show context-sensitive help (also try --help-long and --help-man).\n      --ser-name=SER-NAME  SerName: gateway listen addr\n      --addr=ADDR          Addr: gateway listen addr\n      --tls-addr=\"\"        Tls-Addr: gateway tls listen addr\n      --etcd=ETCD          Addr: etcd server addr\n      --u=\"\"               Username: etcd username\n      --p=\"\"               Password: etcd password\n      --version            Show application version.\n```\n\n##### 参数\n--ser-name 【gateway服务的识别名称】\n\n--addr 【gateway http服务的监听地址】\n\n--tls-addr 【gateway https服务的监听地址】\n\n--etcd 【连接etcd服务的地址】\n\n--u 【连接etcd服务的账户】\n\n--p 【连接etcd服务的密码】\n\n```\n./gateway --ser-name=gateway-1 --addr=0.0.0.0:80 --etcd=127.0.0.1:2379\n```\n\n#### 5. 运行manager\n```\n[root@localhost manager]# ./manager -h\nusage: manager --addr=ADDR --etcd=ETCD [\u003cflags\u003e]\n\nFlags:\n  -h, --help       Show context-sensitive help (also try --help-long and --help-man).\n      --addr=ADDR  gateway listen addr\n      --etcd=ETCD  etcd server addr\n      --u=\"\"       Username: etcd username\n      --p=\"\"       Password: etcd password\n```\n##### 参数\n--addr 【manager 服务的监听地址】\n\n--etcd 【连接etcd服务的地址】\n\n--u 【连接etcd服务的账户】\n\n--p 【连接etcd服务的密码】\n\n```\n./manager --addr=0.0.0.0:8080 --etcd=127.0.0.1:2379\n```\n\n#### 6. 使用\n访问 manager监听的服务地址+/admin/ 管理gateway服务。\n\n\u003cfont color=\"red\"\u003e**注**\u003c/font\u003e： 自己搭建服务，第一次访问请先访问 /admin/init.html 初始化管理账号密码。\n\n\n## 感谢\n[x-admin](http://x.xuebingsi.com/) 后台管理html模板\n\n[gin](https://github.com/gin-gonic/gin) Golang Web框架\n\n[go-chi](https://github.com/go-chi/chi) Golang Router\n\n[jwt-go](https://github.com/dgrijalva/jwt-go) Golang Jwt\n\n[logrus](https://github.com/sirupsen/logrus) Golang Log\n\n[hystrix-go](https://github.com/afex/hystrix-go) Golang CircuitBreaker","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmhao%2Fhgw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmhao%2Fhgw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmhao%2Fhgw/lists"}