才云开源 Nirvana:Golang REST API框架

才云 Caicloud 开源了 Golang API 框架 Nirvana,旨在解决 Go 语言框架选择混乱、业务与框架耦合的问题。Nirvana 通过声明式 API 设计,实现与框架解耦,提供路由、错误处理、metrics、tracing 等功能,并能自动生成文档和客户端代码,以提高开发效率。
摘要由CSDN通过智能技术生成

自 2009 年开源以来,Go 作为一种强大、高效、简洁、易上手的编程语言,在帮助阅读、调试和维护大型软件系统上发挥着越来越重要的作用。而依托其健康生态,Golang 社区也相继涌现出诸如 beego、gin、chi、go-restful 等知名框架,为 Go 提供额外功能支持。

但选择过多,反受其乱。面对层出不穷的优秀框架,不同团队、不同开发者在框架选择上往往会出现分歧,不同框架之间也彼此壁垒高筑,导致业务与框架耦合,开发效率大大降低。

为了解决这类问题,才云 Caicloud 实现了 Golang API 框架 Nirvana,把 API 从对框架的依赖中彻底解放出来。它专为提高生产力和可用性设计,可扩展、性能高,旨在成为才云 Caicloud 所有 Golang 服务的基石,助力业务的高速开发。

接轨 Kubernetes 这些痛点不可忽视

近年来,为了满足业务发展需要,应对日益激烈的市场竞争,大量企业开始使用容器部署云工作负载。而随着容器使用量的增长、Kubernetes 成为容器编排的事实标准,在 Kubernetes 上打造新一代容器云平台成了企业谋求发展的必由之路。

为了顺应时局,技术团队除了进行思维上的转变,还要应对团队和业务方向的调整,对团队项目和产品完成切割分化。这之中就涉及对 Go 框架变更的抉择。

两年前,才云 Caicloud 团队在构建基于 Kubernetes 的云平台时,在框架上遇到了不少麻烦:当时 Kubernetes 正值发展期,为了快速开发,工程师们往往倾向于选择自己熟悉的框架。因此,虽然大多数项目用的是 go-restful(Kubernetes 的选型),但用 beego、gin、chi 等框架的工程师也不在少数,这就给业务整合带来了很多问题:

  • 不同框架对 API 的描述形式不一致,这增加了不同团队间的沟通成本;
  • 不同框架 API 风格差距较大,文档自动化困难;
  • 错误定义和处理方式在不同项目之间存在差别,会导致客户端处理困难。

曾经开放的工程师文化成了变革的最大阻力。

Nirvana 的缘起

Nirvana 就是在这个背景下诞生的。

它借鉴了 Kubernetes 声明式 API 的设计,巧妙规避了框架对 API 的侵入。同时,为了实现业务和框架的隔离,它定义一个规范,让 API 按照规范书写,完全屏蔽了框架对 API 的影响。

一言以蔽之,Nirvana 框架的设计思路始终围绕工程师们亲历的种种痛点:

  • 构建风格一致的 API 项目;
  • 使用统一的 RESTful 路由与声明式 API 定义,避免业务对框架产生依赖;
  • 使用统一的错误生成和处理方式;
  • 提供开箱即用的基础功能,包括 Prometheus metrics、tracing、profiling 等;
  • 自动生成 API 文档和客户端代码。

在 Nirvana 中,我们用一套 API Definition 来声明式地描述业务 API。下面是一个列出消息列表 API 的例子:

Definition{    // 这个 API 返回的是资源数组,所以使用 List 方法。    Method:     def.List,    // Summary 是一个短语,用于描述这个 API 的用途。这个短语在生成文档和客户端的时候用于区分 API。    // 这个字符串去掉空格后会作为生成客户端时的函数名,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您将在每个新选项卡中打开Nirvana HD图像! 惊人的! 每个新标签中的真棒高品质Nirvana图片。 对于真正的粉丝,就像我一样:)您会非常有启发性的,并且您会喜欢这个不错的扩展。 简单易用(只需向下滚动即可查看更酷的照片或打开新标签)。 也可以离线工作。 超级快。 而已。 :)有关控制怪胎的详细信息:*代码中的所有内容都是100%透明的。 -在这里检查:https://github.com/happyhey/Nirvana *不需要怪异的权利。 *没有间谍软件或其他古怪的东西。 如果您喜欢,请给我一个不错的5星级评论。 谢谢。 对于其他程序员,我们将不胜感激。 您可以在这里找到完整的代码:https://github.com/happyhey/Nirvana谢谢。 要删除它,您有2个简单的选项:-在地址栏中输入chrome:// extensions,向下滚动并删除它-转到chrome,设置,扩展名,向下滚动并删除它。 支持语言:Bahasa Indonesia,Bahasa Melayu,Deutsch,English,Filipino,Français,Kiswahili,Nederlands,Norsk,Tiếng Việt,Türkçe,català,dansk,eesti,español,español (Latinoamérica),hrvatski,italiano,latviešu,lietuvių,magyar,polski,português (Brasil),português (Portugal),română,slovenský,slovenščina,suomi,svenska,Ελληνικά,Српски,български,русский,українська,עברית,فارسی‎,मराठी,हिन्दी,বাংলা,ગુજરાતી,தமிழ்,తెలుగు,ಕನ್ನಡ,മലയാളം,ไทย,‫العربية,中文 (简体),中文 (繁體),日本語,한국어
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值