distribute_system 分布式系统
Table of Contents

分布式系统

特点

系统各个组件分布于网络上的多个计算机

各个组件彼此之间仅仅通过消息传递垃圾通信并协调行动

多线程编程

多CPU处理

互不通信的线程模型

基于共享容器协同工作的模型

通过事件协调的多线程模型

网络IO

多进程

每个线程响应一个请求

多线程

包括 多进程,每个进行生产多个线程,每线程响应一个用户请求

或没线程直接响应多个请求

socket 通信开发

BIO

Blocking IO

一个进程或者一个线程处理一个请求

NIO

Nonblocking IO

基于事件驱动(epoll) 思想,采用Reactor模式

AIO

Async IO

基于事件驱动思想,采用Proactor模式

控制器

实现模型

透明代理

lvs的NAT

haproxy, nginx

旁路代理

请求经过中心控制器,响应直接返回源请求

名称服务

规则服务

中心结点为规则服务器,

Master/Slave 机制

如MySQL 主从复制同步

运算器

即backend

存储器

缓存解决方案

页面缓存

可以使用 varnish squid

数据缓存

key-value store: memcached

数据主库压力

数据库拆分

垂直拆分

读压力分散, 即主从同步读写分离

把数据库中不同的业务的数据拆分到不同的数据库中

但是单机的ACID保证被打破,要么放弃事务,要么引入分布式事务

一些join查询操作将变的非常困难

原来依赖于外键实现的约束将无从保证

水平拆分

写压力分散, 需要规则服务器保证不同数据的同步

把一个单独的表中的数据拆分到多个不同的数据库服务器上

但是单机的ACID保证被打破,要么放弃事务,要么引入分布式事务

一些join查询操作将变的非常困难

原来依赖于外键实现的约束将无从保证

自增序列的ID号的产生会有影响

针对单张表的查询很有可能要跨库操作

分布式事务实现

包括事务参与者,支持事务的服务器,资源服务器,事务管理器

模型及规范

X/Open: XA(分布式事务的规范)

DTP定义三个组件

AP 应用程序,即使用DTP模型的程序
RM 资源管理器,即DBMS系统
TM 事务管理器,负责协调和管理条例,提供给AP应用程序编程接口并管理资源管理器
CAP

任何一种分布式系统最多只能同时满足三项中的两项

Consistency: 任何一个读取操作总是能够读取之前完成的写操作

Availablity:每次操作总是能够在确定的时间返回

Tolerance of network Partition:在出现网络分区的情况下,仍然可以满足一致性和可用性

AP: 放弃C,大多数分布式系统都选择此项

CA: 放弃P

CP:

Base模型(加强A和P,在C妥协)

Basically Available

Soft state: 接受一段时间内的状态不同步

Eventually Consistent:最终一致性

NoSQL 非关系存储

文档数据库

列式数据库

DFS 非结构化数据

TFS,MogileFS:适用于海量小文件

HDFS,GFS:少量大文件

异步: 解耦

消息中间件

MOM: Message-oriented middleware

在你分布式系统中,完成消息发送和接受的基础性软件

消息队列: RabbitMQ, ActiveMQ, ZMQ