当前位置: 首页 > news >正文

golang微服务框架特性分析及选型

目录

    • 一、微服务框架特性(10个)
        • 包括:Istio、go-zero、go-kit、go-kratos、go-micro、rpcx、kitex、goa、jupiter、dubbo-go、tarsgo
      • 1、特性及使用场景
      • 2、比较
    • 二、web框架特性(7个)
        • 包括:gin、fiber、beego、echo、iris、mux、goa
      • 1、特性及使用场景
      • 2、比较

(以下框架均为go框架)

一、微服务框架特性(10个)

包括:Istio、go-zero、go-kit、go-kratos、go-micro、rpcx、kitex、goa、jupiter、dubbo-go、tarsgo

 

1、特性及使用场景

start统计截止至2024.04.01

序号名称特性适用场景stars
1IstioIstio 是一个开源的服务网格(Service Mesh)解决方案,提供了流量管理、安全策略、监控和故障注入等功能。它通过 Sidecar 模式,为微服务架构提供了可观察性、可控制性和安全性。适用于构建大规模的微服务架构,特别是需要灵活的流量管理、安全策略和监控的项目。34.8k
2go-zero基于 Go 语言的微服务框架,提供了代码生成工具、RPC 框架、数据访问层、缓存、限流、熔断等功能,支持快速开发和部署微服务应用。适用于构建中小型的微服务架构,特别是对于需要高效率和高性能的项目。27.4k
3go-kitgo-kit 是一个用于构建微服务的工具集,提供了服务发现、负载均衡、熔断器、追踪、日志等功能。它的设计理念是提供一组小型、可组合的库,使开发者可以根据需要选择和组合不同的组件,构建符合自己需求的微服务系统。适用于构建可扩展、可维护的微服务系统,特别是对于需要模块化和可插拔式设计的项目。26.1k
4go-kratosgo-kratos 是一个基于 Protobuf 和 gRPC 的微服务框架,提供了快速开发和部署微服务应用的工具和库。它支持快速迭代、高性能和高可用性。适用于构建高性能的微服务架构,特别是对于需要快速迭代和高可用性的项目。22.3k
5go-microgo-micro 是一个基于 gRPC 的微服务框架,提供了服务发现、负载均衡、熔断器、追踪等功能,支持多种微服务架构。它支持多种传输协议和序列化格式,具有很好的可扩展性。适用于构建大规模微服务架构,特别是对于需要灵活的服务发现和负载均衡功能的项目。21.3k
6rpcx基于 gRPC 和 HTTP/JSON 的 RPC 框架,提供了服务注册、发现、负载均衡、熔断器、追踪等功能,支持分布式系统开发。适用于构建大规模分布式系统,特别是对于需要高性能和可靠性的项目。7.9k
7kitexKiteX 是字节跳动框架组研发的下一代高性能、强可扩展性的 Go RPC 框架,提供了高性能、低延迟的 RPC 通信和服务注册、发现等功能。适用于构建高性能的微服务架构,特别是对于需要低延迟和高并发的项目。6.6k
8jupiter斗鱼开源的一套基于配置驱动的微服务治理框架,提供了丰富的功能和插件系统和后台功能,管理应用的资源、配置,应用的性能、配置等可视化。适用于构建中小型的微服务架构,特别是对于需要配置驱动和插件化设计的项目。4.3k
9dubbo-go基于 Dubbo 协议的分布式服务框架,提供了服务注册、发现、负载均衡、熔断器、追踪等功能,支持大规模分布式系统开发。架构是基于dubbo的extension模块和分层的代码设计,主要解决 Go 项目与 Java & Dubbo 项目的互通问题。适用于构建大规模分布式系统,特别是对于需要 Dubbo 协议和高性能的项目。4.6k
10tarsgo腾讯开源项目,基于 Tars 协议的微服务框架,提供了服务注册、发现、负载均衡、熔断器、追踪等功能,支持大规模分布式系统开发。适用于构建大规模分布式系统,特别是对于需要 Tars 协议和高性能的项目。3.3k

2、比较

  • go-kit 适用于中大型的项目规模,适合模块化和可插拔式设计的项目;
  • go-kratos 适用于中大型到大型的项目规模,适合快速迭代和高可用性的项目;
  • go-micro 适用于大型的项目规模,适合需要灵活的服务发现和负载均衡功能的项目;
  • Istio 适用于大型的项目规模,提供了完善的服务网格解决方案。

 

二、web框架特性(7个)

包括:gin、fiber、beego、echo、iris、mux、goa

 

1、特性及使用场景

start统计截止至2024.04.01

