做好微服务的难题,被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解决,免你五年功的主要内容,如果未能解决你的问题,请参考以下文章