当前位置: 首页 > 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;…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...