分布式系统
分布式系统
分布式 id 生成方案
要求
- 唯一性:生成的ID全局唯一,在特定范围内冲突概率极小
- 有序性:生成的ID按某种规则有序,便于数据库插入及排序。
- 可用性:可保证高并发下的可用性, 确保任何时候都能正确的生成ID。
- 自主性:分布式环境下不依赖中心认证即可自行生成ID。
- 安全性:不暴露系统和业务的信息, 如:订单数,用户数等。
方法
数据库自增ID:数据库水平拆分;每次生成一批ID;
优点:
简单,天然有序。缺点:
1. 并发差。
2. 数据库故障后不可用。UUID生成:结合时间、随机数、mac地址生成UUID
优点:
本地生成,简单。
缺点:- 不易存储。
- 不安全。
雪花算法:把64bit分别划分成多段,分开表示时间、机器、序号等。
优点:
灵活
分布式事务的理解
事务就是为了保证不同数据库的数据一致性。
ACID特性: 原子性、一致性、隔离性、持久性。
实现负载均衡的方法
- 随机
- 轮询
- 一致哈希
- 主备
进程和线程和协程
进程:运行中的应用程序。每个进程拥有独立的地址空间。是系统进行资源调度和分配的基本单位,实现了操作系统的并发。
线程:进程的子任务。是CPU调度和分派的基本单位,实现进程内部的并发。
协程:看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。
通信
进程通信方式:
- 管道通信
- 消息队列通信
- 共享内存:映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。
- 套接字
线程通信方式:
- 等待/通知机制
线程池
重复利用已创建的线程,减少资源消耗。
提高线程的可管理性。
提高响应速度