—— 为什么 NSQ 的 DiskQueue 不用锁也能做到高性能、强一致? NSQ 的 diskqueue 是一个极其优雅的磁盘持久化 FIFO 队列实现。它的代码不多,却...
—— 为什么 NSQ 的 DiskQueue 不用锁也能做到高性能、强一致? NSQ 的 diskqueue 是一个极其优雅的磁盘持久化 FIFO 队列实现。它的代码不多,却...
前言 在网络通信中,TCP 协议因其可靠性成为主流选择,但它的 "流式传输" 特性却给消息解析埋下了一个坑 ——黏包与拆包。对于 NSQ 这类消息队列而言,消息的准确解析是核...
摘要 本文给出一个落地可执行的 Go + DDD 代码组织方案。包含:分层含义、推荐目录树、包命名与文件命名规范、典型代码片段(领域实体、仓储接口、应用服务、适配器/实现)、...
前言 在并发编程、分布式系统或 Web 开发中,你一定听过 “Context”(上下文)这个词。它像一个 “隐形的信使”,在不同组件、函数或服务间传递关键信息,却常常因为 “...
前言 在 Go 语言开发中,错误处理是保障程序健壮性的核心环节。与 Java、Python 等语言的 “异常捕获” 机制不同,Go 采用显式错误处理设计,强调 “错误是值” ...
前言 作为刚入门 Go 的开发者,很容易带着其他语言的习惯写代码,比如忽略错误、滥用 goroutine,最后导致程序出 bug 却找不到原因。这篇文章整理了 Go 新手最该...
介绍 robfig/cron[https://github.com/robfig/cron]是Go语言实现的开源定时任务调度框架,核心代码是巧妙的使用chan + selec...
在线编码、格式转换 前言 日常开发或运维会比较常遇到日志中的内容格式不直观,需要转码或格式化的情况,这时候常常是去网上搜索在线工具,不但耗时耗力,又担心不安全,于是我索性就自...
背景 有上万台边缘机器,每台都会有多个agent客户端,并且每个agent都会同时向中心系统上报数据,由于上报数据频繁,并发量也大,每个agent都频繁和中心建立连接,导致中...
背景 关于限流Go官方通过一个采用令牌池的算法的实现:golang.org/x/time/rate,但是,这个限制的是每秒的请求数,有的时候我们希望限制的是系统并发处理的请求...
引言 Go内置了数据库相关的库 - database/sql,实现数据库操作相关的接口,其中还包含一个很重要的功能 - 连接池,用来实现连接的复用,限制连接的数量,从而最大程...
背景 测试一个调用http接口时,使用了httptest.NewServer来mock一个http服务端,在验证响应异常状态码时发现奇怪问题,明明设置了异常状态码,但是htt...
日期解析 背景 当有一个日期字符串(2014-11-12 11:45:26)需要转化为Go的time类型,我们第一时间肯定会想到time包的Parse方法,指定字符串的格式l...
背景 Golang的在开发web时,会对不同的请求实现不同的hander方法,通常是实现http.HandlerFunc接口: 例如: 这里的handler通常充当servi...
最近线上用户请求时不时返回502,并且没多大规律,我们的部署架构是Nginx + web应用,nginx中的upstream配置了两个web做负载均衡。 经过分析web应用,...