Go-zero 微服务入门学习-概述篇
1、简介:
go-zero(收录于 CNCF 云原生技术全景图:https://landscape.cncf.io/?selected=go-zero)是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。
go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。
使用 go-zero 的好处:
- 轻松获得支撑千万日活服务的稳定性
- 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
- 微服务治理中间件可无缝集成到其它现有框架使用
- 极简的 API 描述,一键生成各端代码
- 自动校验客户端请求参数合法性
- 大量微服务治理和并发工具包
2、特点
go-zero 是一个集成了各种工程实践的包含 web 和 rpc 框架,有如下主要特点:
- 强大的工具支持,尽可能少的代码编写
- 极简的接口
- 完全兼容 net/http
- 支持中间件,方便扩展
- 高性能
- 面向故障编程,弹性设计
- 内建服务发现、负载均衡
- 内建限流、熔断、降载,且自动触发,自动恢复
- API 参数自动校验
- 超时级联控制
- 自动缓存控制
- 链路跟踪、统计报警等
- 高并发支撑,稳定保障了疫情期间每天的流量洪峰
3、选择go-zero原因
go-zero 为提供了许多高并发场景下的实用工具,如:
- 为了降低接口耗时往往需要并发的请求依赖的服务,这个时候可以使用 mapreduce 并行的处理请求;
- 面对海量请求为了降低Redis压力和提高响应时间,可以使用 collection 构建本地缓存;
- 避免用户连续请求造成服务压力可以使用 limit 做用户级别的限流等等。
好的框架能够给项目开发带来事半功倍的效果,Go-zero的简洁易用性与内置的开箱即用的工具和服务治理能力助力构建一个高并发高可靠的系统。
4、需求
为了更加贴近真实的项目开发,项目会基于真实的产品需求进行构建。商城是接触比较多而又比较复杂的系统,所以决定通过构建商城系统来学习如何基于 go-zero 构建高并发系统。实现一个 mvp版本,在mvp版本中把 go-zero 的核心功能和构建高并发商城系统的核心点演示。
如下思维导图列出了该电商系统主要实现的功能:
从以上思维导图可以看出整个电商系统功能还是比较多的,根据业务职能做如下微服务的划分:
- 商品服务(product) - 商品的添加、信息查询、库存管理等功能
- 购物车服务(cart) - 购物车的增删改查
- 订单服务(order) - 生成订单,订单管理
- 支付服务(pay) - 通过调用第三方支付实现支付功能
- 账号服务(user) - 用户信息、等级、封禁、地址管理
- 推荐服务(recommend) - 首页商品推荐
- 评论服务(reply) - 商品的评论功能、评论的回复功能