做好微服务的难题,被rpc框架go-zero解决,免你五年功

Posted 运维随笔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了做好微服务的难题,被rpc框架go-zero解决,免你五年功相关的知识,希望对你有一定的参考价值。

需求

我们需要一款可以支持业务成长的框架。比如产品运营初期,因为运营成本太高,需求验证并不需要采取微服务架构,一款单体应用足以应付。随着业务发展,微服务成为必要,此时我们又希望不进行太多的代码编写工作,能够柔性升级。

而想做好微服务,我们需要理解和掌握的知识点非常多,可以从几个维度上来说:

基本功能层面

  • 并发控制&限流,避免服务被突发流量击垮

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

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

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

  • 熔断设计,快速失败,保障故障节点的恢复能力

高阶功能层面

  • 请求认证,确保每个用户只能访问自己的数据

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

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

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

go-zero微服务框架就是为此而生。


go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。此架构还包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, ios, android, Kotlin, Dart, TypeScript, javascript 代码,并可直接运行。


官方网站

https://github.com/tal-tech/go-zero


优势

  • 轻松获得支撑千万日活服务的稳定性

  • 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码

  • 微服务治理中间件可无缝集成到其它现有框架使用

  • 极简的 API 描述,一键生成各端代码

  • 自动校验客户端请求参数合法性

  • 大量微服务治理和并发工具包


特点

  • 强大的工具支持,尽可能少的代码编写

  • 极简的接口

  • 完全兼容 net/http

  • 支持中间件,方便扩展

  • 高性能

  • 面向故障编程,弹性设计

  • 内建服务发现、负载均衡

  • 内建限流、熔断、降载,且自动触发,自动恢复

  • API 参数自动校验

  • 超时级联控制

  • 自动缓存控制

  • 链路跟踪、统计报警等

  • 高并发支撑,稳定保障了疫情期间每天的流量洪峰

如下图,从多个层面保障了整体服务的高可用:


总结

go-zero 的确香,因为它有一个goctl 的工具,可以自动的把代码结构全部的生成好,我们就不再去纠结,目录结构怎么去组织?规范有哪些?并发和熔断机制,服务发现等一系列问题也都不用考虑,只需专心的实现业务就好。go-zero都已帮您实现了,这些没有个五年的架构能力是不好实现的。


以上是关于做好微服务的难题,被rpc框架go-zero解决,免你五年功的主要内容,如果未能解决你的问题,请参考以下文章

go-zero微服务框架rpc的使用

一文读懂云原生 go-zero 微服务框架

企业级 RPC 框架 zRPC

如何让gRPC具备微服务治理能力

基于 gRPC 的服务注册与发现和负载均衡的原理与实战

基于gRPC的注册发现与负载均衡的原理和实战