熊喵君的博客

Thinking will not overcome fear but action will.

Python 性能优化

使用 heapy 统计堆上的对象(内存)

0x00 背景 最近工作中遇到一个场景,使用 python 写的脚本做 kafka 的消费端,使用的是多进程模式,父进程从 kafka 收,通过 multiprocessing.Queue 发给子进程处理,处理的数据是基于会话的,子进程用一个 dict 来存储。KEY 为会话 ID,VALUE 为一个 list(模拟 queue 的方式实现了一个字符数组队列),根据指定的分隔符做 pu...

Kubernetes 应用改造(一):Headless Service

使用 gRPC+Headless-Service 构建后端服务

0x00 背景 本地后台程序容器化,服务上云,Saas 化尝试,现阶段没有比 Kubernetes 更好的选择了。从七月到现在,三个月时间,通过对项目代码改造、后台服务的迁移和现网运行排障,算是对 Kubernetes 的服务部署和微服务化有了比较全面的认知。这篇博客就以 gRPC 服务在 Kubernetes 上的 LoadBalancer 改造来开个头。 0x01 Kubernete...

使用 Golang 实现 SSH 和 SSHD(一)

golang-ssh 库使用(入门篇)

0x00 前言    golang 的 SSH 包 提供了极为丰富的接口。基于此包可以很容易的实现 SSH 客户端、SSHD 服务端以及 SSH 代理等常用工具。 此包给了开发者极大针对 SSH 体系的扩展能力,可以实现 SSH 客户端及服务端的多种工具及安全实践。 通过下面两篇文章可以简单入门: Writing a replacement to OpenSSH using G...

Etcd 最佳实(踩)践(坑)

Etcd 日常踩坑集锦

0x00 Etcd 最佳实践 此篇文章是本人在学习和使用 Etcd 中,遇到的问题和一些使用心得的总结,避免重复踩坑。 最近阅读的一篇文章 三年之久的 etcd 3 数据不一致 bug 分析,非常好,推荐看下。 此外,笔者将常用的 EtcdV3 接口进行了封装: 在此 etcd_tools 0x01 介绍 Etcd 是一个基于 Raft 协议实现的高可用的 KV 存储系统,具备如下几...

Consul 服务治理的那些事(一)

使用 gRPC+Consul 构建高可用的后端服务

0x00 前言 业余时间利用 gRPC 与 Consul 实现的服务发现项目 grpclb2consul。这篇文章,总结下我在开发和 Consul 使用过程中的一些经验 0x01 Consul 介绍 目前我使用到的 Consul 功能,服务发现与注册(含健康检查)/ 分布式 KeyValue 存储 / 配置中心 / DNS / 分布式锁, 总而言之,只有理解了 Consul ...

证书(Certificate)的那些事

项目开发中证书的使用梳理

0x00 前言 在日常的后台开发工作中,会遇到认证的场景,比如 API 接口认证,Cookies 认证,OpenSSH 认证,SSL 认证,SSO 等,认证的方式也是百花齐放,比如 Password、HttpBasicAuth,JWT,证书,OAuth 等等。证书的不可伪造特性(Unforgeability)决定了证书在现有的公钥认证体系中扮演了及其重要的角色。这篇文章,就好好聊聊我在项目...

基于 gRPC 的服务发现与负载均衡(基础篇)

gRPC 负载均衡架构分析

0x00 前言    在后台服务开发中,高可用性是构建中核心且重要的一环。服务发现(Service discovery)和负载均衡(Load Balance)一直都是我关注的话题。今天来谈一下我在实际中是如何理解及落地的。 0x01 负载均衡 && 服务发现 基础    负载均衡 ,顾名思义,是通过某种手段将流量 / 请求分配到不通的服务器上去,保证后台的每个服务...

给 Jekyll 增加 Latex 公式渲染

0x00 介绍 上一次用 Latex 都是 7 年前的事情了,编写密码学的复杂数学公式之必备利器。 0x01 Jekyll 支持 Latex 的设置 第一步,将 _config.yml 中的 markdown 修改为 markdown: kramdown 第二步,在 header 文件中添加引用和设置代码,也就是_include/header.htm...