• Stars
    star
    247
  • Rank 164,117 (Top 4 %)
  • Language
    Go
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

微服务网关后端配套代码

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中简历砸过来)

微信公众号:

image

代码帮助

运行后端代码

  • 首先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