分布式学习笔记

分布式学习笔记

  • 分布式基础理论
    • 双活数据中心
    • 重要指标
      • QPS
      • TPS
      • 参考文档
    • 一致性算法Raft
    • CAP 理论
  • 分布式ID生成器
  • 分布式锁
    • 分布式锁的出现背景
    • 单机锁的实现方案
      • 进程内加锁
      • tryLock
    • 分布式锁的实现方案
      • 基于Redis的setnx
      • 基于etcd
      • 基于ZooKeeper
    • 参考文档
  • 分布式框架
    • Zookeeper学习笔记
    • etcd学习笔记
      • etcd 的基本概念
      • etcd 的安装及常用命令
      • etcd 的使用场景
        • 场景一:服务发现(Service Discovery)
        • 场景二:消息发布与订阅
        • 场景三:负载均衡
        • 场景四:分布式通知与协调
        • 场景五:分布式锁
        • 场景六:分布式队列
        • 场景七:集群监控与Leader竞选
        • 场景八:为什么用etcd而不用ZooKeeper?
        • 参考文档

分布式基础理论

双活数据中心

重要指标

QPS

QPS: queries per second,每秒请求处理数
QPS = req/sec = 请求数/秒

TPS

TPS: TransactionPerSecond,每秒事务处理量

参考文档

tps (每秒事务处理量(TransactionPerSecond))
PV、TPS、QPS是怎么计算出来的?

一致性算法Raft

Raft一致性算法笔记
Raft 为什么是更易理解的分布式一致性算法
从分布式一致性到共识机制(二)Raft算法
Raft一致性算法
理解分布式一致性与Raft算法
一致性算法 - Raft

CAP 理论

分布式数据系统中的CAP定理

分布式ID生成器

Twitter的分布式自增ID算法snowflake (Java版)
SnowFlake之JAVA实现
雪花算法(SnowFlake)Java实现
全局唯一ID生成器(SnowFlakeId算法JAVA实现)

分布式锁

分布式锁的出现背景

在程序中并发或并行修改全局变量时,需要对全局变量加锁;如果不加锁,会发生数据的并发修改情况,最终影响运行结果。
例如如下需求: 启动1000个协程同时对全局变量(未加锁)进行修改,预期其运行结果为1000,但程序实际运行结果不是等于1000的。
unlock_test.go

单机锁的实现方案

进程内加锁

1000个协程并发修改全局变量,在程序中每个协程对全局变量进行修改时,都对全局变量进行加锁,修改完毕后释放锁。始终保持只有一个协程在对全局变量进行修改,最终可得到正确的结果。
wg_lock_test.go

tryLock

trylock顾名思义, 尝试加锁, 加锁成功执⾏后续流程, 如果加锁失败的话也不会阻塞, ⽽会直接返回
加锁的结果。 在Go语⾔中我们可以⽤⼤⼩为1的Channel来模拟trylock:
trylock_test.go

分布式锁的实现方案

基于Redis的setnx

setnx: 设置缓存;在键不存在的情况下,缓存会设置成功;在键存在的情况下,缓存会设置失败。
使用Redis的setnx指令,配置缓存过期时间,可以保证一定时间内只有一个线程获得锁;
redis_lock_test.go

基于etcd

etcd_lock_test.go

基于ZooKeeper

zookeeper_lock_test.go

参考文档

基于数据库实现的分布式锁
大家所推崇的Redis分布式锁真的就万无一失吗?

分布式框架

Zookeeper学习笔记

ubuntu下的linux系统zookeeper部署
ubuntu 安装 zookeeper
Ubuntu 18 下安装zookeeper

etcd学习笔记

etcd 的基本概念

官网
etcd——基于Golang实现的一个高可用的分布式键值(key-value)数据库,主要用于配置信息管理和服务发现
etcd 可启动多个实例

etcd 的安装及常用命令

etcd 的使用场景

场景一:服务发现(Service Discovery)

场景二:消息发布与订阅

场景三:负载均衡

场景四:分布式通知与协调

场景五:分布式锁

场景六:分布式队列

场景七:集群监控与Leader竞选

场景八:为什么用etcd而不用ZooKeeper?

参考文档

ETCD 简介 + 使用
ETCD 与 服务发现
Etcd项目介绍
Etcd - 分布式配置中心
ETCD简介与使用
ETCD应用

你可能感兴趣的:(分布式)