首页 > 代码库 > micro 架构组件介绍

micro 架构组件介绍

Micro 是什么
  Micro 是微服务生态系统中专注于提供产品、服务和解决方案的一款软件,使得在现代软件企业中起到创新驱动。它计划是可以将任何微服务相关的资源与即将使用此款软件的公司结合起来,利用此技术来处理自己的业务。从早期原型的搭建直到大规模生产环境部署应用。
  Micro 可以理解为它就是一个微服务平台,提供微服务的方便构建,官方说法也叫做:一个开源的微服务工具箱
  Micro 为构建和管理微服务提供核心要求,其中它主要通过 Go 语言编程来提供一系列的库和工具,如果想要通过其他语言实现可通过 http 来使用,我们可以使用 Micro 提供的跨语言代理服务:sidecar
  micro 对应 github 地址:https://github.com/micro/micro
官方翻译:
    micro 的目的是为了简化分布式系统开发。它的核心是应该有足够的能力为任何想要开发微服务的人提供便利。当你有数以百计的服务规模时,micro 提供必要的工具来管理微服务的环境
    如果你打算使用 golang 来开发对应的服务那么就 check out 对应的项目名为:go-micro,如果是 java 语言开发就需要 check out 项目名为:ja-micro;其他语言如何使用可以查看:examples/sidecar
    micro 工具箱有以下组件构成:
    1. go-micro --> 一个用 golang 语言开发的可插入的RPC框架。它提供了所需要的库从而实现服务发现,客户端负载均衡、编码、同步和异步通信。
    2. sidecar   -->  是语言无关的RPC代理,可以实现go-micro作为HTTP端点的所有功能。 golang 是构建微服务很好的语言,当然你也可以使用其他语言,因此,sidecar 提供了一种方法将你的其他应用程序集成到micro世界。
    3. api   --> 这个 API 是一个 HTTP 网关服务和请求路由到适当的微服务。它作为一个单一入口点可以被用作一个反向代理或转化为RPC的HTTP请求。
    4. web    --> 一个web界面和反向代理的micro web应用程序。我们认为,web app 应该可以作为微服务,因此它可以被当做微服务中首先启动的组件。它的行为表现的像 api 中的反向代理,当然也包括支持web sockets。
    5. cli    --> 一个直接的命令行接口与微服务进行交互。当然,有时候我们不想直接连接到服务注册中心它还允许我们利用 sidecar 作为一个代理来进行交互
    6. bot(机器人) --> Hubot风格机器人,在你通过松弛微服务平台,并可以与之交互,HipChat,XMPP等等。它提供了通过消息传递cli的特性。可以添加额外的命令自动共同行动的任务。
go-micro
    它的实现是使用 golang 语言开发的一个可插入的 RPC 框架用于构建微服务。它提供了创建使用所需的基本特征、发现和交流服务。任何好的微服务架构都是从寻址服务发现、同步和异步通信开始。
    它包括以下功能特点:
      1. Registry - Client side service discovery
          注册 - 客户端服务发现
      2. Transport - Synchronous communication
          通讯 - 同步通信
      3. Broker - Asynchronous comunication
          中间代理 - 异步通信
      4. Selector - Node filtering and load balancing
          选择器 - 节点过滤和负载均衡
      5. Codec - Message encoding/decoding
       编码解码器 - 消息编码/解码
      6. Server - RPC server building on the above
       服务端 - 在这之上建立的 RPC 服务端
      7. Client - RPC client building on the above
       客户端 - 在这之上建立的 RPC 客户端

    go-micro 不同于其他大部分的库,它是可插拔式的体系结构。这使得具体实现和后台系统每个package 中选择交换不同的插件。例如,go-micro 默认的服务注册机制是 Consul,但这可以很容易地换成例如 etcd、zookeeper 或其他任何你选择实现的插件。我们可以通过以下地址找到一家实现好的插件列表:
    github.com/micro/go-plugins
    go-micro 作为可插入系统,它的价值是能够选择平台用于支持微服务而不需要修改任何代码。 go-micro 不需要修改任何代码,只需要引入一个插件,你就完成了。
    doc:
    1. 查看 go-micro 的 redeme,它给我们提供了如何去写、运行以及查询一个服务的用法:https://github.com/micro/go-micro
    2. 还有 greeter 示例代码:github.com/micro/examples/greeter
    3. micro 所有服务的示例查看:github.com/micro/examples
    4. go-micro 的 plugins github地址:https://github.com/micro/go-plugins

micro sidecar
  The micro sidecar is a language agnostic proxy for building highly available and fault tolerant microservices.
  这个 micro sidecar 是一个跨语言的代理,目的是用来构建高可用和容错能力的微服务。它类似于 Netflix 的 Prana 或者 是 Buoyant 的 RPC 代理 Linkerd



micro 架构组件介绍