微服务6大核心点
1、API Geteway
2、进程间通信
3、服务注册发现
4、事件驱动的数据管理
5、微服务部署策略
6、微服务化改造
go微服务搭建
我们的微服务技术选型为go-micro工具集+protobuf代码生成
什么是Protobuf
Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。
为什么使用Protobuf
- 序列化后体积小传输速度快带宽和速度会有优化
- 序列化速度快 是json和xml的20-100倍
- 可以跨平台、跨语言、可扩展性好
- 使用方面 proto编译器自动序列化和反序列化
- 加密性好 http传输内容抓包只能看到字节
安装go-micro
go get -u github.com/micro/micro
micro工具集相关文档 https://micro.mu/docs/cn/
安装protobuf
brew install protobuf
安装golang的protobuf代码生成器 protoc-gen-go
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
安装micro的protobuf插件 protoc-gen-micro
go get -u github.com/micro/protoc-gen-micro
服务发现与注册使用consul也可以使用etcd、etcdv3、k8s等
安装 brew install consul
启动 consul agent -dev
http://127.0.0.1:8500/ui/ 就可以看到已经注册的服务
安装go-micro的mysql驱动
go get -u github.com/go-sql-driver/mysql
我们的项目使用对数据库的orm操作,所以使用gorm,也有xorm可以使用
go get -u github.com/jinzhu/gorm
安装go-mongo驱动,因为mongo官网对于go的支持驱动还不是很好 所以使用mgo
go get gopkg.in/v2/mgo
安装go-micro的config
go get -u github.com/micro/go-config
安装go-redis驱动
go get -u github.com/go-redis/redis
安装jwt-go
go get -u github.com/dgrijalva/jwt-go
jwt是JSON Web Token的简称,它是web服务token安全验证的高效解决方案。我们用它生成token与验证token。
jwt Token属于自包含的token,它结构有三个部分组成
- Header 键值对,声明token签名算法,类型等元数据信息
- Payload 键值对,里面一般存放用户数据
- Signature 由Header+Payload+密钥加密生成
三者会被Base64-URL各自编码成字符串,再组合成xxxxx.yyyyy.zzzzz的形式。
验证的过程就是重新再把Header+Payload+密钥加密,看二者的Signature是否一致。