将原项目的micro的v2升到v4,服务发现使用etcd,支持熔断机制,token验证,网关和各模块之间的rpc通信等
- 用户注册登录 ( jwt-go鉴权 )
- 新增/删除/修改/查询 备忘录
Golang V1.18
- Gin
- Gorm
- mysql
- go-micro
- protobuf
- grpc
- amqp
- ini
- hystrix
- jwt-go
- crypto
micro-todolist/
├── app // 各个微服务
│ ├── gateway // 网关
│ ├── task // 任务模块微服务
│ └── user // 用户模块微服务
├── bin // 编译后的二进制文件模块
├── config // 配置文件
├── consts // 定义的常量
├── doc // 接口文档
├── idl // protoc文件
│ └── pb // 放置生成的pb文件
├── logs // 放置打印日志模块
├── pkg // 各种包
│ ├── ctl // 用户操作
│ ├── e // 统一错误状态码
│ ├── logger // 日志
│ └── util // 各种工具、JWT等等..
└── types // 定义各种结构体
gateway/
├── cmd // 启动入口
├── http // HTTP请求头
├── handler // 视图层
├── logs // 放置打印日志模块
├── middleware // 中间件
├── router // http 路由模块
├── rpc // rpc 调用
└── wrappers // 熔断
task/
├── cmd // 启动入口
├── service // 业务服务
├── repository // 持久层
│ ├── db // 视图层
│ │ ├── dao // 对数据库进行操作
│ │ └── model // 定义数据库的模型
│ └── mq // 放置 mq
├── script // 监听 mq 的脚本
└── service // 服务
config/config.ini
文件,直接将 config.ini.example-->config.ini
就可以了
conf/config.ini 文件
[service]
AppMode = debug
HttpPort = :4000
[mysql]
Db = mysql
DbHost = 127.0.0.1
DbPort = 3306
DbUser = micro_todolist
DbPassWord = micro_todolist
DbName = micro_todolist
Charset = utf8mb4
[rabbitmq]
RabbitMQ = amqp
RabbitMQUser = guest
RabbitMQPassWord = guest
RabbitMQHost = localhost
RabbitMQPort = 5672
[etcd]
EtcdHost = localhost
EtcdPort = 2379
[server]
UserServiceAddress = 127.0.0.1:8082
TaskServiceAddress = 127.0.0.1:8083
[redis]
RedisHost = localhost
RedisPort = 6379
RedisPassword = micro_todolist
- 启动环境
make env-up
- 运行服务
make run
注意:
- 保证rabbitMQ开启状态
- 保证etcd开启状态
- 依次执行各模块下的main.go文件
如果出错一定要注意打开etcd的keeper查看服务是否注册到etcd中!!
打开postman,点击导入
效果