beihai

beihai blog

实现高并发短链接服务

最近在用 Golang 语言实现一个短链接服务[Tiny-URL](https://github.com/beihai0xff/turl),这期间了解了一些关于短链接服务的设计思路,以及分布式系统中 ID 生成、缓存、限流、负载均衡等方面的知识,这篇文章将会对短链接服务的设计思路进行总结。

谈谈 ZooKeeper 的局限性

Zookeeper 是最常用的分布式协调服务之一,用于配置管理、分布式锁、服务注册与发现等。笔者在使用 Zookeeper 的过程中,也意识到了 Zookeeper 局限性,本文将对这些痛点问题进行总结与分析,并提出一些可行的解决方案。

Golang 程序配置管理

通常情况下,我们的应用程序会涉及到很多配置,比如 HTTP/RPC 监听端口、日志相关配置、数据库配置等。这些配置可以来自不同的配置源,例如本地配置文件、环境变量、命令行参数,或是 Consul 一类的远程配置中心,同时一项配置可能在多个不同的配置源中同时存在,需要进行优先级处理。这篇文章介绍使用 koanf 在 Golang 程序中进行配置管理。

Google B-Tree 实现

B-Tree 及其变种数据结构被广泛用于存储系统、数据库系统中,主要作为索引使用,适用于动态随机访问数据的场景。[google/btree] 是一个使用 Go 编写的纯内存 B-Tree 实现,本文对它的源码进行了分析。

Linux 虚拟文件系统

文件系统是对一个存储设备上的数据和元数据进行组织的机制,由于定义如此宽泛,各个文件系统的实现也大不相同,其中常见的文件系统有 ext4、NFS、/proc 等。Linux 采用为分层的体系结构,将用户接口层、文件系统实现和存储设备的驱动程序分隔开,进而兼容不同的文件系统。

2020 年总结:勇敢面对

2020 年发生了许多黑天鹅事件,笔者在这一年也经历了许多意料之外的事情,既定的学习计划一再延期。总体来看,任何选择都伴随着一定的风险,充斥着不确定性,但是不管遇到什么意外事件,笔者认为我们都要学会拥抱变化,勇敢地去面对问题、接受问题、解决问题。