当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

go-zero

Go Web 与 RPC 框架
授权协议 MIT
开发语言 Google Go
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 国产
投 递 者 文心思
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

go-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。

go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。

使用go-zero的好处:

  • 轻松获得支撑千万日活服务的稳定性
  • 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
  • 微服务治理中间件可无缝集成到其它现有框架使用
  • 极简的API描述,一键生成各端代码
  • 自动校验客户端请求参数合法性
  • 大量微服务治理和并发工具包

设计理念

对于微服务框架的设计,保障微服务稳定性的同时,也要特别注重研发效率。所以设计之初,就有如下一些准则:

  • 保持简单
  • 高可用
  • 高并发
  • 易扩展
  • 弹性设计,面向故障编程
  • 尽可能对业务开发友好,封装复杂度
  • 尽可能约束做一件事只有一种方式

项目实现和特点

  • 强大的工具支持,尽可能少的代码编写
  • 极简的接口
  • 完全兼容net/http
  • 支持中间件,方便扩展
  • 高性能
  • 面向故障编程,弹性设计
  • 内建服务发现、负载均衡
  • 内建限流、熔断、降载,且自动触发,自动恢复
  • API参数自动校验
  • 超时级联控制
  • 自动缓存控制
  • 链路跟踪、统计报警等
  • 高并发支撑,稳定保障了晓黑板疫情期间每天的流量洪峰

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

  • 历史go-zero篇章 前言 这是根据go-zero在项目实战中,作者发掘的问题与技巧,希望能与所有的gopher一起分享,一起成长,如果文章有错误,也请大家及时指正问题,作者会立刻修改 一、go-zero 通过orm生成表结构

  • 历史go-zero篇章 前言 这是根据go-zero在项目实战中,作者发掘的问题与技巧,希望能与所有的gopher一起分享,一起成长,如果文章有错误,也请大家及时指正问题,作者会立刻修改 一、go-zero中的timeout 在 go-zero框架中 zrpc包中的 config.go文件 如下图所示:

  • 官网 github 开发规范 1、环境准备 1.1 goctl安装 1.2 protoc & protoc-gen-go安装 # 方式一 goctl env check -i -f --verbose # 方式二: 源文件安装 2、快速开始 本节主要通过对 api/rpc 等服务快速开始来让大家对使用 go-zero 开发的工程有一个宏观概念,更加详细的介绍我们将在后续一一展开。 2.

  • 1 注意事项 1 本文简化了整体环节过程,只对重难点问题进行详细讲解,建议结合本文与官方文档。 2 在使用时发现,goctl.exe v1.4.3生成的xxxhandler.go: if err != nil { httpx.ErrorCtx(r.Context(), w, err) } else { httpx.OkJsonCtx(r.Context(), w, resp)

  • 历史go-zero篇章 1、go-zero架构逐一突破:go-zero 超时 timeout 到底有几处可以设置?你学废了吗 2、go-zero架构逐一突破:goland中的terminal与电脑terminal goctl版本 始终不一致问题 前言

 相关资料
  • Go-HTTP-JSON-RPC 是用来处理 HTTP JSON-RPC 的 Go 语言实现。

  • Go官方提供了一个RPC库: net/rpc。 包rpc提供了通过网络访问一个对象的输出方法的能力。 服务器需要注册对象, 通过对象的类型名暴露这个服务。注册后这个对象的输出方法就可以远程调用,这个库封装了底层传输的细节,包括序列化(默认GOB序列化器)。 服务器可以注册多个不同类型的对象,但是注册相同类型的多个对象的时候会出错。 同时,如果对象的方法要能远程访问,它们必须满足一定的条件,否则这个

  • 本书首先介绍了使用 Go 官方库开发 RPC 服务的方法,然后介绍流行 gRPC 库以及其它一些 RPC 框架如 Thrift 等,后面重点介绍高性能的分布式全功能的 RPC 框架 rpcx。读者通过阅读本书,可以快速学习和了解 Go 生态圈的 RPC 开发技术,并且应用到产品的开发中。

  • 当然,其它的一些 RPC框架也有提供了Go的绑定,知名的比如Thrift。 Thrift 2007年开源,2008看5月进入Apache孵化器,2010年10月成为Apache的顶级项目。 Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。 它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。 它通过一个代码生成引擎联

  • CodeIgniter 的 XML-RPC 类允许你向另一个服务器发送请求, 或者建立一个你自己的 XML-RPC 服务器来接受请求。 什么是 XML-RPC ? 使用 XML-RPC 类 初始化类 发送 XML-RPC 请求 解释 请求解析 创建一个 XML-RPC 服务器 处理服务器请求 注意 格式化响应 发送错误信息 创建你自己的客户端与服务端 客户端 服务端 尝试一下 在请求参数中使用关联

  • 本书首先介绍了使用Go官方库开发RPC服务的方法,然后介绍流行gRPC库以及其它一些RPC框架如Thrift等,后面重点介绍高性能的分布式全功能的RPC框架 rpcx。读者通过阅读本书,可以快速学习和了解Go生态圈的RPC开发技术,并且应用到产品的开发中。 RPC介绍 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序

  • 随着分布式技术和微服务思想流行,技术公司逐步将服务拆分为独立运行的小模块,提高系统整体的健壮性,加快特性的演进速度。微服务通过定义完善的接口进行交互,解耦系统、敏捷迭代、方便服务治理。RPC是目前微服务最广泛的通信方式。然而,众多团队各自研发具备服务治理功能的RPC通信框架,一方面增加开发成本,消耗人力重复造轮子;另一方面不同序列化协议的RPC服务,无法互相通信,影响可用性。因此,通用的RPC通信

  • 对服务开发者, MTransport 屏蔽了底层网络通信细节,从而更专注于业务自身逻辑实现。支持不同语言版本的代码实现, 保持通信协议的一致性,支持服务注册、服务发现、异步通信、负载均衡等丰富的服务治理功能。