《大型网站系统与Java中间件实践》第一章笔记:分布式系统基础

需积分: 9 8 下载量 173 浏览量 更新于2024-09-13 2 收藏 892KB DOC 举报
"大型网站系统与Java中间件实践读书笔记(一)—— 分布式系统基础知识" 本章节主要探讨了分布式系统的基本概念和关键知识点,包括计算机系统的五要素、线程与进程的执行模式、网络通信基础知识以及如何将应用从单机扩展到分布式系统。 1.1 初识分布式系统 分布式系统是由多个独立的计算机节点通过网络连接,共同协作完成一项任务的系统。这样的系统可以提供高可用性、高性能和可扩展性,是构建大型网站系统的基础。 1.2 分布式系统的基础知识 1.2.1 组成计算机的五要素 计算机系统由输入设备、输出设备、存储(包括内存和外存)、运算和控制这五个基本部分组成。在分布式系统中,这些元素可能分布在不同的节点上,通过网络进行交互。 1.2.2 线程与进程的执行模式 - 阿萨姆定律强调并发执行的重要性,它指出并行代码的比例决定了添加处理器后系统性能的提升程度。 - 互不通信的多线程模式:线程之间无直接交互,各自独立执行。 - 基于共享容器协同的多线程模式:线程间共享数据,需要同步和互斥机制来保证数据一致性,如生产者消费者问题。 - 基于事件协同的多线程模式:线程间通过事件触发进行协调,防止死锁的发生。 1.2.2.5 多进程模式 多进程与多线程类似但有区别,进程间通信、协同和资源管理相对复杂,但具有更好的隔离性和容错性。进程间的通信通常涉及序列化和反序列化。 1.2.3 网络通信基础知识 1.2.3.1 OSI与TCP/IP网络模型:理解网络通信的层次结构,包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。TCP/IP模型则简化为四层,分别是网络接口层、网络层、传输层和应用层。 1.2.3.2 网络IO实现方式: - BIO(Blocking IO):传统的阻塞式IO,当进行IO操作时,会阻塞当前线程直到IO操作完成。 - NIO(Non-blocking IO):非阻塞IO,允许多个IO操作并发进行,提高了效率。 - AIO(Asynchronous IO):异步IO,应用程序可以注册感兴趣的IO事件,当事件发生时,操作系统通知应用程序。 1.2.4 如何把应用从单机扩展到分布式 1.2.4.1 输入设备:在分布式系统中,输入不再局限于传统的人机交互设备,还包括节点间的通信接口。 1.2.4.2 输出设备:输出同样扩展为节点间的通信输出和其他传统输出设备。 1.2.4.3 控制器:分布式系统中,控制逻辑分布在多个节点上,通过网络协调工作。 总结来说,分布式系统的核心在于如何有效地管理多个节点的资源,实现数据的一致性、高可用性和可扩展性。这需要深入理解线程与进程的协同、网络通信机制以及如何将单机应用转变为分布式架构。《大型网站系统与Java中间件实践》第一章为后续深入学习分布式系统和Java中间件奠定了坚实的基础。