概述

未匹配的标注
本文档最新版为 3.x,旧版本可能放弃维护,推荐阅读最新版!

框架

前言: Go Micro 是一个微服务开发的框架

概述

Go Micro 为分布式系统开发 (包括 RPC 和事件驱动通信) 提供了核心要求. micro 的理念是具有可插拔架构的默认实践. 我们提供默认值, 让您快速入门, 但一切都可以轻松置换.

特性

Go Micro 抽象了分布式系统的详细信息. 以下是主要功能.

  • 服务发现 - 自动服务注册和名称解析. 服务发现是微服务开发的核心. 当服务 A 需要与服务 B 说话时, 它需要该服务的位置. 默认发现机制是多播 DNS (mdns), 这是一个零配置的发现系统.
  • 负载平衡 - 基于服务发现构建的客户端负载平衡. 一旦我们拥有服务任意数量的实例的地址, 我们现在需要一种方法来决定要路由到哪个节点. 我们使用随机哈希负载平衡来跨服务提供均匀分布, 并在出现问题时重试其他节点.
  • 消息编码 - 基于内容类型的动态消息编码. 客户端和服务器将使用编解码器以及内容类型来无缝编码和解码 Go 类型. 可以编码和从不同的客户端发送任何种类的消息. 默认情况下, 客户端和服务器处理此情况. 默认情况下, 这包括 protobuf 和 json.
  • 请求/响应 - 基于 RPC 的请求/响应, 支持双向流式处理. 我们为同步通信提供抽象. 对服务发出的请求将自动解析, 负载平衡, 拨号和流式传输. 默认传输为 gRPC
  • 异步消息 - PubSub 是作为异步通信和事件驱动架构的一等公民而构建的. 事件通知是微服务开发的核心模式. 默认的消息系统是嵌入式 NATS 服务器.
  • 可插拔接口- Go Micro 为每个分布式系统抽象使用 Go 接口. 因此这些接口是可插拔的, 并允许 Go Micro 与运行时无关. 您可以插入任何基础技术. 在 github.com/micro/go-plugins 中查找插件.

开始

依赖

默认情况下, Go Micro 会使用原型. 因此我们可以编写生成样板代码的代码, 并提供有效的线格式, 以便在服务之间来回传输数据.

我们还需要某种形式的服务发现, 以便将服务名称解析为其地址以及元数据和终结点信息. 有关详细信息, 请参阅下文.

Protobuf

您需要安装 protobuf 以生成 API 接口的代码:

发现

服务发现用于将服务名称解析为地址. 默认情况下, 我们使用多播 DNS 提供零配置的发现系统. 这是在大多数操作系统上是内置的. 如果您需要更具弹性和多主机的东西, 请使用 etcd.

Etcd

etcd 可用作替代服务发现系统.

  • 下载并运行 etdc
  • 传递给任何命令或环境变量 --registry=etcd``MICRO_REGISTRY=etcd
MICRO_REGISTRY=etcd go run main.go

服务发现是可插拔的. 可在 micro/go-plugins 仓库中寻到 consul, kubernetes, zookeeper 和更多插件.

安装

Go Micro 是基于 Go 的开发的框架. 您可以使用 go 工具链轻松获取此功能.

在服务中导入 go-micro

import "github.com/micro/go-micro/v2"

我们提供发布标签, 并建议坚持使用最新的稳定版本. 使用 go 模块将启用此功能.

# enable go modules
export GO111MODULE=on
# initialise go modules in your app
go mod init
# now go get
go get ./...

编写服务

可以从检出 hello world 的例子开始


本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
taadis
讨论数量: 0
发起讨论 只看当前版本


暂无话题~