可扩展的 Go Scheduler 设计文档

原文 https://golang.org/s/go11sched 在 go 的 runtime 包下,阅读最重要的关于流程调度的文件 proc.go 时。贴了这个文档地址。 机翻一下: 可扩展的 Go Scheduler 设计文档 德米特里·维尤...

Go

Go GMP 大量源码解读

基于小徐先生的GMP文章,我在代码中增加了大量注释。方便对整个GMP源码的理解。 1 概念梳理1.1 线程通常语义中的线程,指的是内核级线程,核心点如下: (1)是操作系统最小调度单元; (2)创建、销毁、调度交由内核完成,cpu 需完成用户态与内核...

Go

G-M-P

GMP 最核心的几个概念可以在 go 源码的 /Users/lixuanshan/go/go1.21.8/src/runtime/runtime2.go 找到。这个路径里面有 下面我们看看他们的核心元素。

Go

Redis 引发的思考:能用就行

最近从 Redis 的设计中,想到一些解决问题的思维方式。那就是如果想从正面完美地解决某个问题不容易实现,不如从另一个角度出发,”不完美”地解决问题。 比如下面的 Redis 开发者在解决下面的问题时: 炫杉:菜鸟瞎分析,大佬勿喷。 跳表层数的...

Redis

Datamaid 强制 Hash

留坑,有空写吧!

Datamaid 如何实现实时源接入

技术项目和业务产品一样,如果一开始就设计得完美无暇,那实现起来也是艰难无比。倒不如先实现 MVP (Minimum Viable Product) 版本 ,再初步迭代完成升华。 下面就说说我在设计 Datamid 实时数据源接入的思考过程。 背景Da...

Architecture

业务中实现最终一致性,和 MySQL 的思想很像!

我们在在线业务里保证数据一致性的一种思路, 和 MySQL 保证 redolog 和 binlog 一致性的方案很像。下面我先来说一下业务里我们是怎么处理的。 说到最终一致性,绕不开的一种方案就是消息队列了。 消息队列可以保证某个数据变更后,多个下游...

Architecture

Datamaid 的双ES索引设计

背景Datamaid 是我们设计的一套统一数据治理系统。通过在系统上进行配置,不需要开发就可以把上游数据灌入到你自己的业务表或其他存储引擎。 因为我们的业务上需要使用大量的字段筛选,所以底层存储是用了 ES。 至此,我们有了一个系统,每天灌入数据到存...

Architecture

Go 哨兵错误

有这种写法,定义一个全局变量的 error ,在用到的时候直接返回 1var ErrNotFound = errors.New("404") 这样写有个隐患,如果有人在某个方法里写了句 1errNotFound = nil ...

Go

获得一个北京车牌的方法

油车摇号 / 新能源排队油车摇号是一年两次排队就是先进先出(FIFO) 注意在北京纯电才叫新能源 油混插混增程通通属于油车 以个人为单位只能二选一 家庭可以同时参加摇号和排队(等于一年三次开奖机会,你还别偷着乐,相当于也损失了成员本该有的...

Life
12319