分布式事务
分布式事务 单库事务依赖数据库的 ACID 能力;跨服务或跨数据源后,没有天然的全局原子提交。方案选择应围绕一致性要求、可用性、吞吐量和业务补偿成本,而不是追求统一解法。 2PC / XA 2PC 由协调者驱动:第一阶段询问参与者是否可以提 …
分布式事务 单库事务依赖数据库的 ACID 能力;跨服务或跨数据源后,没有天然的全局原子提交。方案选择应围绕一致性要求、可用性、吞吐量和业务补偿成本,而不是追求统一解法。 2PC / XA 2PC 由协调者驱动:第一阶段询问参与者是否可以提 …
今日目标 使用 pivot_root 系统调用实现文件系统隔离 pivot_root vs chroot chroot 只是改动了进程的根路径,并没有真正切断对原文件系统的访问。pivot_root 是 Linux 专门为容器场景设计的接口 …
是什么 UnionFS 即聚合文件系统,是一种虚拟文件系统,用于将多个文件系统聚合为一个挂载点 主要实现有 AUFS 和 OverlayFS 两种,其中前者已被主流抛弃,目前 OverlayFS 才是绝对主流(已并入 Linux 主线内核, …
今日目标 基于 Cgroup 实现资源控制 如何实现 参考 k8s 官方文档, 有以下两种驱动 cgroupfs systemd cgroupfs 直接操作 /sys/fs/cgroup 下的虚拟文件接口, 而 systemd 则通过 …
今日任务 init 传参改用匿名管道 init 传参改用匿名管道 匿名管道 为什么要使用匿名管道 原方案通过 /proc/self/exe init [args...] 将所有参数直接塞进 exec.Command() 调用中,如果参数过长 …
本质 存在于内核内存中的虚拟文件系统,属于进程的资源,内部使用引用计数 特性 数据单向流动 可跨进程 大小 可以通过以下命令查看 $ cat /proc/sys/fs/pipe-max-size 1048576 # 单位 byte, 1 …
仿造一个自己的 docker 今日目标 mydocker run -i -t 基础隔离 启动流程 mydocker run -i -t -> 解析 -> 启动 init 进程 -> 重新挂载 / 为 PRIVATE …
解决了什么问题? 分布式系统通过消息队列等手段互相解耦带来的状态不一致, 如数据落库成功但是kafka消息发送失败等情况 是什么? 利用本地数据库事务的原子性,将数据入库和消息入库(outbox-records)变为原子性操作。 异步启动一 …
快速路径 运用 select 中的 default 分支可以实现无锁(非阻塞)的快速检查 select { case v, ok := <- ch: if !ok { // ch 已经被关闭, 直接返回 return io.EOF } …
新版内核普遍采用 v2 版本的 cgroup 是什么 cgroup 既 Controll group, 是 linux 对外提供的文件接口,用来控制进程资源。 $ mount -t cgroup2 cgroup2 on …