名称特性适用场景start
1Gin快速、轻量级、灵活的路由功能、中间件支持、性能较高、RESTful API 设计友好。适用于构建轻量级的 Web 应用、RESTful API 和微服务,适合快速开发和部署应用。75.1k
2gorilla/mux用于构建 HTTP 路由的库,提供了灵活的路由和中间件功能,适用于构建 Web 应用和 RESTful API。适用于构建中小型的 Web 应用和 RESTful API,特别是对于需要灵活的路由功能的项目。20.1k
3fiber高性能、低延迟、快速路由、中间件支持、与 Express.js 类似的 API 风格。适用于构建高性能的 Web 应用和 RESTful API,特别是对于需要快速响应的场景,如实时通信、实时游戏等。31.1k
4beego有完整的 MVC 框架、自动生成文档、自带 ORM、路由、日志、配置、验证等功能。适用于构建中小型的 Web 应用和企业级应用,尤其是需要快速开发和维护的项目。30.8k
5Echo快速、轻量级、灵活的路由功能、中间件支持、高性能。适用于构建轻量级的 Web 应用、RESTful API 和微服务,与 Gin 类似,但更加轻量级。28.3k
6iris高性能、强大的功能集成、自动生成文档、路由、中间件、验证、Websocket、GRPC、GraphQL 等。适用于构建中大型的 Web 应用和企业级应用,特别是需要丰富功能和强大性能的项目。24.8k
7goa基于设计优先的 API 开发框架,提供了 DSL 和代码生成工具,支持快速开发和部署 RESTful API。适用于构建 RESTful API,特别是对于需要设计优先和代码生成的项目。5.4k

2、比较

  • Gin、Echo 和 Mux 都是==轻量级==的 Web 框架,适合构建快速、简单的 Web 应用和微服务;

  • Fiber 提供了高性能和低延迟的 Web 框架,适用于构建高性能的 Web 应用和 API 服务;

  • Beego 和 Iris 则是更为完整和功能丰富的 Web 框架,适合构建中大型的 Web 应用和企业级应用;

  • Goa 则是基于设计优先的 API 开发框架,适用于需要设计优先和代码生成的项目。

选择合适的框架取决于项目的需求、规模和预期性能,star不是绝对的标准

 
参考链接:
https://blog.miuyun.work/archives/1712124913576
 
如有不对,烦请指出,感谢!

相关文章:

golang微服务框架特性分析及选型

目录 一、微服务框架特性(10个)包括:Istio、go-zero、go-kit、go-kratos、go-micro、rpcx、kitex、goa、jupiter、dubbo-go、tarsgo 1、特性及使用场景2、比较 二、web框架特性(7个)包括:gin、fiber、beego…...

苹果cmsV10 MXProV4.5自适应PC手机影视站主题模板苹果cms模板mxone pro

演示站:http://a.88531.cn:8016 MXPro 模板主题(又名:mxonepro)是一款基于苹果 cms程序的一款全新的简洁好看 UI 的影视站模板类似于西瓜视频,不过同对比 MxoneV10 魔改模板来说功能没有那么多,也没有那么大气,但是比较且可视化功…...

GPU的了解

3D动画揭秘显卡的GPU是如何工作的_哔哩哔哩_bilibili 位于显卡中。 与CPU区别: 100名小学生和1位数学博士 做100道非常简单的算术题,小朋友一个人一道题,比博士快。 做1道非常复杂的数学问题,只有博士可以做出来。 CPU主要用于快…...

鸿蒙实战开发-如何使用Stage模型卡片

介绍 本示例展示了Stage模型卡片提供方的创建与使用。 用到了卡片扩展模块接口,ohos.app.form.FormExtensionAbility 。 卡片信息和状态等相关类型和枚举接口,ohos.app.form.formInfo 。 卡片提供方相关接口的能力接口,ohos.app.form.for…...

蓝桥杯刷题 前缀和与差分-[2128]重新排序(C++)

问题描述 给定一个数组 A 和一些查询 L**i, R**i,求数组中第 L**i 至第 R**i 个元素之和。 小蓝觉得这个问题很无聊,于是他想重新排列一下数组,使得最终每个查询结果的和尽可能地大。小蓝想知道相比原数组,所有查询结果的总和最多…...

STM32重要参考资料

stm32f103c8t6 一、引脚定义图 二、时钟树 三、系统结构图 四、启动配置 (有时候不小心短接VCC和GND,芯片会锁住,可以BOOT0拉高试试(用跳线帽接)) 五、最小系统原理图 可用于PCB设计 六、常见折腾人bug…...

[StartingPoint][Tier0]Preignition

