基础概念
微服务与微服务架构区别
微服务架构是一种设计方法,微服务是使用这个方法而设计的一个应用。
微服务框架是将复杂的系统使用组件化的方式进行拆分,并使用轻量级通讯方式进行整合的一种设计方法
我们使用micro作为我们的架构
微服务架构的缺点
- 复杂性逐渐变高
- 技术债务逐渐上升
- 维护成本大
- 持续交付周期长
- 可扩展性差
# 微服务的几个重要组件
跨语言和跨平台的通信格式 protobuf
通信协议 gRPC
调度管理服务发现 consul
微服务框架 micro
部署 docker
# protobuf格式介绍
protobuf是 google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式。所以很适合用做数据存储和作 为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的协议格式即同一prot件被编译成不同的 语言版本,加入到各自的工程中去。这样不同语言就可以解析其他语言通过 protobu序列化的数据。目前官网提 供了C++、Python、JAVA、GO等语言的支持。 google在2008年7月7号将其作为开源项目对外公布。
# 数据交互xml、json、 protobu格式比较
1、json:-般的web项目中,最流行的主要还是json。因为浏览器对于json数据支持非常好,有很多内建的函数支 持 2、xm:在 webservice中应用最为广泛,但是相比于json,它的数据更加冗余,因为需要成对的闭合标签Njso 用了键值对的方式,不仅压缩了一定的数据空间,同时也具有可读性 3、 protobuf是后起之秀,是谷歌开源的一种数据格式,适合高性能,对响应速度有要求的数据传输场景。因为 profobuf是二进制数据格式,需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数 据
相对于其它 protobu更具有优势 1:序列化后体积相比son和XML很小,适合网络传输 2:支持跨平台多语言 3:消息格式升级和兼容性还不错 4:序列化反序列化速度很快,快于son的处理速速
# protobuf安装
git clone https://github.com/protocolbuffers/protobuf
sudo apt install autoconf automake libtool curl make g++ unzip libffi-dev -y
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
protoc -h
2
3
4
5
6
7
8
获取proto包
// 设置国内代理
go env -w GOPROXY=https://goproxy.cn,direct
go get -v -u github.com/golang/protobuf/proto
2
3
安装protoc-gen-go插件
go get -v -u github.com/golang/protobuf/protoc-gen-go