Golang Gateway API 搭建教程
随着微服务的兴起,行业里出现了非常多优秀的微服务网关框架,今天教大家搭建一套国人,用Golang写的微服务网关框架。
这里啰嗦一句,可能到今天还有人不理解什么是微服务,为什么要用微服务。目前网上相对比较模糊,没有精确的定义,但大家的意思都差不多,这里个人通俗描述,就是小项目发展到大项目过程中,出于已维护,与稳定性等考虑,将一个整体项目分为多个微小服务。
微服务网关的作用是在用户第一个网关服务器,你按照业务服务相关需求,给网关分流,相比云主机厂商提供的负载均衡器,强大在于你可以根据自己业务去分流,同时还以可以实现鉴权、校验、聚合、缓存等自定义服务,而云主机的负载均衡器只是一个简单按照流量给你负载均衡请求,不具有自定义编程性质。
接下来教如何安装,以及注意事项。
地址:
https://github.com/fagongzi/gateway
功能:
- 流量控制
- 熔断
- 负载均衡
- 服务发现
- 插件机制
- 路由(分流,复制流量)
- API 聚合
- API 参数校验
- API 访问控制(黑白名单)
- API 默认返回值
- API 定制返回值
- API 结果Cache
- JWT Authorization
- API Metric导入Prometheus
- API 失败重试
- 后端server的健康检查
- 开放管理API(GRPC、Restful)
- 支持websocket
- 支持在线迁移数据
1.下载
2.编译
cd $GOPATH/src/github.com/fagongzi/gateway/cmd/proxy
go build -o proxy ./... cd $GOPATH/src/github.com/fagongzi/gateway/cmd/api
go build -o apiserver ./...
3.ECTD安装
Etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。
etcd github地址:
https://github.com/etcd-io/etcd
当然,你也可以用命令行安装
1、安装
yum install etcd
2、修改配置文件,主要是地址,如果不是很懂,可以看下etcd官方文档
vim /etc/etcd/etcd.conf
# [member] ETCD_NAME="k8s_master_ip_name"
#范例:
etcd1
ETCD_DATA_DIR="/work/etcd"
ETCD_LISTEN_PEER_URLS="http://k8s_master_ip:2380"
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://k8s_master_ip:2379"
3、启动
systemctl daemon-reload
systemctl enable etcd.service
systemctl start etcd.service
4、测试
IP与端口改为配置的ip地址,如果没有使用,建议不要随意变动端口
curl http://127.0.0.1:2379/version
如果返回{"etcdserver":"3.3.2","etcdcluster":"3.3.0"} 就是安装成功了
基础软件都安装好了,我们就准备最低三台机器。
运行环境
我们以三台etcd、一台ApiServer,三台Proxy的环境为例
环境信息
| 组件 | 环境 | 说明 |
|---|---|---|
| etcd集群环境 | 192.168.1.12 | 配置服务器 |
| Proxy | 192.168.1.13 | 代理服务器 |
| ApiServer | 192.168.1.14 | 路由配置接口服务器 |
1.启动 ApiServer服务
启动ApiServer服务,看到以下截图就对了。

2.启动代理服务
看到以下截图就对了

