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,微服务框架成为了云原生开发平台。 我试用过,但个人感觉不太好用,且文档又很少。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!