go-zero 成长之路—微服务电商实战系列(一、需求篇)
1. 前言
最近在研究微服务,了解到go-zero
,针对go-zero
目前社区上基于go-zero比较完整的开源项目,很遗憾好像没有。因此决定和大家一起从零开始基于go-zero
构建一个完整的接近生产级的开源项目。
该系列的设计理念是基于go-zero
构建一个基础的高并发微服务商城系统,为什么要选择这个设计理念呢?
一、是电商平台业务运行复杂多变,资源版块众多,微服务可以很好的实现业务独立运作,业务解耦。
二、更好的处理高并发的场景。
该系列为go-zero
的实战系列教程,过于基础的知识会比较少涉及,即需要具备一下基础:
- 了解
GO
语言基础语法和基本的使用 - 了解
MySQL
的使用 - 了解
Redis
的使用 - 了解
go-zero
的基本使用
2. 为什么要用go-zero?
go-zero
是一个集成了各种工程实践的 web
和 rpc
框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
go-zero
包含极简的 API
定义和生成工具 goctl
,可以根据定义的 api
文件一键生成 Go
, iOS
, Android
, Kotlin
, Dart
, TypeScript
, JavaScript
代码,并可直接运行。
使用 go-zero
的好处:
- 轻松获得支撑千万日活服务的稳定性
- 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
- 微服务治理中间件可无缝集成到其它现有框架使用
- 极简的
API
描述,一键生成各端代码 - 自动校验客户端请求参数合法性
- 大量微服务治理和并发工具包
go-zero
的其他好处,在这里我就不多说了,详情参考go-zero
官方文档。
3. 业务需求
为了接近真实场景的项目开发,项目基于真实的产品业务需求进行项目构建。
商城的业务比较多,比较复杂,所以这里并没有把全部功能都罗列出来,虽然没有完全罗列出来,但是我们会尽量的实现商城大部分的业务需求,在这个RC Build
版本中把go-zero
的核心功能和遇到的问题都一一演示出来。
如下图思维导图罗列出该系统的主要完成功能:
在这里原型图就暂时不画了。
4. 需要使用到的命令和工具
构建go-zero
项目,需要用到一些工具和命令,在这里我们提前预准备一下:
Goctl
工具 (安装方式请看go-zero
官方文档)
goctl
是go-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 为我们提供了非常强大的构建高并发服务的能力,为我们的系统保驾护航。
希望本篇文章对你有所帮助,谢谢。
转载自:https://juejin.cn/post/7137280656912384036