作品简介

本书分为三大部分,即分布式系统基础理论、分布式系统常用技术以及经典的分布式系统案例分析。第一部分主要介绍分布式系统基础理论知识,总结一些在设计分布式系统时需要考虑的范式、知识点以及可能会面临的问题,其中包括线程、通信、一致性、容错性、CAP理论、安全性和并发等相关内容;同时讲述分布式系统的常见架构体系,其中也包括最近比较火的RESTful风格架构、微服务、容器技术等。第二部分主要列举了在分布式系统应用中经常用到的一些主流技术,并介绍这些技术的作用和用法;这些技术涵盖了分布式消息服务、分布式计算、分布式存储、分布式监控系统、分布式版本控制、RESTful、微服务、容器等领域的内容。第三部分选举了以Twitter为代表的国内外知名互联网企业的大型分布式系统案例,分析其架构设计以及演变过程;这部分相当于是对第二部分零散的技术点做一个“串烧”,让读者可以结合技术的理论,看到实战的效果。

柳伟卫,多年软件开发管理及系统架构经验。负责过多个省、大型分布式系统的设计与研发,也负责过多个大型项目的微服务架构的技术改造,在实际工作中,积累了大量的微服务架构经验。

作品目录

  • 前言
  • 第1章 分布式系统基础知识
  • 1.1 概述
  • 1.1.1 什么是分布式系统
  • 1.1.2 集中式系统VS.分布式系统
  • 1.1.3 如何设计分布式系统
  • 1.1.4 分布式系统所面临的挑战
  • 1.2 线程
  • 1.2.1 什么是线程
  • 1.2.2 进程和线程
  • 1.2.3 编程语言中的线程对象
  • 1.2.4 SimpleThreads示例
  • 1.3 通信
  • 1.3.1 网络基础知识
  • 1.3.2 网络I/O模型的演进
  • 1.3.3 远程过程调用(RPC)
  • 1.3.4 面向消息的通信
  • 1.4 一致性
  • 1.4.1 以数据为中心的一致性模型
  • 1.4.2 以客户为中心的一致性
  • 1.5 容错性
  • 1.5.1 基本概念
  • 1.5.2 故障分类
  • 1.5.3 使用冗余来掩盖故障
  • 1.5.4 分布式提交
  • 1.6 CAP理论
  • 1.6.1 什么是CAP理论
  • 1.6.2 为什么说CAP只能三选二
  • 1.6.3 CAP常见模型
  • 1.6.4 CAP的意义
  • 1.6.5 CAP最新发展
  • 1.7 安全性
  • 1.7.1 基本概念
  • 1.7.2 加密算法
  • 1.7.3 安全通道
  • 1.7.4 访问控制
  • 1.8 并发
  • 1.8.1 线程与并发
  • 1.8.2 并发与并行
  • 1.8.3 并发带来的风险
  • 1.8.4 同步(Synchronization)
  • 1.8.5 原子访问(Atomic Access)
  • 第2章 分布式系统架构体系
  • 2.1 基于对象的体系结构
  • 2.1.1 分布式对象
  • 2.1.2 微软DCOM(COM+)
  • 2.1.3 CORBA
  • 2.1.4 Java RMI
  • 2.2 面向服务的架构(SOA)
  • 2.2.1 架构VS.标准
  • 2.2.2 SOA的基本概念
  • 2.2.3 基于Web Services的SOA
  • 2.2.4 SOA的演变
  • 2.3 REST风格的架构
  • 2.3.1 什么是REST
  • 2.3.2 REST有哪些特征
  • 2.3.3 Java实现REST的例子
  • 2.3.4 REST API最佳实践
  • 2.4 微服务架构(MSA)
  • 2.4.1 什么是MSA
  • 2.4.2 MSA VS.SOA
  • 2.4.3 何时采用MSA
  • 2.4.4 如何构建微服务
  • 2.5 容器技术
  • 2.5.1 虚拟化技术
  • 2.5.2 容器VS.虚拟机
  • 2.5.3 基于容器的持续部署
  • 2.6 Serverless架构
  • 2.6.1 什么是Serverless架构
  • 2.6.2 Serverless典型的应用场景
  • 2.6.3 常见的Serverless框架
  • 2.6.4 Serverless架构原则
  • 2.6.5 例子:使用Serverless实现游戏全球同服
  • 第3章 分布式消息服务
  • 3.1 Apache ActiveMQ
  • 3.1.1 Apache ActiveMQ简介
  • 3.1.2 Apache ActiveMQ安装配置
  • 3.1.3 例子:producer-consumer
  • 3.1.4 例子:使用JMX来监控ActiveMQ
  • 3.1.5 例子:使用Java实现producer-consumer
  • 3.2 RabbitMQ
  • 3.2.1 RabbitMQ简介
  • 3.2.2 RabbitMQ安装配置
  • 3.2.3 例子:Work Queues
  • 3.2.4 例子:Publish/Subscribe
  • 3.2.5 例子:Routing
  • 3.2.6 例子:Topics
  • 3.2.7 例子:RPC
  • 3.3 RocketMQ
  • 3.3.1 RocketMQ简介
  • 3.3.2 RocketMQ安装配置
  • 3.3.3 例子:使用Java实现producer-consumer
  • 3.3.4 RocketMQ最佳实践
  • 3.4 Apache Kafka
  • 3.4.1 Apache Kafka简介
  • 3.4.2 Apache Kafka的核心概念
  • 3.4.3 Apache Kafka的使用场景
  • 3.4.4 Apache Kafka的安装、配置、使用
  • 第4章 分布式计算
  • 4.1 MapReduce
  • 4.1.1 MapReduce简介
  • 4.1.2 MapReduce的编程模型
  • 4.1.3 MapReduce的实现
  • 4.1.4 MapReduce的使用技巧
  • 4.2 Apache Hadoop
  • 4.2.1 Apache Hadoop简介
  • 4.2.2 Apache Hadoop核心组件
  • 4.2.3 Apache Hadoop单节点上的安装配置
  • 4.2.4 Apache Hadoop集群上的安装配置
  • 4.2.5 例子:词频统计WordCount程序
  • 4.3 Apache Spark
  • 4.3.1 Apache Spark简介
  • 4.3.2 Apache Spark与Apache Hadoop的关系
  • 4.3.3 Apache Spark 2.0的新特性
  • 4.3.4 Apache Spark的安装和使用
  • 4.3.5 Apache Spark集群模式
  • 4.4 Apache Mesos
  • 4.4.1 Apache Mesos简介
  • 4.4.2 Apache Mesos的安装、使用
  • 4.4.3 设计高可用的Mesos framework
  • 第5章 分布式存储
  • 5.1 Bigtable
  • 5.1.1 Bigtable简介
  • 5.1.2 Bigtable的数据模型
  • 5.1.3 Bigtable的实现
  • 5.1.4 Bigtable的性能优化
  • 5.2 Apache HBase
  • 5.2.1 Apache HBase简介
  • 5.2.2 Apache HBase基本概念
  • 5.2.3 Apache HBase架构
  • 5.2.4 Apache HBase的安装、配置、使用
  • 5.2.5 本地伪分布式
  • 5.2.6 完全分布式
  • 5.3 Apache Cassandra
  • 5.3.1 Apache Cassandra简介
  • 5.3.2 Apache Cassandra的应用场景
  • 5.3.3 Apache Cassandra的架构、数据模型
  • 5.3.4 用于配置Apache Cassandra的核心组件
  • 5.3.5 Apache Cassandra的安装、配置、使用
  • 5.4 Memcached
  • 5.4.1 Memcached简介
  • 5.4.2 Memcached的架构
  • 5.4.3 Memcached的安装、使用
  • 5.4.4 Memcached客户端
  • 5.5 Redis
  • 5.5.1 Redis简介
  • 5.5.2 Redis的下载、安装、使用
  • 5.5.3 Redis的数据类型及抽象
  • 5.6 MongoDB
  • 5.6.1 MongoDB简介
  • 5.6.2 MongoDB的安装、配置、运行
  • 5.6.3 MongoDB核心概念
  • 5.6.4 MongoDB的数据模型
  • 5.6.5 示例:Java连接MongoDB
  • 第6章 分布式监控
  • 6.1 Nagios
  • 6.1.1 Nagios简介
  • 6.1.2 Nagios的安装、使用
  • 6.1.3 Nagios监控
  • 6.1.4 Nagios插件
  • 6.2 Zabbix
  • 6.2.1 Zabbix简介
  • 6.2.2 安装Zabbix
  • 6.2.3 Zabbix对于容器的支持
  • 6.2.4 Zabbix基本概念
  • 6.3 Consul
  • 6.3.1 Consul简介
  • 6.3.2 Consul架构
  • 6.3.3 Consul的安装和使用
  • 6.3.4 Consul agent
  • 6.4 ZooKeeper
  • 6.4.1 ZooKeeper简介
  • 6.4.2 ZooKeeper的安装和使用
  • 6.4.3 ZooKeeper内部工作原理
  • 6.4.4 例子:ZooKeeper实现barrier和producer-consumer queue
  • 第7章 分布式版本控制系统
  • 7.1 Bazaar
  • 7.1.1 Bazaar简介
  • 7.1.2 Bazaar的核心概念
  • 7.1.3 Bazaar的安装
  • 7.1.4 Bazaar的使用
  • 7.2 Mercurial
  • 7.2.1 Mercurial简介
  • 7.2.2 Mercurial的核心概念
  • 7.2.3 Mercurial的安装
  • 7.2.4 Mercurial的使用
  • 7.3 Git
  • 7.3.1 Git简介
  • 7.3.2 Git的安装
  • 7.3.3 Git的基础概念
  • 7.3.4 Git的使用
  • 第8章 RESTful API、微服务及容器技术
  • 8.1 Jersey
  • 8.1.1 Jersey简介
  • 8.1.2 Jersey的模块和依赖
  • 8.1.3 JAX-RS核心概念
  • 8.1.4 例子:用SSE构建实时Web应用
  • 8.2 Spring Boot
  • 8.2.1 Spring Boot简介
  • 8.2.2 Spring Boot的安装
  • 8.2.3 Spring Boot的使用
  • 8.2.4 Spring Boot的属性与配置
  • 8.3 Docker
  • 8.3.1 Docker简介
  • 8.3.2 Docker的特性
  • 8.3.3 Docker的概念和原理
  • 8.3.4 Docker Engine的安装
  • 8.3.5 Docker的使用
  • 第9章 淘宝网:“双11”神话的缔造者
  • 9.1 从LAMP到Java平台的转变
  • 9.1.1 淘宝网的诞生与发展
  • 9.1.2 “平民英雄”LAMP架构
  • 9.1.3 数据库更改为Oracle
  • 9.1.4 向Java平台转变
  • 9.2 坚定不移地走“去IOE”的道路
  • 9.2.1 使用小型机、EMC存储
  • 9.2.2 考虑“去IOE”
  • 9.2.3 如何去“I”
  • 9.2.4 如何去“O”
  • 9.2.5 如何去“E”
  • 9.3 打造云计算,决战“双11”
  • 9.3.1 “大淘宝”战略简介
  • 9.3.2 成立阿里云,专注云计算
  • 9.3.3 利用大数据优化物流
  • 9.3.4 技术是决胜“双11”的关键
  • 第10章 Twitter:实时信息传递的王者
  • 10.1 缓存,让响应更快
  • 10.1.1 Twitter的诞生
  • 10.1.2 RoR的蛮荒时代
  • 10.1.3 使用Memcached
  • 10.2 服务拆分与治理
  • 10.2.1 关系数据库不是万灵药
  • 10.2.2 系统拆分,平台转换
  • 10.2.3 Finagle
  • 10.3 抗击流量的洪流
  • 10.3.1 业务的重新设计
  • 10.3.2 Storm处理实时的大数据
  • 10.3.3 从Storm到Heron
  • 参考文献
展开全部