在前一篇介绍中实现了一个工作队列,它假设队列中的每一个任务都只会被分发到一个工作者进行处理。在本篇中,我们尝试将同一个消息发送给多个消费者进行处理,这就是广为人知的发布/订阅模式。本篇通过搭建一个日志系统来阐述发布/订阅模式,它包含两部分内容:一个用于产生日志消息的程序,另一个用于接收和打印消息。
在这个日志系统中,每一份接收者程序的拷贝都能收到消息,因此我们可以轻易地使用一个程序将日志写入磁盘,
转载
2023-07-02 19:54:12
95阅读
文章目录1.前言2.新建仓库3. 构建项目和代码4.提交和发布代码5.引入和使用包 1.前言我们平时在Golang项目的编码过程中,除了经常通过import使用官方提供的依赖包,也经常通过go get -u github.com/xxx/xxx命令下载第三方包来使用。那么我们如何将自己封装的包开源发布出去,让所有人都可以像使用其他三方包一样使用我们的包呢?2.新建仓库首先在我们的 Github
转载
2024-05-07 23:05:08
236阅读
背景:redis集群执行lua脚本时不同于单机情况,lua脚本在执行时需要确保key在同一个node节点上,换句话说也就是需要保证 slot=crc16%16384,通过对key进行hash运算,其slot会分布在同一个node节点所属范围。解决思路:为了使key都落在一个node节点上可以通过添加 {} hashTag来实现。原理:相同的hashtag被分配到相同的节点,相同的槽。
hash算法
转载
2023-05-25 11:22:06
224阅读
## Docker发布Golang程序
> 本文介绍如何使用Docker发布Golang程序。我们将使用Docker容器化Golang应用程序,并演示如何构建和运行容器以及将应用程序发布到容器中。此外,我们还将介绍如何使用Docker Compose简化多个容器的管理。
### Docker简介
Docker是一个开源的容器化平台,它可以将应用程序及其依赖项打包到一个称为Docker容器的独
原创
2023-08-26 05:19:27
111阅读
Context简介: Context由Google官方开发,在1.7版本引入, 在Go服务器程序中,每个请求都会有一个goroutine去处理。然而,处理程序往往还需要创建额外的goroutine去访问后端资源,比如数据库、RPC服务等。由于这些goroutine都是在处理同一个请求,所以它们往往需要访问一些共享的资源,比如用户身份信息、认证
# Golang Redis发布订阅
## 简介
Redis是一种高性能的键值缓存数据库,而发布订阅(Pub/Sub)是Redis提供的一种消息传递机制。本文将介绍如何使用Golang与Redis进行发布订阅。
## 什么是发布订阅
发布订阅模式是一种消息传递模式,它包括两个角色:发布者和订阅者。发布者将消息发布到指定的频道,而订阅者则可以订阅一个或多个频道并接收发布者发布的消息。
发布
原创
2023-09-12 15:44:22
214阅读
一、背景 业务中经常会有这样的场景: 到期后自动执行指定操作; 查询某个任务是否完成,未完成等待一定时间再次查询; 回调通知,当回调失败时,等待后重试;等等还有其他很多类似的场景。 很多时候我们会直接通过一个本地定时器来帮我们完成这个任务。如果我们的系统是多实例分布式的,本地定时器就会面临很多问题,如:怎么保证重复处理的问题;统一管控的问题等等。面
转载
2023-06-05 15:38:19
167阅读
目录结构如下myproject
+-- src
|-- myapp
| +-- myapp.go
+-- mylib
&n
原创
2017-03-02 10:56:42
1223阅读
文章目录一 GO语言简介二 包三 基本语法3.1 书写规范3.2 函数3.3 关键字3.3.1 `type`3.3.2 `const `3.3.3 `var`3.3.4 `defer`3.3.5 `if`3.3.6 `switch`3.3.7 `for`3.4 数据类型3.4.1 指针3.4.2 `string`3.4.3 数组3.4.4 切片3.4.5 可变参数3.4.6 `map`3.5 面
基本介绍 输入流和输出流 os.File 封装所有文件相关操作,File 是一个结构体 打开文件和关闭文件使用的函数和方法 案列演示 读文件操作应用实例 1)读取文件的内容并显示在终端(带缓冲区的方式),使用 os.Open, file.Close, bufio.NewReader(), reader.ReadString 函数和方法
红帽(Red Hat)是一家源自美国的开源软件公司,其总部位于北卡罗来纳州罗利。红帽公司以其企业级 Linux 操作系统(Red Hat Enterprise Linux)和开源 JBoss 中间件等产品而闻名于世。而 Golang 则是由 Google 开发的一种编程语言,它在高并发和网络编程方面表现出色。如今,众多开发者将 Golang 与 Linux 系统进行结合,以构建高效稳定的网络应用程
原创
2024-02-22 09:54:59
96阅读
发布自己的golang库 最近在用golang写一个生成声波的小玩具,因此想生成一个公开的库,记录自己的实现过程 在github上创建一个public仓库,仓库名与go库名一致,然后将该仓库clone到本地 git clone https://github.com/gl1n/gowave.git 进 ...
转载
2021-10-22 09:50:00
2170阅读
2评论
Golang语言在近年来因为其高性能、编译速度快、开发成本低等特点逐渐得到大家的青睐,本篇主要讲述在Golang的安装部署。操作系统为Windows 10 64位。一、安装官网下载安装包:https://golang.org/点击Download:选择Windows操作系统对应的安装包:下载完成后,运行,一路按照默认设置点击下一步,直至完成安装。二、环境变量安装完成后,需要设置若干个相关变量,环境
2016年国庆节(10月1日)开始接触 Go 语言,记录一下它的 版本发布 与 TIOBE 排名:
转载
2017-03-10 17:08:00
139阅读
2评论
文章目录简介发布订阅模型简介发布订阅模型简写为 pub/sub 模型,消息生产者成为了发布者 publisher,消息消费者成为了订阅者 subscriber。传统生产者消费者模型是将消息发送到一个队列中,发布订阅模型是将消息发布给一个主题与其把发布订阅者模式我更喜欢理解成发布订阅器模式,订阅者更像是一个订阅器,发布者中含有多个订阅器,每个订阅器有自己的一种订阅规则,同时订阅器中会存在多个不同的订阅信息,但是这些订阅信息都是满足该订阅器的订阅规则的发布订阅模型发布订阅支持包package pub
原创
2021-10-25 10:20:02
605阅读
# golang 使用redis实现发布订阅
## 前言
在现代的分布式系统中,发布订阅模式是一种常见的消息传递机制。它允许消息的发布者将消息发送到多个订阅者,从而实现了解耦和可扩展性。而Redis作为一个高性能的内存数据库,也提供了发布订阅功能。本文将介绍如何使用Golang编写代码来实现Redis的发布订阅功能。
## Redis的发布订阅模式
在Redis中,发布订阅模式由两个主要组件组
原创
2023-09-12 05:38:55
394阅读
golang 服务器监控 IETF(Internet工程任务组)喜欢为愚人节做事,1998年是他们添加418(即超文本咖啡壶控制协议 )的一年。 当然,这完全是胡说八道,这使它变得很棒。 您应该已经准备好Golang安装,并且知道如何创建和运行程序。 我们从您在大多数编程语言中看到的东西开始:导入包以做有用的事情。 package main import ( "fmt" "html" "l
转载
2024-05-11 08:28:35
16阅读
下载 地址:https://golang.google.cn/dl/ wget https://golang.google.cn/dl/go1.16.7.linu
转载
2021-08-10 10:33:00
409阅读
2评论
在当今互联网时代,软件开发已经成为了各行各业必不可少的一部分。而作为一名程序员,如何选择合适的编程语言和操作系统来开发服务也是至关重要的。近年来,由于其高效性和易用性,越来越多的开发者开始选择使用golang语言在Linux操作系统下开发服务。
首先,让我们来了解一下golang语言和Linux操作系统。Golang语言是由Google开发的一种开源编程语言,它结合了传统编程语言的优点,并且具有
原创
2024-04-18 10:57:06
71阅读
在现代软件开发领域,使用 Golang、Linux 和 SQLite 这三者结合是一个非常常见的组合。Golang 是一种由 Google 开发的开源编程语言,具有高效的并发性能和丰富的标准库,被广泛应用于后端开发、云计算和网络编程等领域。Linux 是一种开源的操作系统内核,广泛应用于服务器和嵌入式设备中。SQLite 是一个轻量级的关系型数据库引擎,被广泛应用于移动应用和嵌入式系统中。
使用
原创
2024-04-15 15:08:29
71阅读