Published onNovember 22, 2024基于 Postgres 的通知模式(Notifier Pattern)backendgodatabasePostgres 的 LISTEN/NOTIFY 功能通过通知器模式优化了连接管理,减少了每个程序需要的数据库连接数量,避免了为每个主题创建多个连接。通过使用缓冲通道和非阻塞发送,通知器能够高效处理大量通知。同时,结合上下文超时机制和“让它崩溃”策略,可以确保系统在出现问题时快速恢复。PgBouncer 的会话池模式支持 LISTEN,提高连接效率。Read more →
Published onNovember 21, 2024Go 1.22 中更优秀的 HTTP 服务器路由backendgoGo 1.22 将引入增强版 HTTP 路由多路复用器,提供更强大的路径匹配和方法路由能力。新的 ServeMux 支持通配符、方法限定和细粒度路由,有望减少对第三方路由库的依赖,为 Go Web 开发带来便利。Read more →
Published onNovember 18, 2024深入理解 Go 的 Context 包backendgoGo 的 context 包提供了强大的工具,用于管理请求范围内的超时、取消和数据传递。通过函数如 WithCancel、WithTimeout 和 WithValue,开发者可高效处理并发任务和资源释放,是构建健壮程序的重要组件。Read more →
Published onNovember 15, 2024使用Redis实现Golang API限流backendgo这篇文章介绍了如何使用Redis在Golang API中实现限流功能。通过Gin框架搭建HTTP服务器,利用go-redis/redis_rate包来追踪和限制每个IP地址的请求频率。文章通过实例代码展示了如何设置每分钟10次的请求限制,并详细说明了限流器的工作原理和实现方法。Read more →
Published onNovember 14, 2024深入Docker内部原理 - 联合文件系统dockerbackendDocker的联合文件系统(如OverlayFS)通过将多个只读镜像层和一个可写容器层合并为一个虚拟文件系统,实现了高效的资源共享和容器隔离。利用写时复制(CoW)技术,容器只在修改文件时复制数据,节省了存储和提高了性能。理解这些原理有助于优化Docker的使用,尤其是在性能和安全性方面。Read more →