Table of Contents generated with DocToc
功能点对应源码
功能点 | 源码地址 |
---|---|
熔断器 | 源代码 |
单机流量统计 | 源代码 |
分布式流量统计 | 源代码 |
grpc反向代理 | 源代码 |
grpc反向代理整合中间件 | 源代码 |
grpc反向代理整合负载均衡器 | 源代码 |
grpc测试服务器、客户端、grpc-gateway | 源代码 |
负载均衡器支持四种负载策略 | 源代码 |
负载均衡之主动探测 | 源代码 |
负载均衡之服务发现 | 源代码 |
中间件实现 | 源代码 |
观察者模式 | 源代码 |
限流器 | 源代码 |
测试下游服务器 | 源代码 |
测试下游服务器+服务注册 | 源代码 |
浏览器正向代理 | 源代码 |
http反向代理实现 | 源代码 |
http反向代理简单版 | 源代码 |
http2反向代理 | 源代码 |
https反向代理 | 源代码 |
http反向代理基本功能 | 源代码 |
http反向代理权限校验 | 源代码 |
tcp代理服务器实现 | 源代码 |
thrift服务器与客户端 | 源代码 |
websocket代理服务器 | 源代码 |
zookeeper基本使用 | 源代码 |
==基础功能== | ===基础功能=== |
函数是一等公民 | 源代码 |
http客户端 | 源代码 |
http服务端 | 源代码 |
tcp客户端 | 源代码 |
tcp代理 | 源代码 |
tcp服务器 | 源代码 |
udp客户端 | 源代码 |
udp服务端 | 源代码 |
tcp自定义协议获取完整报文 | 源代码 |
其他正在补充... | 其他正在补充... |
Go 微服务网关代码使用说明
这是慕课网上的实战课程《Go 微服务网关》的代码仓。这个代码仓将不仅仅包含课程的所有源代码,还将发布课程的更新相关内容,勘误信息以及计划的更多可以丰富课程的内容,如更多分享,多多练习,等等等等。
大家可以下载、运行、测试、修改。如果你发现了任何bug,或者对课程中的任何内容有意见或建议,欢迎和我联系:)
第1-8章节功能演示代码:https://github.com/e421083458/gateway_demo
完整后端项目:https://github.com/e421083458/go_gateway
完整前端项目:https://github.com/e421083458/go_gateway_view
思维导图:点击查看
项目的预览地址:http://gateway.itpp.cn:9527/
电子邮箱:[email protected](招php、golang中简历砸过来)
微信公众号:
代码帮助
运行后端代码
- 首先git clone 本项目
git clone [email protected]:e421083458/gateway_demo.git
- 确保本地环境安装了Go 1.12+版本
go version
go version go1.12.15 darwin/amd64
- 下载类库依赖
export GO111MODULE=on && export GOPROXY=https://goproxy.cn
cd gateway_demo
go mod tidy
- 在相应功能文件夹下,执行
go run main.go
即可。
运行后端项目
- 首先git clone 本项目
git clone [email protected]:e421083458/go_gateway.git
- 确保本地环境安装了Go 1.12+版本
go version
go version go1.12.15 darwin/amd64
- 下载类库依赖
export GO111MODULE=on && export GOPROXY=https://goproxy.cn
cd go_gateway
go mod tidy
- 创建 db 并导入数据
mysql -h localhost -u root -p -e "CREATE DATABASE go_gateway DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql -h localhost -u root -p go_gateway < go_gateway.sql --default-character-set=utf8
- 调整 mysql、redis 配置文件
修改 ./conf/dev/mysql.toml 和 ./conf/dev/redis.toml 为自己的环境配置。
- 运行面板、代理服务
运行管理面板配合前端项目 - 达成服务管理功能
go run main.go -config=./conf/dev/ -endpoint dashboard
运行代理服务
go run main.go -config=./conf/dev/ -endpoint server
运行前端项目
- 首先git clone 本项目
git clone [email protected]:e421083458/go_gateway_view.git
- 确保本地环境安装了nodejs
node -v
v14.21.3
- 安装依赖包和前端项目
1、执行信息清除
rm -rf node_modules
npm cache clean --force
rm -rf package-lock.json
2、设置npm加速
npm config set registry https://registry.npm.taobao.org
3、git添加一个全局属性,防止无法下载等问题
git config --global url."https://".insteadOf git://
4、确保本地环境安装了nodejs,这里版本一定要注意,最好是按照v14.21.3版本:
https://gitcode.net/mirrors/sass/node-sass?utm_source=csdn_github_accelerator 因为node-sass,要求不低于node10的版本。 而且最新Mac M1操作系统要求node的最低版本不能低于v14,所以这里最好用v14版本左右。
如果node版本不一致 mac系统如果是通过brew安装的node,需要先执行卸载
brew uninstall node
然后通过以下地址下载安装即可: https://nodejs.org/en/download/releases
5、安装过程可能会依赖本地python2的安装,安装步骤如下:
https://devpress.csdn.net/python/62f99cf7c6770329307fefe4.html
brew install pyenv
pyenv install 2.7.18
安装完毕后记得导入环境变量:
export PYTHON=/Users/yufuniu/.pyenv/versions/2.7.18/bin/python2.7
export PATH=$PATH:/Users/yufuniu/.pyenv/versions/2.7.18/bin
6、安装node依赖包
npm install
7、运行前端项目
npm run dev
前端安装错误收集:
1、需要重新安装python2,并导入环境变量
npm ERR! 2 warnings generated.
npm ERR! env: python: No such file or directory
npm ERR! make: *** [Release/sass.a] Error 127
npm ERR! gyp ERR! build error
npm ERR! gyp ERR! stack Error: make failed with exit code: 2
npm ERR! gyp ERR! stack at ChildProcess.onExit (/Users/yufuniu/FeProject/go_gateway_view/node_modules/node-gyp/lib/build.js:262:23)
npm ERR! gyp ERR! stack at ChildProcess.emit (events.js:400:28)
npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:285:12)
npm ERR! gyp ERR! System Darwin 22.4.0
npm ERR! gyp ERR! command "/usr/local/bin/node" "/Users/yufuniu/FeProject/go_gateway_view/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
npm ERR! gyp ERR! cwd /Users/yufuniu/FeProject/go_gateway_view/node_modules/node-sass
npm ERR! gyp ERR! node -v v14.21.3
npm ERR! gyp ERR! node-gyp -v v3.8.0
npm ERR! gyp ERR! not ok
npm ERR! Build failed with error code: 1
2、npm来安装依赖项冲突问题如下
yufuniu@yufunius-MBP go_gateway_view % npm install
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: [email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/webpack
npm ERR! dev webpack@"^5.88.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer webpack@"^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" from [email protected]
npm ERR! node_modules/html-webpack-plugin
npm ERR! dev html-webpack-plugin@"3.2.0" from the root project
可以尝试执行如下来解决:
npm install webpack@4 --save-dev
npm install --force
3、不清楚执行原理情况下,不要使用yarn进行安装,不然可能引入其他问题。
4、如有其他问题可反复执行1-7步骤,寻找问题原因,或者咨询chat-gpt寻找其他原因。
后端goland编辑器参考
-
用 goland 打开项目目录
-
设置 goland 支持 go mod
- Preferences-> Go-> Go Modules(vgo)
- 勾选 Enable Go Modules(vgo)
- proxy 设置:https://goproxy.cn
-
在相应文件夹下的main方法中, 点击
run go build
即可。
vscode编辑器设置参考
-
用 vscode 打开前端项目目录
-
安装格式化插件 ESLint、Vetur、vue-beautify
代码部署
说明一下: go_gateway_demo_view 与 go_gateway_demo 是视频时开发演示的项目。
实际放置到 github上是 go_gateway_view 与 go_gateway
实体机部署
1、每个项目独立部署
- 前端项目一个端口
- 接口项目一个端口
- 使用nginx将后端接口设置到跟前端同域下访问
server {
listen 8882;
server_name localhost;
root /Users/niuyufu/VueProjects/go_gateway_view/dist;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.html?$args;
}
location /prod-api/ {
proxy_pass http://127.0.0.1:8880/;
}
}
- 代理服务器独立部署
- 后端项目启动脚本,所有后端只需要一个脚本了:vim onekeyupdate.sh
2、前后端合并部署
- 前端打包dist放到后端同一项目中
- 后端设置: vim http_proxy_router/route.go
router.Static("/dist", "./dist")
- 启动接口项目
- 启动代理服务器,所有项目只需要一个脚本了: vim onekeyupdate.sh
k8s部署
- 创建docker文件 vim dockerfile_dashboard
- 创建docker镜像:
docker build -f dockerfile_dashboard -t dockerfile_dashboard .
- 运行测试docker镜像:
docker run -it --rm --name go_gateteway_dashboard go_gateteway_dashboard
- 创建交叉编译脚本,解决build太慢问题 vim docker_build.sh
- 编写服务编排文件,vim k8s_dashboard.yaml
- 启动服务
kubectl apply -f k8s_dashboard.yaml
kubectl apply -f k8s_server.yaml
- 查看所有部署
kubectl get all
后端环境搭建及编辑器使用 参考文档
go环境安装介绍 http://docscn.studygolang.com/doc/install
go 基础语法学习 http://tour.studygolang.com/welcome/1
10分钟学会go mod(类库管理器)使用 https://blog.csdn.net/e421083458/article/details/89762113
goland 设置支持go mod https://blog.csdn.net/l7l1l0l/article/details/102491573
goland 基本使用介绍 https://www.cnblogs.com/happy-king/p/9191356.html
前端环境搭建及编辑器使用参考文档
nodejs 安装 https://nodejs.org/zh-cn/download/
效率翻倍的 VS Code 使用指南 https://mp.weixin.qq.com/s/QpbeEgdefw2iaT8qaxkFDA
Kubernetes安装
通过Minikube快速搭建一个本地的Kubernetes单节点环境 https://m.imooc.com/article/23785