系统各个组件分布于网络上的多个计算机
各个组件彼此之间仅仅通过消息传递垃圾通信并协调行动
多CPU处理
互不通信的线程模型
基于共享容器协同工作的模型
通过事件协调的多线程模型
每个线程响应一个请求
包括 多进程,每个进行生产多个线程,每线程响应一个用户请求
或没线程直接响应多个请求
Blocking IO
一个进程或者一个线程处理一个请求
Nonblocking IO
基于事件驱动(epoll) 思想,采用Reactor模式
Async IO
基于事件驱动思想,采用Proactor模式
lvs的NAT
haproxy, nginx
请求经过中心控制器,响应直接返回源请求
中心结点为规则服务器,
如MySQL 主从复制同步
即backend
可以使用 varnish squid
key-value store: memcached
读压力分散, 即主从同步读写分离
把数据库中不同的业务的数据拆分到不同的数据库中
但是单机的ACID保证被打破,要么放弃事务,要么引入分布式事务
一些join查询操作将变的非常困难
原来依赖于外键实现的约束将无从保证
写压力分散, 需要规则服务器保证不同数据的同步
把一个单独的表中的数据拆分到多个不同的数据库服务器上
但是单机的ACID保证被打破,要么放弃事务,要么引入分布式事务
一些join查询操作将变的非常困难
原来依赖于外键实现的约束将无从保证
自增序列的ID号的产生会有影响
针对单张表的查询很有可能要跨库操作
包括事务参与者,支持事务的服务器,资源服务器,事务管理器
X/Open: XA(分布式事务的规范)
DTP定义三个组件
AP: 应用程序,即使用DTP模型的程序 RM: 资源管理器,即DBMS系统 TM: 事务管理器,负责协调和管理条例,提供给AP应用程序编程接口并管理资源管理器
任何一种分布式系统最多只能同时满足三项中的两项
Consistency: 任何一个读取操作总是能够读取之前完成的写操作 Availablity:每次操作总是能够在确定的时间返回 Tolerance of network Partition:在出现网络分区的情况下,仍然可以满足一致性和可用性
AP: 放弃C,大多数分布式系统都选择此项
CA: 放弃P
CP:
Basically Available
Soft state: 接受一段时间内的状态不同步
Eventually Consistent:最终一致性
文档数据库
列式数据库
TFS,MogileFS:适用于海量小文件
HDFS,GFS:少量大文件
MOM: Message-oriented middleware
在你分布式系统中,完成消息发送和接受的基础性软件
消息队列: RabbitMQ, ActiveMQ, ZMQ