Task 1 Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (ii) dir busting, (iii) hash cracking. (目录暴力破解是一种用于检查 Web 服务器上的大…...

数据库系统概论(超详解!!!)第三节 关系数据库标准语言SQL(Ⅴ)

1.数据更新 1.插入数据 1.插入元组 语句格式 INSERT INTO <表名> [(<属性列1>[,<属性列2 >…)] VALUES (<常量1> [,<常量2>]… ); 功能&#xff1a;将新元组插入指定表中 INTO子句 &#xff1a; 指定要插入数据的表名及…...

SpringBoot | Spring Boot“整合Redis“

目录: 1. Redis 介绍2. Redis 下载安装3. Redis “服务开启”和“连接配置”4. Spring Boot整合Redis的“前期准备” :① 编写实体类② 编写Repository 接口③ 在“全局配置文件”中添加 “Redis数据库” 的 “相关配置信息” 5. Spring Boot整合“Redis” (案例展示) 作者简介…...

SV学习笔记(四)

OCP Open Closed Principle 开闭原则 文章目录 随机约束和分布为什么需要随机&#xff1f;为什么需要约束&#xff1f;我们需要随机什么&#xff1f;声明随机变量的类什么是约束权重分布集合成员和inside条件约束双向约束 约束块控制打开或关闭约束内嵌约束 随机函数pre_random…...

Midjourney艺术家分享|By Moebius

Moebius&#xff0c;本名让吉拉德&#xff08;Jean Giraud&#xff09;&#xff0c;是一位极具影响力的法国漫画家和插画师&#xff0c;以其独特的科幻和幻想风格而闻名于世。他的艺术作品不仅在漫画领域内受到高度评价&#xff0c;也为电影、时尚和广告等多个领域提供了灵感。…...

Vue - 1( 13000 字 Vue 入门级教程)

一&#xff1a;Vue 导语 1.1 什么是 Vue Vue.js&#xff08;通常称为Vue&#xff09;是一款流行的开源JavaScript框架&#xff0c;用于构建用户界面。Vue由尤雨溪在2014年开发&#xff0c;是一个轻量级、灵活的框架&#xff0c;被广泛应用于构建单页面应用&#xff08;SPA&am…...

Vue关键知识点

watch侦听器 Vue.js 中的侦听器&#xff08;Watcher&#xff09;是 Vue提供的一种响应式系统的核心机制之一。 监听数据的变化&#xff0c;并在数据发生变化时执行相应的回调函数。 目的:数据变化能够自动更新到视图中 原理&#xff1a; Vue 的侦听器通过观察对象的属性&#…...

Prometheus+grafana环境搭建redis(docker+二进制两种方式安装)(四)

由于所有组件写一篇幅过长&#xff0c;所以每个组件分一篇方便查看&#xff0c;前三篇 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana环境搭建rabbitmq(docker二进制两种方式安装)(二)-CSDN博客 Prometheusgrafana环境搭建m…...

宝塔面板安装nginx流媒体服务器(http-flv)

前文介绍了使用nginx搭建流媒体服务器,实现了hls切片方式播放,不过延迟较长。本文采用nginx搭建支持http-flv方式的流媒体服务器,用以测试期性能。 目录 一、服务器操作系统安装 二、在控制台安装宝塔面板...

LNMP环境:揭秘负载均衡与高可用性设计

lb1: 192.168.8.5 lb2: 192.168.8.6 web1:192.168.8.7 web2:192.168.8.8 php-fpm: 192.168.8.9 mysql: 192.168.8.10 nfs:192.168.8.11 分别插入镜像 8.5-8.8 分别安装nginx,并设置启动 8.9 安装php 8.10 安装mysql 先配置一台web服务器然后同步 设置网站根目录 cp -…...

深入理解Java异常处理机制(day20)

异常处理 异常处理是程序运行过程产生的异常情况进行恰当的处理技术 在计算机编程里面&#xff0c;异常的情况比所我们所想的异常情况还要多。 Java里面有两种异常处理方式&#xff1b; 1.利用trycatchfinaly语句处理异常&#xff0c;优点是分开了处理异常代码和程序正常代码…...

Docker实战教程 第1章 Linux快速入门

2-1 Linux介绍 为什么要学Linux 三个不得不学习 课程需要&#xff1a;Docker开发最好在Linux环境下。 开发需要&#xff1a;作为一个后端程序员&#xff0c;是必须要掌握Linux的&#xff0c;这是找工作的基础门槛。 运维需要&#xff1a;在服务器端&#xff0c;主流的大型服…...

java数据结构与算法刷题-----LeetCode172. 阶乘后的零

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 数学&#xff1a;阶乘的10因子个数数学优化:思路转变为求5的倍数…...

掌握数据相关性新利器:基于R、Python的Copula变量相关性分析及AI大模型应用探索

在工程、水文和金融等各学科的研究中&#xff0c;总是会遇到很多变量&#xff0c;研究这些相互纠缠的变量间的相关关系是各学科的研究的重点。虽然皮尔逊相关、秩相关等相关系数提供了变量间相关关系的粗略结果&#xff0c;但这些系数都存在着无法克服的困难。例如&#xff0c;…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...