asynq源码阅读
October 6, 2023
asynq库介绍 # asynq是一款使用Go语言开发的开源任务队列库,它的特点是: 支持每个任务至少执行一次 支持任务调度 失败任务重试 支持崩溃恢复 支持优先级队列 支持加权优先级队列 支持严格优先级 ...
asynq库介绍 # asynq是一款使用Go语言开发的开源任务队列库,它的特点是: 支持每个任务至少执行一次 支持任务调度 失败任务重试 支持崩溃恢复 支持优先级队列 支持加权优先级队列 支持严格优先级 ...
在开发grpc服务时,我们经常会遇到一些通用的需求,比如:日志、链路追踪、鉴权等。这些需求可以通过grpc拦截器来实现。本文使用go语言来实现一个 grpc一元模式(Unary)拦截器,上 ...
我们使用protobuf+grpc技术栈来开发微服务时,会要使用相关protoc插件来生成相关代码。有时可能会需要自定义一些插件,本文就来实现一个自定义的protoc插件。 新旧接口的说明 ...
你们公司是怎么解决分页查询的?平均性能如何? # 我司业务是toB的,所以我们的分表主要有两种形式:按企业id分表、按时间分表。我们的做法是:让查询在单表中进行,避免跨表分页。 如果是按企业i ...
今天想给大家推荐的一本书是《愿有人陪你颠沛流离》。算不上是大作,但是我觉得这本书还是值得一读的。至少,对于我来说,能 从中找到一些自己的影子,自己的青春。
什么是MVCC?为什么需要MVCC? # MVCC即多版本并发控制,同一条记录可能存在多个版本,不同的事务可能读取到的是不同版本。 之所以使用MVCC,是为了提高并发读写性能。如果没有MVCC ...
什么是undo log?为什么需要undo log? # undo log,又称回滚日志。undo log有以下作用: 事务回滚。为了保证事务的原子性,事务中的操作要么全部完成,要么什么也不做。如果事务执行 ...
如无特殊说明,本文默认mysql使用的存储引擎是InnoDB。 什么是行锁、表锁?什么时候加表锁?怎么避免? # 行锁,是指锁的粒度是行级别的,其锁定的记录是某个记录或者间隙(也可能是多个)。 ...
RediSearch是一个支持搜索功能的redis模块。本文对此模块进行了介绍,并用go语言实现了一个简单示例。 RediSearch提供了查询、二级索引、全文索引功能。你需要先在相关Re ...
请你解释一下EXPLAIN命令 # explain命令是用来查看mysql执行语句的执行计划,帮助我们分析SQL语句的性能瓶颈。其输出中各个列的作用如下: 列名 描述 id 每个select关键字都对 ...