简介: 本文主要介绍如何使用 Golang 生态中的微服务框架 Go-Micro(v2) 集成 Nacos 进行服务注册与发现。(Go-Micro 目前已经是 v3 版本,但由于某些原因项目已经更名为 nitro 具体原因大家可以去 github 中查看)
相关背景知识
Go-Micro
Go Micro 是一个基于 Go 语言编写的、用于构建微服务的基础框架,提供了分布式开发所需的核心组件,包括 RPC 和事件驱动通信等。
它的设计哲学是「可插拔」的插件化架构,其核心专注于提供底层的接口定义和基础工具,这些底层接口可以兼容各种实现。例如 Go Micro 默认通过 consul 进行服务发现,通过 HTTP 协议进行通信,通过 protobuf 和 json 进行编解码,以便你可以基于这些开箱提供的组件快速启动,但是如果需要的话,你也可以通过符合底层接口定义的其他组件替换默认组件,比如通过 nacos, etcd 或 zookeeper 进行服务发现,这也是插件化架构的优势所在:不需要修改任何底层代码即可实现上层组件的替换。
Go-Micro概述
Micro是一个微服务工具包,包括:
API
提供并将 HTTP 请求路由到相应微服务的 API 网关。它充当微服务访问的单一入口,将HTTP 请求转换为 RPC 并转发给相应的服务也可以用作反向代理。
Web
UI 是 go-micro 的 web 版本,允许通过 UI 交互访问环境。在未来,它也将是一种聚合微型 Web 服务的方式。它包含一种 Web 应用程序的代理方式。将 /[name] 通过注册表路由到相应的服务。Web UI 将前缀“go.micro.web。”(可以配置)添加到名称中,在注册表中查找它,然后将进行反向代理。
Sidecar
go-micro 的 HTTP 接口版本,这是将非 Go 应用程序集成到微环境中的一种方式。
Bot
Hubot 风格的 bot,位于您的微服务平台中,可以通过 Slack,HipChat,XMPP 等进行交互。它通过消息传递提供 CLI 的功能。可以添加其他命令来自动执行常见的操作任务。
CLI
一个直接的命令行界面来与你的微服务进行交互,它提供了一种观察和与运行环境交互的方式。
Go-Micro 组件
用于在 Go 中编写微服务的插件式 RPC 框架。它提供了用于服务发现,客户端负载平衡,编码,同步和异步通信库。go-micro 是一个独立的库,可以独立于其他工具包使用。