大家可以发现,Go越来越流行,其一是目前云计算领域基本是使用Go作为底层开发语言;其二是随着区块链的火爆,引申出了其背后很多开源项目,很多都是使用Go语言进行开发;其三就是在微服务方面,Go也展示很大的优势性。那么微服务是什么,如何将其与Go做一个整合,来提升整体开发生产效率,下面会进行详细讲解。
什么是微服务
图 1
图 1 所示是最传统的一个应用软件架构,最顶层是 load balancer ,下面布局很多cuisine,这些cuisine共享一个数据库。
图 2
图 2 是微服务的架构图,由图中我们可以看出整体架构分布的改变,一个服务被分成A、B、C三种服务,每个服务有自己的数据库,前面都会有一个 API Gateway将其三者链接起来。显而易见,微服务的难点也就在服务的划分上,通俗点讲就是如何服务其中的微服务。
这里大概介绍了微服务的基本概念,但是微服务并非良药,很多架构并非刚开始就会采用微服务的方式,后续会对这方面做更加详细的介绍。
GRPC介绍
gRPC是由Google主导开发的RPC框架,使用HTTP/2协议并用Protobuf作为序列化工具。与REST不同的是,REST是基于HTTP1.1 JOSN格式的一种轻量级服务模式,那么从这两方面来对比gRPC与REST就比较容易了。
首先可以从JOSN与Protobuf之间的差别入手进行对比,Protobuf很难读,它是面向机器的文字格式,而JOSN则是面向人的;Protobuf相对于JOSN而言编解码速度都非常快;最后就是兼容性,现在基本所有浏览器都支持JOSN格式,而Protobuf目前仅部分语言支持。