go-zero 成长之路—微服务电商实战系列(一、需求篇)

3,106 阅读4分钟

1. 前言

最近在研究微服务,了解到go-zero,针对go-zero目前社区上基于go-zero比较完整的开源项目,很遗憾好像没有。因此决定和大家一起从零开始基于go-zero构建一个完整的接近生产级的开源项目。

该系列的设计理念是基于go-zero构建一个基础的高并发微服务商城系统,为什么要选择这个设计理念呢? 一、是电商平台业务运行复杂多变,资源版块众多,微服务可以很好的实现业务独立运作,业务解耦。 二、更好的处理高并发的场景。

该系列为go-zero的实战系列教程,过于基础的知识会比较少涉及,即需要具备一下基础:

  • 了解GO语言基础语法和基本的使用
  • 了解MySQL的使用
  • 了解Redis的使用
  • 了解go-zero的基本使用

2. 为什么要用go-zero?

go-zero 是一个集成了各种工程实践的 webrpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。

go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。

使用 go-zero 的好处:

  • 轻松获得支撑千万日活服务的稳定性
  • 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
  • 微服务治理中间件可无缝集成到其它现有框架使用
  • 极简的 API 描述,一键生成各端代码
  • 自动校验客户端请求参数合法性
  • 大量微服务治理和并发工具包

go-zero 的其他好处,在这里我就不多说了,详情参考go-zero官方文档。

3. 业务需求

为了接近真实场景的项目开发,项目基于真实的产品业务需求进行项目构建。

商城的业务比较多,比较复杂,所以这里并没有把全部功能都罗列出来,虽然没有完全罗列出来,但是我们会尽量的实现商城大部分的业务需求,在这个RC Build版本中把go-zero的核心功能和遇到的问题都一一演示出来。

如下图思维导图罗列出该系统的主要完成功能:

微服务商城.png

在这里原型图就暂时不画了。

4. 需要使用到的命令和工具

构建go-zero项目,需要用到一些工具和命令,在这里我们提前预准备一下:

  • Goctl 工具 (安装方式请看 go-zero 官方文档)

goctlgo-zero微服务框架下的代码生成工具。使用 goctl 可显著提升开发效率,让开发人员将时间重点放在业务开发上,其功能有:api服务生成rpc服务生成model代码生成模板管理等。

  • protoc & protoc-gen-go (安装方式请看 go-zero 官方文档)

protoc是一款用C++编写的工具,其可以将proto文件翻译为指定语言的代码。在go-zero的微服务中,我们采用grpc进行服务间的通信,而grpc的编写就需要用到protoc和翻译成go语言rpc stub代码的插件protoc-gen-go

5. 结束语

本篇文章首先介绍了该系列由来的背景以及我们为什么会选择构建高并发商城系统这个主题,接着介绍了我们需要构建的高并发商城系统的主要功能点以及主要的开发工具依赖。

构建一个高并发的系统并不是一件容易的事情,涉及的知识点非常多,但我相信只要我们一起努力就一定能克服这些困难,让自己的技术能力更上一层楼。好在我们可以站在巨人的肩膀上,go-zero 为我们提供了非常强大的构建高并发服务的能力,为我们的系统保驾护航。

希望本篇文章对你有所帮助,谢谢。 micro-shop