熊喵君的博客

Thinking will not overcome fear but action will.

微服务中的缓存(四):内存缓存使用的一些技巧

记录项目中遇到的问题及解决方案

0x00 前言 本文梳理下笔者在项目开发中使用过一些内存缓存的技巧 0x01 双缓冲:double buffering 有一个场景是,存在某一本地文件配置(修改少),程序初始化时把文件内容读取到本地内存里(假设为 map1),由于程序逻辑需要频繁且高性能的读取 map1(尽量不加锁),在这种背景下如何实现安全的修改文件自动同步到 map 里(且不加锁)?有两种思路: 分段锁 ...

Mysql:Session && Transaction

Mysql 基础回顾:会话与事务

0x00 前言 会话(Session): 指客户端与 MySQL 服务器之间的一个连接。当客户端连接到 MySQL 服务器时,服务器会为客户端分配一个会话。会话是数据库操作的基本单位,每个会话都有一个唯一的 ID。在会话中,用户可以执行 SQL 语句来查询和修改数据。会话可以持续很长时间,直到客户端断开与服务器的连接。 事务(Transaction):事务是数据库...

WebSocket:原理与应用

WebSocket 在 golang 中的应用介绍

0x00 前言 本文汇总下 WebSocket 的应用及概念。笔者接触过的 websocket 有如下场景: GoIm 的 websocket Server 支持 webconsole 登录到 SSH/docker 的转发层 长连接服务端(消息推送) 利用 websocket 构建正向代理 0x01 Websocket 基础及用法 WebSocket 是一种...

基于redis的分布式限频库分析:ratelimit(未完待续)

0x00 前言 项目中要对接口调用进行并发限制,所以需要分布式的限流中间件,本文分析下基于Redis实现的分布式限流器,ratelimit 参考 基于redis的分布式限频库

Cronsun:任务统一集中管理(调度)系统设计与分析

分析一款典型的分布式任务调度系统

0x00 开篇 cronsun 是一个分布式任务系统,单个节点和 Linux 机器上的 crontab 类似,目的是解决多台 Linux 机器上 crontab 任务管理不方便的问题,同时提供任务高可用的支持(当某个节点死机的时候可以自动调度到正常的节点执行),此外,有页面配置及告警邮件支持等。汇总如下3点: 替换 crontab 执行不能单点失败的任务,具备一定可靠性运行...

Bash 日常应用总结

A Linux Bash Cookbook

0x00 前言 本文汇总下笔者常用的Bash指令备份 0x01 BASH 1、批量查找文件内容 主要使用grep -rl,如下面指令,查询当前目录下所有出现yyyy字符串的文件列表: grep yyyy -rl --include="*.txt" ./ 2、批量替换文件内容 常用sed搭配grep指令使用,如下面指令,将当前目录./下的所有.txt文件中的yyyy字符串替换为xxxx...

golang-LRU 缓存设计与实现(二)

分析 go-zero 中的进程内缓存库 collection.Cache 实现

0x00 开篇 本文分析下 go-zero 框架的 LRU-cache 组件 实现,此库有如下特性: 缓存增删改,自动失效,可以指定过期时间(基于 TimeWheel 时间轮策略实现了 TTL 过期的机制,很精妙);缓存大小限制,可以指定缓存个数 LRU 支持 缓存命中率统计 并发安全,解决缓存击穿问题 解决缓存击穿问题(syncx.SingleFlight 机制...

一种基于 TTY-based 的 kubernetes console 实现思路

如何使用 ssh 协议打通 kubernetes EXEC 登录?

0x00 开篇 网上基于 websocket 打通 kubernetes pod 的实现非常多,但是受限于 webconsole 的不便利性,这边文章来分析下如何使用 SSH 方式打通 kubernetes 的登录 Kubectl exec 的原理简介 通过 kubectl exec 进行容器的数据流如下: 0x01 实现思路 1、remotecommand 暴露的 E...

CAP 分析 && 实战:Gossip 协议

AP 协议:gossip && hashicorp/memberlist 分析

0x00 前言 前文 Etcd 最佳实(踩)践(坑) 中,了解 CAP 定理中,满足 AP 的典型协议就是 Gossip,本文就介绍下该协议。 Gossip protocol 也叫 Epidemic Protocol (流行病协议),是一种 去中心化、容错并保证最终一致性的协议;其基本思想是通过不断的和集群中的节点 Gossip 交换信息,经过 O(log(N)) 个回合, Goss...

分布式链路追踪(OpenTracing)之应用篇

使用 http/gin 构建 OpenTracing 机制

0x00 前言 前文 微服务基础之链路追踪(OpenTracing) 介绍了分布式链路追踪的理论知识,本文基于 net/http、gin 等库来构建客户端到服务端的 OpenTracing 实践(使用 jaeger 接入) APM 就是跟踪一个 traceId 在多个微服务中的传递并记录。在进入第一个服务的时候,就生成一个 traceId,接下来这个 traceId 将跟随整个微服务...