书刊介绍
《分布式系统常用技术及案例分析》内容简介
本书分为三大部分,即分布式系统基础理论、分布式系统常用技术以及经典的分布式系统案例分析。第一部分主要介绍分布式系统基础理论知识,总结一些在设计分布式系统时需要考虑的范式、知识点以及可能会面临的问题,其中包括线程、通信、一致性、容错性、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
参考文献