3.添加配置
服务都启动后,我们添加配置路由。
启动Proxy
./proxy --addr=192.168.1.200:80 --addr-rpc=192.168.1.200:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
./proxy --addr=192.168.1.201:80 --addr-rpc=192.168.1.201:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
./proxy --addr=192.168.1.202:80 --addr-rpc=192.168.1.202:9091 --addr-store=etcd://192.168.1.100:2379,192.168.1.101:2379,192.168.1.102:2379 --namespace=test
用户的API接入地址可以为:192.168.1.201:80、192.168.1.201:80、192.168.1.202:80其中任意一个
如果能访问下你后面代理的接口内容,表示成功。
如果觉得配置服务器API,命令行麻烦,可以下载WEB UI的管理控制台。
下载地址:
Golang Gateway API 搭建教程的更多相关文章
- spring cloud 2.x版本 Gateway路由网关教程
前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...
- windows下vue.js开发环境搭建教程
这篇文章主要为大家详细介绍了windows下vue.js开发环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中 ...
- vn.trader的Ubuntu运行环境搭建教程
作者:量衍投资 转载请注明来源:维恩的派(www.vnpie.com) 准备Ubuntu 建议使用一个新安装干净的Ubuntu环境(如果你一定要使用老环境也行,万一不幸掉坑后再回到这步就好),我这里使 ...
- C中级 MariaDB Connector/C API 编程教程
引言 - 环境搭建 首先开始环境搭建. 主要在Window 10 + Visual Studio 2015 上构建使用 mariadb connector/c api 进行数据操作开发. 为什么选择在 ...
- 转---详细的Android开发环境搭建教程
五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程 引言 在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立A ...
- spring cloud 2.x版本 Gateway动态路由教程
摘要 本文采用的Spring cloud为2.1.8RELEASE,version=Greenwich.SR3 本文基于前面的几篇Spring cloud Gateway文章的实现. 参考 Gatew ...
- .Netcore 2.0 Ocelot Api网关教程(2)- 路由
.Netcore 2.0 Ocelot Api网关教程(1) 路由介绍 上一篇文章搭建了一个简单的Api网关,可以实现简单的Api路由,本文介绍一下路由,即配置文件中ReRoutes,ReRoutes ...
- EOS主网搭建教程--&&--搭建节点--&&--搭建mongodb数据库
EOS主网搭建教程: 1.git clone https://github.com/EOS-Mainnet/eos.git --recursive 2.cd eos 3.git tag (查看有哪些分 ...
- Chevereto免费图床搭建教程 | vps搭建免费图床教程
Chevereto免费图床搭建教程 | vps搭建免费图床教程 本文首发于:https://chens.life/How-to-build-a-free-image-bed.html 前言 自从有了个 ...
随机推荐
- js复选框实现全选、全不选、反选
复选框为checkbox对象 通过input就可以将一个简单的复选框呈现在页面上 <input type="checkbox" /> 要实现的大概就是这样一个页面 思路 ...
- [Java复习] 并发 JUC
Q1:为什么非常高的并发请求下AtomicLong的性能会有很大影响?有没有什么更好的替代方案? 虽然AtomicLong使用CAS但是CAS失败后还是通过无限循环的自旋锁不断尝试的,在高并发下N多线 ...
- rally使用tempest进行测试
安装 通过Rally进行Tempest测试,执行如下命令创建tempest实例,Rally会自动同步tempest代码至本地: rally verify create-verifier --name ...
- Google Protocol Buffers 快速入门(带生成C#源码的方法)
Google Protocol Buffers是google出品的一个协议生成工具,特点就是跨平台,效率高,速度快,对我们自己的程序定义和使用私有协议很有帮助. Protocol Buffers入门: ...
- openstack核心组件--nova计算服务(3)
一.nova介绍: Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova ...
- 【转】ffluos编译
FluffOS是在MUDOS基础上更新完成的.进行了许多新功能和bug修复. 针对LPC有很好的兼容性,如果你的MUD运行MUDOS V22+版本,可以很容易运行在fluffos上. 系统环境: Cn ...
- 线程结束,GetExitCodeThread后结束值一直STILL_ACTIVE,259的问题
最近在用VC++编写一个视觉检测系统,其中开的线程比较多.知道线程什么时候结束是很重要的一个问题.其中用到了GetExitCodeThread()函数.函数原型如下: BOOL GetExitCode ...
- zabbix3.0升级到4.0
升级步鄹: 3.0->3.2 1.停服务 service zabbix-server stop 2.备份配置文件 #cp /etc/zabbix/zabbix_server.conf /data ...
- 【Adobe Air程序开发】用Adobe Flex3开发AIR应用程序–入门指南
1 安装Adobe AIR 运行时,和java的JVM类似.Adobe AIR 运行时允许在桌面运行AIR应用程序,脱离游览器的束缚.下载安装文件http://labs.adobe.com/downl ...
- ZOJ Problem Set - 1007
1.参考这个吧,一道数学公式题,还没看懂...好像需要把公式变形出来,先略过. http://dengbaoleng.iteye.com/blog/1504940