1

你还在手撕微服务?快试试 go-zero 的微服务自动生成

 3 years ago
source link: https://studygolang.com/articles/34696
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

你还在手撕微服务?快试试 go-zero 的微服务自动生成

mob604756f0bbf4 · 大约7小时之前 · 9 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    

0. 为什么说做好微服务很难?
要想做好微服务,我们需要理解和掌握的知识点非常多,从几个维度上来说:

  • 基本功能层面
  1. 并发控制&限流,避免服务被突发流量击垮

  2. 服务注册与服务发现,确保能够动态侦测增减的节点

  3. 负载均衡,需要根据节点承受能力分发流量

  4. 超时控制,避免对已超时请求做无用功

  5. 熔断设计,快速失败,保障故障节点的恢复能力
  • 高阶功能层面
  1. 请求认证,确保每个用户只能访问自己的数据

  2. 链路追踪,用于理解整个系统和快速定位特定请求的问题

  3. 日志,用于数据收集和问题定位

  4. 可观测性,没有度量就没有优化

对于其中每一点,我们都需要用很长的篇幅来讲述其原理和实现,那么对我们后端开发者来说,要想把这些知识点都掌握并落实到业务系统里,难度是非常大的,不过我们可以依赖已经被大流量验证过的框架体系。go-zero 微服务框架就是为此而生。

另外,我们始终秉承工具大于约定和文档的理念。我们希望尽可能减少开发人员的心智负担,把精力都投入到产生业务价值的代码上,减少重复代码的编写,所以我们开发了goctl工具。

下面我通过短链微服务来演示通过go-zero快速的创建微服务的流程,走完一遍,你就会发现:原来编写微服务如此简单!

1. 什么是短链服务?
短链服务就是将长的 URL 网址,通过程序计算等方式,转换为简短的网址字符串。

写此短链服务是为了从整体上演示 go-zero 构建完整微服务的过程,算法和实现细节尽可能简化了,所以这不是一个高阶的短链服务。

2. 短链微服务架构图

你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • 这里只用了Transform RPC一个微服务,并不是说 API Gateway 只能调用一个微服务,只是为了最简演示 API Gateway 如何调用 RPC 微服务而已

  • 在真正项目里要尽可能每个微服务使用自己的数据库,数据边界要清晰

3. goctl 各层代码生成一览
所有绿色背景的功能模块是自动生成的,按需激活,红色模块是需要自己写的,也就是增加下依赖,编写业务特有逻辑,各层示意图分别如下:

API Gateway

你还在手撕微服务?快试试 go-zero 的微服务自动生成

你还在手撕微服务?快试试 go-zero 的微服务自动生成

model

你还在手撕微服务?快试试 go-zero 的微服务自动生成

下面我们来一起完整走一遍快速构建微服务的流程,Let’s Go!


有疑问加站长微信联系(非本文作者)

280

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK