微服务开发框架 - go-micro

Go Micro提供了分布式系统开发的核心要求,包括RPC和事件驱动的通信。 Micro 的理念是可靠的默认设备,具有可插拔的架构。 我们提供默认设置以帮助您快速入门,但一切都可以轻松换出。

功能特性

  • 服务发现: 自动服务注册与名称解析。服务发现是微服务开发的核心。当服务A需要与服务B通话时,它需要该服务的位置。默认发现机制是多播DNS(mdns),一种零配置系统。你可以选择使用 SWIM 协议为 p2p 网络设置 Gossip,或使用 consul 为弹性云原生设置设置。

  • 负载平衡: 基于服务发现构建的客户端负载平衡。一旦我们获得了服务的任意数量实例的地址,我们现在需要一种方法来决定要路由到哪个节点。我们使用随机散列负载平衡来提供跨服务的均匀分布,并在出现问题时重试不同的节点。

  • 消息编码: 基于内容类型的动态消息编码。客户端和服务器将使用编解码器和内容类型为你无缝编码和解码Go类型。可以编码任何种类的消息并从不同的客户端发送。客户端和服务器默认处理此问题。这包括默认的proto-rpc和json-rpc。

  • 请求/响应: 基于RPC的请求/响应,支持双向流。我们提供了同步通信的抽象。对服务的请求将自动解决,负载平衡,拨号和流式传输。启用tls时,默认传输为 http/1.1 或 http2。

  • Async Messaging: PubSub是异步通信和事件驱动架构的一流公民。事件通知是微服务开发的核心模式。启用tls时,默认消息传递是点对点http / 1.1或http2。

  • 可插拔接口: Go Micro 为每个分布式系统抽象使用Go接口。因此,这些接口是可插拔的,并允许Go Micro与运行时无关。您可以插入任何基础技术。在github.com/micro/go-plugins中找到插件