嗯,有的同学说,阿里云k8s好用是好用,可是我不会写or不想写Dockerfile,不会写k8s的yaml or 不想写,没关系,goctl说放开它,让我来
生成 Dockerfile
$ goctl docker -go user.go 复制代码
生成k8s yaml
$ goctl kube deploy -name user-api -namespace blog -image user:v1 -o user.yaml -port 2233复制代码
所以,就是这么简单
访问流程
app/web/pc 透过防火墙,首先访问到阿里云的负载均衡SLB,同时SLB可以将你的后端服务器ip隐藏起来,同时可以预防DDOS***,虽然有额度的,但是好过没有~~,然后SLB访问到前面的nginx,nginx作为代理使用,k8s中的service通过 nodeport方式暴露出来在nignx中代理到该service,同时在nginx中上报日志到kafka,然后api可以在etcd中拿到多个rpc节点,调用多个后端rpc服务,rpc负责跟db交互、或者调用其他rpc获取数据(当然api、rpc之间是通过etcd动态发现的)返回给api,api就是聚合数据,然后层层返回到客户端。
整体架构都是高可用高可用
项目设计
项目地址:github.com/Mikaelemmmm…
go的项目比较灵活不像java已经形成统一标准化了,所以对于不同项目的结构都不一样,我的做法是如下:
整个项目使用的一个大仓,项目fishtwo根目录下:
app : 应用内部程序
build:构建、以及脚本等
lib:应用程序用到的内部库
app下分为3个模块:
- gateway:api服务
- services: rpc服务
- jobs:日常要处理的任务(这个可以使用
go-zero
作者的go-queue
,测试了下很好用,哈哈,后面搞好也会写进来)
下一篇我们来看看:
- 怎么改造
gateway 服务
? - 怎么改造
rpc 服务
? jobs
怎么定义?怎么和项目结合?
未完待续~~~
框架地址
github.com/tal-tech/go…
欢迎使用 go-zero 并 star 支持我们 ????
本文来自:51CTO博客
感谢作者:wx607fee5b9d0e6
查看原文:再见go-micro!企业项目迁移go-zero全攻略(一)
相关阅读 >>
曹大谈 dubbo mesh : 在 mosn 中玩转 dubbo-Go
更多相关阅读请进入《Go》频道 >>

Go语言101
一个与时俱进的Go编程知识库。