Run-dream Blog

Try Catch Finally

K8s Useage


如何用 golang 里实现一个通用的缓存,关于泛型和反射

背景 在编写业务代码的时候,经常会有使用redis对热点数据进行缓存的需求,这里的逻辑可以抽象为: 为不同的查询条件生成不同的缓存key (getKey) 从 redis 里读取对应key的内容 (getFromCache) 如果能获取到则直接返回 如果redis里不存在对应的内容,则改从数据源里获取 fetchDataSource 将数据源里获取到的内容写回redi...

git 开发规范

背景 部门引入了新的发布系统,对代码和分支的提交加强了管理。 规范 git commit log 目前社区主流的是 Angular 规范。 具体规则: 每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。 其中,Header 是必需的,Body 和 Footer 可以省略。 He...

Redis 集群

为什么 Redis 需要集群化 每时每刻都拥有非常大的写入量的情况下,此时如果只有一个主节点是无法承受的。 这就需要集群化!简单来说实现方式就是,多个主从节点构成一个集群,每个节点存储一部分数据,这样写请求也可以分散到多个主节点上,解决写压力大的问题。同时,集群化可以在节点容量不足和性能不够时,动态增加新的节点,对进群进行扩容,提升性能。 有哪些方案 为了实现集群的功能,从服务端、客户端分...

会好的

关于好与坏有关的心理学的效应 四比一定律 What: 要想超出平均水平,每一个坏日子应至少对应4个好日子。 How: 与其追求完美,一旦碰壁便万念俱灰,不如把目标定为在至少五分之四的时间里执行计划。 风险厌恶 What: 负面偏差导致我们更容易明确的短期收益左右,而不去考虑不确定的长期收益。 How 当你要做潜在代价高昂的决定时,不管决定属于何种类型,你都可以...

HTTP CORS 相关知识

什么是CORS? 为什么需要 CORS CORS 全称 Cross-Origin Resource Sharing, 即跨域资源共享。 出于安全考虑,浏览器限制了跨域的 HTTPS 请求。 CORS 机制 具体来说, CORS 机制 使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。 允许...

如何基于 Redis 实现一个延迟队列

需求背景 Kafka RoundRobin 不保证消息全局顺序一致性 而业务依赖特定顺序。 同时业务上也要求延迟处理。(这个可以在返回数据时控制) 引入 延迟队列来解决这个问题, 就是说在收到结束消息的一段时间后, 再来处理聚合的任务。 kafka实现延迟队列 实现方式 采用 bull 来实现延迟队列。 代码如下: bull.ts import Bull = require("b...

如何同时使用 gitlab 和 github 的 ssh 认证

背景 公司内部使用 gitlab, 自己平时使用 github,有时候想用 github 做一些笔记。两个系统的账号不一致。 方案 在 ~/.ssh/ 目录下添加 config 文件: Host github.com HostName github.com User xxx IdentityFile ~/.ssh/github_id_rsa Host company HostNam...

每天一个 Node 包之 消息队列 `bull`

bull 是什么 定义 官方文档BullMQ 中的定义: BullMQ 是一个 Node.js 库,基于 Redis 实现了一套快速且鲁班的队列系统,有助于解决很多现代的微服务架构的问题。 这个库为实现以下目标而设计: 有且仅有一次(Exactly once)的队列语义, 也就是尝试有且一次的传递每条消息,但在最坏的场景下至少被传递一次。 易于水平伸...

OpenApi 和 swagger

什么是 OpenAPI? 定义 从官网上看,openapi 的定义是 The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computer...