Linux的进程间通信

进程间通信(IPC) 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内

Linux的进程线程模型

进程模型 在Linux系统中进程由以下三部分组成: 进程控制块PCB 有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。同时,这

布隆过滤器实现

前言 想象一下遇到下面的场景你会如何处理: 手机号是否重复注册 用户是否参与过某秒杀活动 伪造请求大量 id 查询不存在的记录,此时缓存未命中,如何避免缓

如何保证缓存一致性

旁路缓存 在实际业务中,我们经常采用的一种缓存策略如下: 缓存-数据库读流程 用户发起查询请求 业务服务首先根据关键参数作为key查询缓存 如果数据在

Memchache和redis的选型对比

memcache memcache 提供简单的 kv cache 存储,value 大小不超过1mb。 我使用 memcache 作为大文本或者简单的 kv结构使用。 memcache 使用了slab 方式做内存管理,存在一定的浪费

MySQL如何实现ACID

基础概念 事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行

Go如何使用MySQL的XA事务

MySQL的XA事务 介绍 在开发中,为了降低单点压力,通常会根据业务情况进行分表分库,将表分布在不同的库中(库可能分布在不同的机器上),但是一

分布式事务实现原理

事务 把多条语句作为一个整体进行操作的功能,被称为数据库事务。数据库事务可以确保该事务范围内的所有操作都可以全部成功或者全部失败。 事务具有 4 个

BBR自适应限流算法实现

TCP-BBR 算法 BBR(Bottleneck Bandwidth and Round-trip propagation time)是 Google 近年来提出的拥塞控制算法,诞生后大幅度提高了在高延迟等情况下网络传输的吞吐。从命名就

服务隔离与多集群设计

隔离 隔离,本质上是对系统或资源进行分割,从而实现当系统发生故障时能限定传播范围和影响范围,即发生故障后只有出问题的服务不可用,保证其他服务仍

什么是云原生

基本概念 公有云、私有云、混合云 构建可弹性扩展的应用 代表技术:容器、服务网格、微服务、不可变基础设施、声明式 API 容错性好、易于管理、便于观察的松

如何保证服务的稳定性

方法论 事前 容量评估: 根据过往情况评估业务系统性能指标、容量指标 国内做的好的某巨头公司(你们应该知道是哪家),大促期间的系统性能,监控数据都是

Go如何多版本管理

为什么需要多个 Go 版本 有些人可能觉得没有这样的需求。实际工作中,这样的需求还是很常见的。以下一些场景,可能会希望有多版本: 一般为了稳定,线上版

Goroutine的编排实践

任务编排 这里的编排既指安排 goroutine 按照指定的顺序执行,也指多个 chan 按照指定的方式组合处理的方式。goroutine 的编排类似“击鼓传花”的例子,我们

服务发现方案介绍

服务端服务发现(server side discovery) 在服务消费者和服务提供者之间有一个独立的LB,通常是专门的硬件设备如 F5,或者基于软件如 L

Go Perfbook

编写和优化Go代码 本文档概述了编写高性能Go代码的最佳实践。 虽然有些讨论会提高单个服务的速度(通过缓存等),但设计高性能的分布式系统已经超出

哈希算法与哈希表介绍

哈希算法 下面简单介绍下几种比较常用的加密哈希算法: MD5 MD5 即 Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一