0.前言
该书集科普和启发于一身,是了解分布式和微服务,扩宽技术视野的不错的一本书,可以作为导论,先从全局角度了解技术,然后再通过其他途径从具体细节专研。因此这里只对关键概念进行了书写以提升印象。
该书思路是注重前因后果与发展历程,软硬件兼并,以网络,内存,cpu,存储等计算机组件为章节,介绍了如何从单体应用到分布式应用或者所起到的作用。通俗易懂的描述了微服务和分布式,当然本书中也有一些晦涩难懂的部分,对于非科班出身或者计算机组成原理和操作系统学的不太好的同学不是很友好,但是也只是部分。
1.基础
计算机发展历程:
划时代第一台超大型计算机ENIAC(1946)——IBM大型机(1964)——个人PC/小型UNIX服务器——超级计算机
分布式系统的基石:网络
分组交换试验网ARPANET,TCP/IP技术,NSFNET,以太网,Telent协议,万维网,HTTP协议,CDN
网络基础
国际骨干网——国家骨干网——城域网——园区网,
IDC机房:出口路由,核心交换区,网络接入区,增值业务区
NIO
Buffer:字节buffer,堆外buffer,MappedByteBuffer等原理
Netty
非阻塞:TCP/IP滑动窗口,socket底层原理,Reactor模型,mycat-nio
AIO
NIO2,Retry模型,AIO-Linux陷阱
序列化
起因:面向网络,传输对象。数据大传输效率低,其他语言无法对接。
XML,webService——Json,rest——MessagePack/ProtocolBuffer,RPC——Avro/Thrift
2.理论
特征:目标是提升整体性能和吞吐量,故障概率增加
性能,容错。中心化,去中心化,脑裂
一致性:
Kafka一致性案例,Paxos算法,Raft
zookeeper
配置中心,服务注册中心,集群通信与子系统控制
CAP理论
一致性,可用性,网络分区。
BASE理论
主要可用,软状态,最终一致性
分布式事务
数据库单机事务
原子性,一致性,隔离性,持久性
Mysql事务执行流程
X/OpenDTP事务模型
二阶段提交,三阶段提交
分布式事务解决方案:
业务接口整合,最终一致性方案ebay模式,X/OpenDTP模型支付宝DTS框架
3.RPC
socket通信
SunRPC
CORBA的功败垂成
XML-RPC
ZeroC IceGrid
服务治理,Dubbo
SOA
Thrift,gRPC
4.内存
CPU,内存,Cache
多核CPU与内存共享
Cache伪共享问题
不一致性内存
内存缓存技术:
淘汰策略,LRU,LFU,FIFO
缓存实现方式:
进程内村换,单机缓存中间件,分布式缓存中间件
Memcache内存管理策略
内存页,page,chunk,slab。浪费现象slab automove。
Redis:
为何单线程,优势
内存计算产品:
SAP HANA,数据全部放入内存中,充分并行编程,最小化数据传输
VoltDB,采用分区表结合副本表方式处理数据库水平扩展问题
4.存储
磁盘,磁盘阵列,DAS,SAN
NAS,NFS
GFS,GPFS
GlusterFS
Ceph
充分发挥存储设备自身计算能力,完全去中心化的设计思路
CRUSH算法
5.分布式计算
Actor模型
Akka:
并发并行程序简单的高级别抽象,异步非阻塞高性能时间驱动编程模型,轻量级事件驱动处理
Storm
MapReduce
6.全文检索与消息中间件
Lucene
solr
es
消息队列
第一代:ActiveMq,J2EE时代产物,企业级特性。消息持久化存储,事务要求。
第二代:RabbitMq,后Java时代。ActiveMq APollo。AMQP协议。
第三代:Kafka,互联网时代。rocketmq
JMS
点对点消息通信模型,发布订阅模型
7.微服务架构
容器技术
Docker
微服务架构:
1.Rpc框架进化的ICeGrid
2.Rest演化的SpringCloud
3.基于容器技术的kunernetes
常见的微服务方案:
IceGrid,注册中心,独立进程,内嵌负载均衡,一键部署
SpringCloud,Netflix,Eureka,Zuul,Ribbon,Hystric
基于消息队列的微服务,网易蜂巢平台
Docker Swarm
kunernetes
平台领域模型