基于Go语言的微服务开发框架Go Micro,支持身份验证、数据存储、消息编码、RPC客户端或服务器、异步消息传递、事件流等多样化功能。
简单来说,Go Micro是一个用于分布式系统开发的框架。该项目在GitHub上已经积累了18.5k的Star。
具体而言,Go Micro提供了分布式系统开发的核心需求,包括远程过程调用RPC和事件驱动的通信。该项目的理念是具有可插拔架构的合理默认设置。
创建者提供了供你快速开始的默认设置,并且一切都可以轻松地更换。
Go Micro抽象出了分布式系统的细节,具有如下主要功能:
身份验证,作为「一等公民」(first class citizen)内置其中。身份验证和授权通过为每个服务提供身份和证书来实现安全的零信任网络。这还包括基于规则的访问控制。
动态配置,从任何地方都可以加载和热重载动态配置。配置接口提供了一种从任何来源(如环境变量、文件)加载应用级配置的方法。你可以合并来源,甚至定义回退。
数据存储,提供了一个用于读取、写入和删除记录的简单数据存储接口。默认对内存、文件和CockroachDB的支持。状态持久性成为原型设计以外的核心需求,Go Micro希望将它在框架中构建。
服务发现,支持自动服务注册和名称解析。服务发现是微服务开发的核心功能。当服务A需要与服务B通话时,需要知道后者的位置。默认发现机制是多播DNS(mDNS),它是一个零配置网络(ZeroConf)系统。
消息编码,支持基于内容类型的消息编码。客户端和服务器将使用编解码器(codecs)和内容类型无缝地为你编码和解码Go类型。任何种类的消息都可以被编码,并从不同的客户端发出。默认情况下客户端和服务器会处理这一任务,默认包括protobuf和json。
RPC客户端和服务器,基于RPC的请求/响应支持了双向流。创建者为异步通信提供了一个抽象。服务请求将被自动解析、负载平衡、拨号和流处理。
异步消息传递,PubSub作为异步通信和事件驱动架构的一等公民内置其中。事件通知是微服务开发中的核心模式。默认消息传递系统是HTTP事件消息代理。
事件流,PubSub非常适合异步通知,但对于更高级的用例来说,事件流是首选。事件流提供了持久存储。Go Micro支持了NATS Jetstream和Redis流。
更多功能详见原项目。
项目地址:GitHub - asim/go-micro: A Go microservices framework
开源协议:Apache-2.0 license