Golang 微服务框架 - 1. Micro 介绍

8 篇文章 2 订阅
5 篇文章 2 订阅

Micro 介绍

官方网站: micro.mu
官方文档: micro.mu/docs
源码仓库: github.com/micro/micro

Micro 是一个工具集合, 通过将微服务架构抽象成一组工具。隐藏了分布式系统的复杂性,为开发人员提供了更简洁的概念。

组成

Micro 主要有三部分组成:

go-micro - 开发 sdk, 包含了 RPC 框架,服务发现, 消息订阅/ 发布 等功能.
go-plugins - micro 插件
micro - Micro 提供的管理工具, 包含了 API 网关, 仪表盘, RPC 代理等功能.

go-micro

Micro 的主要开发 SDK, 里面包含了开发所用到的常用功能模块, 主要模块之间关系如下:
组成

模块说明
services微服务, 提供了对微服务功能开发的封装, 通过它可以快速创建一个微服务.
clientRPC 客户端, 提供了诸如 服务发现 / 负载均衡 / RPC 代理和调用。以及失败时的重试 / 超时 / 上下文等功能。
serverRPC 服务端, 提供了如何实现 RPC 请求的方法, 功能逻辑主要使用这个实现.
codec数据编码 模块, 提供将程序调用数据转换成 RPC 调用数据的功能. 目前支持: json / protobuf
brokerpub/sub 模块, 提供事件 发布 / 订阅 功能, 目前支持: nats / rabbitmq / http(开发)
transport数据传输 模块, 通过抽象实现对传输协议的无缝替换。目前支持: http / rabbitmq / nats
regediry服务发现 模块, 提供 集群的服务发现功能, 目前支持: consul / etcd / memory / kubernetes
selector负载均衡 模块, 当 client 发出请求时, 它负责在多个满足条件的服务器列表中决定使用哪个服务器, 目前支持: 循环 / 哈希 / 黑名单

go-plugins

没研究…

micro 工具

micro工具 是 Micro 提供的一个管理工具, 主要分为以下几个功能:

命令说明
apiAPI 网关, 将 HTTP 请求转换为 RPC 并转发给相应的服务。
webmicro 提供了一个默认管理界面, 并且已 HTTP 方式提供了 对 srv 服务的代理。
new生成模板代码, 帮助你快速创建项目.
cli可以通过命令行来和 micro 交互.
bot机器人? 具体的还没有接触
proxy代理? 还没研究清楚
micro-api

API 网关或代理, 将 HTTP 请求转换为 RPC 并转发给相应的服务。以便使用一个入口点来访问微服务.
网关或代理

使用入门:

  • 安装
go get -u github.com/micro/micro
  • 运行
micro api

使用ACME

需要设置环境变量: MICRO_ENABLE_ACME=true

linux:
    MICRO_ENABLE_ACME=true micro api
windows:
    set MICRO_ENABLE_ACME=true && micro api

也可以指定主机白名单:
linux:
    MICRO_ENABLE_ACME=true \
    MICRO_ACME_HOSTS=example.com,api.example.com \
    micro api

开启HTTPS

需要设置环境变量: MICRO_ENABLE_TLS=true

linux:
    MICRO_ENABLE_TLS=true \
    MICRO_TLS_CERT_FILE=/path/to/cert \
    MICRO_TLS_KEY_FILE=/path/to/key \
    micro api

设置命名空间

默认名称空间为 go.micro.api, 名称空间和路径用于解析服务名称/方法

linux:
    MICRO_NAMESPACE=com.example.api micro api
micro-web

提供了一个仪表盘以及对服务的查看和查询功能. 并且提供了一个对 rpc 的反向代理.

运行流程

API:

- / (UI)      - 仪表盘
- / rpc       - RPC 代理
- / stats     - 相关统计信息
- / [service] - 查看和查询服务

使用入门:

  • 安装
go get github.com/micro/micro
  • 运行

通常

micro web

使用 ACME 加密

micro --enable_acme web
也可以指定主机白名单:
micro --enable_acme --acme_hosts=example.com,web.example.com web

开启 HTTPS

micro --enable_tls --tls_cert_file=/path/to/cert --tls_key_file=/path/to/key web

修改默认命名空间

默认名称空间为 go.micro.web , 名称空间和路径用于确定反向代理代理的目标

micro web --namespace=com.example.web

开启统计功能

可以通过 –enable_stats 标志启用统计信息, 通过 /stats 访问

micro --enable_stats web

在 Micro 架构中, 一个完整的请求流程是这样的:

api-gateway => [customer-api | customer-web ] => customer-srv

其中 api-gateway 是 有 micro 工具直接提供的, customer-(api | web | srv) 则是 micro中的开发概念.

在 micro 中, 服务分为三种类型.

名称说明
srvsrv 是标准的 RPC 服务, 也可以叫做后端服务, 开发人员通常写的就是这种类型. 在 Micro 的设想中, 这一服务永远不会面向用户,属于内部服务.
api提供 HTTP 到 RPC 的转换服务, API 网关默认情况下会将请求转发给它来处理.
webMicro 认为 web 也可以当做微服务来创建

请求处理流程

请求处理流程

  • 4
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Golang有多个微服务框架可供选择。其中一款是Go Micro,它是一款支持多种传输协议、服务发现和负载均衡的微服务框架。Go Micro提供了一系列基本服务以及相应的工具和库,包括服务注册、服务发现、RPC、消息传递等,使得微服务的开发、管理和部署变得更加方便。\[1\]另外,还有一些服务治理型的RPC框架,如Dubbo、DubboX、Motan等,它们提供了丰富的功能,包括高性能的远程调用、服务发现和治理功能,适用于大型服务的微服务化拆分和管理。然而,这些框架的缺点是语言耦合度较高,跨语言支持难度较大。\[2\]因此,有人基于Go的net/rpc框架实现了一个类似Dubbo的分布式框架,以弥补Go Micro框架在服务治理方面的不足。\[3\] #### 引用[.reference_title] - *1* [golang微服务框架](https://blog.csdn.net/weixin_42094245/article/details/130554068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [golang 微服务框架](https://blog.csdn.net/u014311799/article/details/120773991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值