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

mob604756f0bbf4 · · 371 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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 的微服务自动生成

RPC

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

model

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

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


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

本文来自:51CTO博客

感谢作者:mob604756f0bbf4

查看原文:你还在手撕微服务?快试试 go-zero 的微服务自动生成

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

371 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传