熊喵君的博客

Thinking will not overcome fear but action will.

Golang httprouter 库分析

高效的路由框架 httprouter 分析

0x00 前言 httprouter 非常高效的一个 http 路由框架,gin 框架的路由也基于此库。使用比较简单: func main() { router := httprouter.New() //注册路由 router.GET("/", Index) router.GET("/hello/:name", Hello) log.Fata...

Golang 并发协程池实现分析(三)

分析 Ants 协程池实现

0x00 前言 本文分析下协程池库 ants 的实现,仓库 在此,此库基于 fasthttp 的协程池实现。 0x01 ants 协程池使用 ants 提供了两种执行模式: 1、ants.NewPool(pool_size) 通过这种方式创建的 Pool,需要调用 pool.Submit(task) 提交任务,任务是一个无参数无返回值的函数,适合不关注结果的并发任务场景 2、ant...

数据结构与算法回顾(一):多阶 hash

一种高利用率的 hash 存储结构分析

0x00 前言 多阶(级)Hash 是我司使用最普遍的数据结构,常用于海量数据(如 UIN、关系链等)的存储,此外,结合 Linux 共享内存机制,可以方便的实现在游戏后台中保存用户状态(进程崩溃恢复)。 0x01 多阶 Hash 简介 多阶 hash 实际上是一个(相对平滑)锯齿状数组,如下所示: ■■■■■■■■■■■■■■■ ■■■■■■■■■■■■■ ■■■■■■■■■■■■...

Kubernetes 应用改造(八):如何在 TKE 上搭建 Redis 环境

Statefulsets 应用场景

0x00 前言 本篇文章总结下,项目背景是需要在 Kubernetes 集群中部署 Redis 单机 / 集群,需要利用 Statefulsets 与 NFS 来生成。 0x01 单机 Redis 搭建 创建 ConfigMap 首先,把 Redis 的配置文件 redis.conf 存储在 configmap 中,注意其中定义的 Redis 运行目录:/data/middlewar...

安全:KMS 的那些事

KMS 原理与使用

0x00 前言 密钥管理系统(Key Management Service,KMS)是一款安全管理类服务,可以让您轻松创建和管理密钥,保护密钥的保密性、完整性和可用性,满足用户多应用多业务的密钥管理需求,符合监管和合规要求。 KMS 是基于硬件加密机的云上密钥管理系统,核心服务如下: 密钥的全生命周期管理 加密、解密算法 真随机数 密钥轮换 0x01 KM...

Golang ReverseProxy 分析

原生库的反向代理代码分析

0x00 前言 在工作项目中,曾使用 gin 与 httputil.ReverseProxy 实现了认证网关和反向代理的功能,该认证网关的主要流程为: 1、 通过 gin 实现的 https 网关 接收浏览器 Web 发起的请求 2、 网关通过 httputil.ReverseProxy 发起一个带 API 签名的 HTTP 请求给后台 CGI 服务,实现代理功能 3、 网关接收到后台...

DiDi 开源 API 网关 gatekeeper 项目分析

一个微服务网关的设计与实现

0x00 前言 Didi-gatekeeper 是一个 Golang 的不依赖分布式数据库的 API 网关(基于 gin),使用它可以高效进行服务代理,支持在线化热更新服务配置以及纯文件方式服务配置,支持主动探测方式自动剔除故障节点以及手动方式关闭下游节点流量,还可以通过自定义中间件方式灵活拓展其他功能。 本文主要分析下其实现中可以借鉴的思路及细节: 插件式中间件引入 部署架...

在 Golang 中实现 Openssl 的 AES-CBC-256 算法(With Salt)

0x00 前言 今天在使用 openssl 工具中遇到如下的 case: plaintext="I'm password" password="abcdefghijklmn" echo $plaintext | openssl enc -salt -aes-256-cbc -e -a -k $password encrypted=`echo $plaintext | openssl en...

开源熔断组件分析(一):gobreaker

分析 Sony 的 gobreaker 熔断器实现(Circuit Breaker 的一种实现)

0x00 前言 gobreaker 实现了 Circuit Breaker pattern 模式的熔断机制。本篇文章简单分析下其实现。 Circuit Breaker 回顾 回顾下 Circuit Breaker 的状态机模型:即 3 种状态,4 种状态(变化)迁移,如下图: Circuit Breaker 状态如下 熔断器关闭状态(StateClosed), 服务正常...

安全:SSO 认证协议的那些事

0x00 前言 最近工作用到了较多的 SSO(单点登录)知识,这篇文章简单梳理下。主要涉及的到的有如下几块: Oauth2 SAML2 OpenID JWT SSH Login with SSO:如何将 SSO 的认证理念嵌入到 OpenSSH 的登录身份认证中去 授权 && 认证 授权 认证 0x01 通讯主体 浏览器:...