相关背景知识Go-Micro
Go Micro 是一个基于 Go 语言撰写的、用于建立微服务的基础框架,提供了分布式开发所需的核心组件,包括 RPC 和丑闻驱动通讯等。
它的设计美学是「可拔插」的插件化构架,其核心专注于提供底层的插口定义跟基础工具,这些底层插口可以兼容各类实现。例如 Go Micro 默认通过 consul 进行服务发觉,通过 HTTP 协议进行通讯,通过 protobuf 和 json 进行编解码,以便你可以基于这种拆箱提供的组件迅速启动,但是假如还要的话,你也可以通过符合底层插口定义的其他组件替换默认组件,比如通过 nacos, etcd 或 zookeeper 进行服务发觉,这只是插件化构架的优势所在:不需要更改任何底层代码即可实现下层组件的替换。
Go-Micro绪论
Micro是一个微服务工具包,包括:
API
提供并将 HTTP 请求路由至相应微服务的 API 网关。它充当微服务访问的单一入口,将HTTP 请求转化为 RPC 并转发给相应的服务也可以用作反向代理。
Sidecar
go-micro 的 HTTP 接口版本,这是将非 Go 应用程序集成至微环境中的一种模式。
CLI
go-micro 是组件化的框架,每一个基础功能都是一个 interface ,方便扩充。同时,组件又是分层的,上层基于上层功能向下提供服务,整体构成 go-micro 框架。go-micro框架的构成组件有:
Registry
提供服务发觉模式:解析服务名子到服务地址。目前支持的注册中心有 consul、etcd、 zookeeper、dns、gossip 等。
Selector
选择器通过选择提供负载均衡体系。当客户端向服务器发出恳求时,它将首先查询服务的注册表。这一般会返回一个表示服务的正在运行的节点列表。选择器将选择哪些节点中的一个适于查询。多次读取选择器将容许使用平衡算法。目前的办法是循环法,随机哈希跟黑名单。
Broker
发布跟订阅的可插入插口,服务之间基于消息中间件的异步通讯模式,默认使用http模式,线上一般使用消息中间件,如 Nats、Kafka、RabbitMQ 和 http(用于开发)。
Transport
通过点对点传输消息的可拔插插口。目前的实现是 http,rabbitmq 和 nats 。通过提供这些具象,运输可以无缝地换出。
Codec
服务之间消息的编码/解码。
Plugins
提供 go-micro 的 micro/go-plugins 插件。
Server
快速开始Go-Micro服务端安装 protoc
Protobuf 是 Protocol Buffers 的简称,它是 Google 公司开发的一种数据描述语言,并于 2008 年对外开源。Protobuf 刚开源时的定位类似于 XML、JSON 等数据描述语言,通过附送工具生成代码并实现将结构化数据序列化的功能。我们还要借助 protoc 生成服务端代码。
新建 golang 项目(服务端)
1、在项目根目录下争创 proto 文件夹,用来储存 protobuf 文件
2、在 proto 文件夹下争创 greeter.proto 文件
5、在 proto 目录下,生成了 pb.go 以及 pb.micro.go 两个文件