go-micro v2运开实践-行文初衷

写在前头#

考虑到近期耗费了不少时间在微服务开发上,在趟了很多坑后获得了一些自己的理解和实践。为了巩固近期学习到的知识,以及为后来者作些许贡献,打算利用空闲时间来书写一写我这段时间内从零到一的实现方案。作为一名有实用原则的程序员,行文中我可能并不会对概念方面进行详细讲解。只希望能抛砖引玉让大家对整个方案的实现有所理解,点到点之间做好链接,从而达到摸清整个微服务的轮廓的目的。源码地址

阅读本文所需知识#

  • 具备 golang 基础,了解 grpc
  • 对微服务概念有所理解,使用过 go-micro,至少能完成 go-micro 入门案例
  • 使用过 docker,docker-compose, 熟悉 docker 的基本操作
  • 会使用 linux

开发工具#

以下是作者使用到的开发工具,可以根据自身实际情况进行调整

  • win10
  • docker-desktop
  • goland
  • mysqlWorkbeanch
  • vmware

项目案例#

为了展示教学,我们展示不考虑编写过于复杂的业务。但为了对于知识点有所覆盖,我们选用比较经典的电商项目进行编码。主要划分为三个模块,用户服务,商品服务,订单服务 。方便我们展示在微服务中如何实现定时调度,分布式事务,链路追踪,服务治理,分布式日志,异步消息等方案。

微服务框架选择#

这里我们选择使用 go-micro v2 版本,至于为什么使用 go-micro,因为它除了提供基本的 RPC 远程调用外,还提供了需要实现微服务的各种基础支持,包括注册中心、服务发现、负载均衡、API 网关、异步消息队列、多种通信协议和数据序列化格式等,不需要开发者额外编写代码。还可以基于 go-micro 的插件机制,对这些功能的驱动进行替换。如注册中心,可以基于热拔插机制替换成 etcd,consul,k8s, 异步消息驱动可以替换成市面上比较流行的各种中间件,如 NATS,RabbitMq。相对来说 go-micro 是一款灵活拓展性高且功能完备的开发框架。

为什么不是 micro v3?#

至作者行文当天,micro v3 依然处于商业化探索阶段,大部分功能开发测试当中。且 v3 版本除了一些思想上的延续,与 v2 基本上不再相同。v2 已经独立出一个仓库维护了,且 micro 官网大部分文档已经下架更新中,导致学习框架的成本更高。所以这里选择 v2,因为 v2 的使用在 github 仓库中依然有大部分的使用案例。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1

网上有教程是基于 1.x,但新版本是 2.x,完全不一样了,而且似乎官方文档也没有及时更新,Micro 3.0 推荐叫做 M3O,微服务框架成为了云原生开发平台。 我试用过,但个人感觉不太好用,且文档又很少。

2年前 评论