前言
大型网站或者企业级应用往往要求高并发、高性能、高可用,而传统的集中式系统已无法满足需求,系统架构正向着分布式系统不断演进。同时,越来越多的企业选择通过云的方式发布和部署应用,这也大大促进了分布式系统的发展。未来将是分布式系统“爆发”的时代。本文正是对分布式系统的原理做了全面的总结,同时辅以大量的实战案例,令读者可以轻松入门分布式系统。
目录
主要内容
本文从原理和实践角度全面介绍如何设计分布式系统。内容包括节点、通信、并发与并行、面向对象的分布式架构、面向服务的分布式架构、面向消息的分布式架构、REST风格的架构、微服务架构、Serverless架构、CloudNative架构、虚拟化与容器技术、分布式计算、分布式存储、分布式监控、分布式版本控制、数据一致性、分布式事务、安全性、可用性等。全文内容丰富、案例新颖,相关理论与技术实践较为前瞻。本文最后还提供了一个综合实战案例,手把手教读者基于SpringCloud技术来实现微服务架构。本文面向的读者主要是对分布式系统感兴趣的计算机专业学生、软件工程师、系统架构师等。
第1章分布式系统概述,本章介绍分布式系统的基本概念、特征以及设计分布式系统所要面临的挑战。
第2章节点,分布式系统中,程序往往会部署到不同的节点中。不同的节点之间需要通过网络来进行通信。每个节点的独立运算的结果最终汇集以支撑起分布式系统的庞大运算量。在实际的项目中,一个节点往往是一个操作系统上的进程。
本章介绍了节点上的进程、线程、纤程的概念及其之间的关系。同时也介绍了网络通信常见的异常场景。
第3章通信,进程间的通信是一切分布式系统的核心。如果没有通信机制,分布式系统的各个子系统将是“一盘散沙”,毫无作用。
本章将介绍网络通信的基础知识,以及常用的通信方式。
第4章并发与并行,分布式系统的一个重要特征就是计算能力是可以并发或者并行的。在分布式系统中,往往会将一个大任务进行分解,而后下发给不同的节点去计算,从而节省整个任务的计算时间。
第5章面向对象的分布式架构,面向对象编程是非常流行的编程模式,因此,在分布式系统中,基于对象来设计分布式架构是自然而然的。本章介绍面向对象的分布式架构。
第6章面向服务的分布式架构,面向对象的分布式架构有其限制,比如与平台强关联、实现复杂等。因此,近些年来,面向服务的分布式架构逐渐兴起。本章介绍面向服务的分布式架构。
第7章面向消息的分布式架构,面向服务的分布式架构普遍会采用HTTP作为通信协议。而HTTP都是遵循“请求-响应”模式,在服务器未返回结果之前,客户端会一致等待,直到获取到结果或者是超时未知,这在一定程度上限制了程序的处理能力,毕竟等待就是浪费。同时,HTTP也不一定完全可靠。
因此,对于实时、高并发、高可用这类接口而言,采用消息通信的方式更为合适。本章介绍面向消息的分布式架构。
第8章REST风格的架构,在第6章中,我们介绍了Web服务。其中Web服务又可以分为“大”Web服务及RESTfulWeb服务。本章将深入讨论RESTfulWeb服务及其架构风格。
第9章微服务架构,自年业界提出“微服务(Microservices)”的概念以来,微服务架构就不断演进,并且日趋火爆。越来越多的企业拥抱微服务,期望通过微服务的架构来解决大型项目的管理与运维。
那么什么是微服务?微服务架构与传统的SOA架构有什么区别?何时应该采用微服务架构?如何构建微服务?本章就针对上述提到的问题,来简单介绍下微服务架构。
第10章Serverless架构,在目前主流云计算基础设施即服务(Infrastructure-as-a-Service,IaaS)和平台即服务(Platform-asa-Service,PaaS)中,开发者进行业务开发时,仍然需要关心很多和服务器相关的服务器开发工作,比如缓存、消息服务、Web应用服务器、数据库,以及对服务器进行性能优化,考虑存储和计算资源,考虑负载和扩展,考虑服务器容灾稳定性等非业务逻辑的开发。对于这些服务器的运维和开发,知识和经验极大地限制了开发者进行业务开发的效率。设想一下,如果开发者直接租用服务或者开发服务而无须