框架
框架
Micro 是一个用于云原生开发的框架.
概述
Micro 解决了构建分布式系统的关键要求. 它利用微服务体系结构模式, 并提供一组作为平台构建基块的服务. Micro 处理了分布式系统的复杂性, 并提供更简单的可编程抽象.
特性
Micro 专注于开发运行时 基础设施的概念, 利用运行时作为抽象层, 在开发和基础设施的不同关注点之间创建分离, 然后为外部系统提供访问使用 Micro 运行的服务的入口点.
框架由以下特性组成:
服务器: 一种分布式系统运行时, 由构建基础设施服务组成, 该构建基块服务抽象化了底层基础结构并提供可编程抽象层. 内置了身份验证, 配置, 消息传递, 存储等.
客户端: 可以通过多个入口点访问服务. 只需编写一次服务, 然后就可以通过你了解的每一种方式访问这些服务. 一个 HTTP 接口, gRPC 代理以及命令行接口.
库: 一个 Go 库, 其让编写服务变得简单, 而不必拼凑出一行行样板代码. 默认情况下自动配置和初始化, 只需导入并快速入门.
运行时组件
运行时由以下特性组成:
客户端
客户端是进入系统的入口点. 他们通过众所周知的入口点访问你的服务.
- api: 一个 api 网关, 其使用服务发现动态请求路由充当前端单一入口点.
- cli: 通过终端访问服务. 每个优秀的开发者工具都需要一个 CLI 作为操作一个系统事实上的标准.
- proxy: 标识感知代理, 允许您访问远程环境, 而无需痛苦的配置或 vpn.
服务
服务是构成运行时的核心服务. 它们为分布式系统基础设施提供了一个可编程的抽象层.
- auth: 身份的验证和授权是任何生产就绪平台的核心要求. Micro 构建的身份验证服务用于管理服务到服务和用户到服务的验证.
- broker: 允许异步消息传递的消息代理. 微服务是事件驱动的体系架构, 应该把消息传递作为一等公民. 通过事件通知其他服务, 而无需担心响应.
- config: 在集中位置管理动态配置, 以供你的服务访问. 能够从多个源加载配置, 而且更新配置无需重启服务.
- network: 服务网络解决方案的服务下降. 卸载服务发现, 负载均衡和网络容错. Micro的网络基于本地注册表动态构建基于延迟的路由表. 其包括对多云网络的支持.
- registry: 注册表提供服务发现来查找其他服务, 存储功能丰富的元数据和终结点信息. 它是一个服务资源管理器, 允许您在运行时集中和动态地存储此类信息.
- runtime: 从代码源到运行的服务运行时, 用于管理服务的生命周期. 运行时服务可以在本地或 kubernetes 上运行, 为跨两者提供无缝抽象.
- store: 状态是任意系统的的基本要求. 我们提供了一个键值存储, 以便可以在服务之间共享简单的状态存储或持久化, 以保持微服务的无状态和水平扩展.
服务库
Micro 包括一个构建于 go-micro 之上的用于分布式系统开发的预初始化服务库. 可以联想一下 Rails 或 Spring 用于 Go 云服务. Micro 构建于 Go 语言之上, 为编写服务创建了一组强定义抽象.
通常情况下你会花很多时间来查看主函数中的样板代码或与分布式系统设计模式作斗争. Micro 尝试为您消除所有这些痛苦, 并创建了所有封装在单个服务接口中的简单的构建基块.
运行时中的每一个服务都需要导入和使用的一个包, 它就是github.com/micro/micro/v3/service. 如果你要发布消息,请使用 broker. 如果需要保留数据, 请使用 store. 或者如果你只需要对服务之间进行调用, 请使用 client.