最近在学 Golang(Go语言),也在 Github 上找了一些基于 Golang 的优秀开源框架,在这里分享给大家。一、Gin 框架(45.7k star)Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 优于 httprouter,速度提高了近 40 倍。Gin 框架的特性:支持中间件,传入的 HTT
转载 2023-11-06 22:22:35
226阅读
作者: Super 导语:hashicorp/raft是raft算法的一种比较流行的golang实现,基于它能够比较方便的构建具有强一致性的分布式系统。本文通过实现一个简单的分布式缓存系统来介绍使用hashicorp/raft来构建分布式应用程序的方法。 1. 背景 对于后台开发来说,随着业务的发展,由于访问量增大的压力和数据容灾的需要,一定会需要使用分布式的系统,而分
提到分布式系统,我们会想到很多机器,分别部署着各自的服务,然后整体组成一个分布式系统。在这类系统中,分布式系统与常规的集中式系统存在着以下三个区别。(来自分布式算法导论)1、缺乏全局状态知识2、缺乏全局时间帧3、非确定性这三大特点也成为分布式系统设计的难点。也正是如此,分布式系统的设计比常规的集中式系统要难的多。为了区别,我们称这种分布式系统为,群体分布式。这种犹如社会群体。golang语言天生具
在当今的游戏开发领域,分布式架构已成为一种普遍趋势,尤其在使用 Golang 进行开发时。Golang 的并发特性和高效性能,使其在构建大型、灵活的分布式游戏架构中具有独特优势。本文将详细探讨如何利用 Golang 实现分布式游戏架构,涵盖背景描述、技术原理、架构解析、源码分析、性能优化和应用场景等内容。 ### 背景描述 分布式游戏架构通过将游戏服务器分布在不同的节点上,提供更好的可用性和伸
在现代互联网环境中,爬虫技术的应用变得日益普遍。然而,随着网络数据量的快速增长,单机爬虫往往难以满足需求,分布式爬虫应运而生。本文将探讨利用 Go 语言(Golang)构建分布式爬虫架构的过程,涉及背景描述、技术原理、架构解析、源码分析、性能优化及总结与展望等多个方面。 ### 背景描述 在信息爆炸的时代,爬虫技术是网络数据采集的重要手段。随着数据量的迅速增长,传统的单机爬虫已无法满足高并发的
1、分布式系统简介:多个节点: 容错性 可扩展性(性能) 固有分布性消息传递: 节点具有私有存储 易于开发 可扩展性(功能) 对比:并行计算完成特定的需求:消息传递的方法: REST(动作、URL) RPC(序列化传输、远端序列化后调用) 中间件(可以存储消息、一对多、消息队列)一般消息传递的方法: 对外:REST 模块内部:RPC 模块之间:中间件,REST分布式架构VS为微服务架构 分布式:指
转载 2023-11-07 10:04:44
155阅读
1. 背景介绍近期接到任务,需要用Golang开发一个基于Redis的分布式锁,因为目前网上已存在的golang分布式锁要么是性能都不够,要么就是功能不全,根据网上收集到的资料,最终决定参考Redisson的设计思想来设计Go语言的Redis分布式锁。完整代码可以点这里: 外网:GitHub DisGo 内网:Gitee DisGo2. 难点分析主流分布式锁的对比MySQLZookeeperRed
转载 2023-11-24 22:32:26
124阅读
最近项目的后端需求是全球同服的,在使用语言方面确定了为golang之后,了解了一下当前的一些goalng游戏服务器框架,终于在leaf/pitaya/ 等众多框架中选择了 Origin, 主要是因为它是分布式框架,微服务架构,比较匹配做全球同服需求下的功能模块分离。 | (后续2021.08.04补充更正一下,Origin的服务发现功能现已实现,参看Origin服务发现详解)目前基本已经上手,现在
随机value 防止释放其他服务的锁 import ( "crypto/rand" "encoding/base64" "errors" "fmt" "github.com/go-redis/redis/v7" "time" ) //分布式锁实现(不可重入) type RedisLock struc ...
转载 2021-06-02 23:37:00
305阅读
2评论
**实现Golang分布式存储教程** 作为一名经验丰富的开发者,我将教你如何实现Golang分布式存储。在分布式存储中,数据在多台计算机上进行存储和处理,以提高系统的性能和可靠性。在Golang中,我们可以使用一些库和工具来实现分布式存储,如etcd、consul、Zookeeper等。 ### 整体流程 首先,让我们来看一下整件事情的流程,如下表所示: | 步骤 |
原创 2024-05-28 11:12:47
69阅读
在现代分布式系统中,Redis 常常被用作数据存储和缓存解决方案。而结合 Golang 的强大功能,构建一个分布式的 Redis 系统并实现有效的备份和恢复策略,就显得尤其重要。以下是我整理的关于“Golang 分布式 Redis”的一系列技术细节。 ### 备份策略 在进行 Redis 数据备份时,我们的目标是确保数据的持久性和可恢复性。这一过程可以分为几个步骤。首先,理解不同的备份存储介质对
原创 6月前
39阅读
**实现“golang 分布式事务”教程** **一、整体流程** | 步骤 | 描述 | |---|---| | 1 | 创建一个分布式事务的全局唯一ID | | 2 | 开启事务 | | 3 | 执行本地业务逻辑 | | 4 | 调用其他服务,执行其他业务逻辑 | | 5 | 提交事务(确认操作)或回滚事务(撤销操作) | **二、详细步骤** **1. 创建一个分布式事务的全局唯一I
原创 2024-05-28 11:12:33
111阅读
1. go实现分布式锁通过 golang 实现一个简单的分布式锁,包括锁续约、重试机制、singleflght机制的使用1.1 redis_lock.gopackage redis_lock import ( "context" _ "embed" "errors" "github.com/go-redis/redis/v9" "github.com/google/uuid" "go
转载 2023-10-08 23:44:33
378阅读
MySQL分布式事务介绍InnoDB存储引擎提供了对XA事务的支持,并通过XA事务来支持分布式事务的实现。分布式事务指的是允许多个独立的事务资源参与到一个全局的事务中。事务资源通常是关系型数据库系统,但也可以是其他类型的资源。全局事务要求在其中的所有参与的事务要么都提交,要么都回滚,这对于事务原有的ACID要求又有了提高。另外,在使用分布式事务时,InnoDB存储引擎的事务隔离级别必须设置为SER
随着计算机系统规模变得越来越大,将所有的业务单元集中部署在一个或若干个大型机上的体系结构,已经越来越不能满足当今计算机系统,尤其是大型互联网系统的快速发展,各种灵活多变的系统架构模型层出不穷。布的处理方式越来越受到业界的青睐——计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。集中式与分布式集中式系统所谓的集中式系统就是指由一台或多台主计算机组成中心节点,数据集中存储于这个中心节点中,
       由于工作的原因,近两年多的时间开始接触分布式系统,在学习分布式系统之前,我认为的分布式仅仅就是把系统模块化独立部署,模块化之间采用webservice等可远程调用的方法进行连接,共同协助完成一个实际的业务流程,当然了,分离带来的部署复杂度也增加了,但是毕竟是分布式系统架构,这个缺点还是可以接受的,类似这样的概念,在我的潜意识中存在的很多年
在系统开发中,有一类任务不是立即执行,而是在未来某个时间点或者按照一定间隔去执行,比如日志定期压缩、报表制作、过期数据清理等,这就是定时任务。在单机中,定时任务通常需要实现一个类似crontab的系统,一般有两种方式:最小堆,按照任务执行时间建堆,每次取最近的任务执行时间轮,将任务放到时间轮列表中,每次转动取对应的任务列表执行最小堆最小堆是一种特殊的完全二叉树,任意非叶子节点的值不大于其子节点,如
8.集群Redis Cluster是Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡的目的。之前、Redis分布式方案一般有两种: ① 客户端分区方案,优点是分区逻辑可控,缺点是需要自己处理数据路由、高可用、故障转移等问题; ② 代理方案,优点是简化客户端分布式逻辑和升级维护便利
转载 2023-09-04 15:28:06
23阅读
前言我们已经讨论“微服务架构”很长一段时间了。它是软件架构中最新的热门话题。那么什么是微服务呢?我们为什么要使用它?为什么要在 Golang 中使用微服务架构?它有哪些优点? 本文中,我将会探讨一些相关的问题。废话不多说,让我们开始吧。什么是微服务?微服务是一种软件开发技术,属于 SOA(面向服务的架构)的一种形式。它的作用是,将应用程序构建为许多松耦合的服务的集合。在这种架构中,服务
微服务架构分布式系统架构中的一种
原创 2022-12-13 10:28:14
445阅读
  • 1
  • 2
  • 3
  • 4
  • 5