分布式系统

来源:互联网 发布:帝国时代mac版 编辑:程序博客网 时间:2024/05/21 23:16

什么是分布式系统:组件分布在网络计算机上,组件之间仅仅通过消息传递来通信并协调行动。

为什么使用分布式系统:1.升级单机系统性价比低,2.单机系统存在系能瓶颈,3.出于稳定性和可用性。

多线程交互方式:1.互不通信,2.基于共享容器,如生产者和消费者例子,3.通过事件协同,如wait/notify。
分布式系统就是多机的多进程。

网络通信:我们使用比较多的是TCP/IP网络模型,使用Socket编程主要有三种实现方式:BIO,NIO,AIO。
BIO:阻塞IO,一个套接字需要一个线程来处理,在建立连接,读数据,写数据的时候都有可能阻塞。
NIO:非阻塞IO,一个线程可以为多个套接字服务,基于事件驱动思想,Reactor管理所有的handler,当有事件出现时,交给对应的handler去处理。
AIO:异步IO,AIO在进行读写操作时,只需要传入调用read/write方法,并且传入相应的动作完成处理器,当读或者写操作完成时会调用它。与NIO主要区别是:NIO在有通知时表示可以进行操作,而AIO在有通知时表示操作完成。

应用从单机到分布式:
输入设备/输出设备:传来信息或者接受信息的其他节点。
控制器:协调或控制节点间的动作或行为。1:使用硬件负载均衡,2:使用LVS的请求调用,3:基于名称服务的直连方式,名称服务需要收集服务器地址信息并且提供给请求方,而负载均衡的工作需要请求方实现。4:基于规则服务器,与名称服务类似,不同点是规则服务器只需提供给请求方规则,请求方需要对规则做出解析来选择服务器节点。5:Master+Worker:由Master将工作分给不同的Worker去处理。
运算器:由多个节点组成。
存储器:由承担存储功能的多个节点组成,需要控制器的配合。1:使用代理服务器,2:使用名称服务,3:使用规则服务器,4:基于Master和Worker。

分布式系统难点:1:缺乏全局时钟,2:找到解决故障独立性的办法,3:解决单点故障:a:将单点实现变为集群实现,b:做好备份,c:降低单点故障影响范围。4:事物问题。

原创粉丝点击