本文首发于一世流云的个人博客:https://www.tpvlog.com/articl...
《分布式系统从理论到实战系列》是我写的第三个专栏,也将会是涵盖面最广、知识点最复杂的一个专栏。我一直在思考怎样才能将分布式相关的知识系统化的阐述出来,网络上有很多关于分布式的文章、视频、书籍,但要么过于零散,要么泛泛而谈,很少看到有能系统、全面、深入浅出的阐述和归纳实际工作中用的各种分布式知识和框架的系列文章。
虽然分布式涉及的东西确实非常庞杂,但我认为还是可以系统的通过文章由面到点的阐述出来的,因为我们工作中用到的分布式技术其实就那么几种,剩下的就是在实战中积累经验,坑踩得多了,经验才会丰富。我写这个系列的过程本身也是一个不断自我学习、总结归纳的过程,每个知识点和每个框架的介绍都参考了非常多的文章、书籍,也感谢前人的总结归纳,我后面也会列出我认为一些比较好的书籍供读者参考。
整个系列包含三部分:理论篇、进阶篇、实战篇。我们先从最基本的“什么是分布式系统?”开始。
一、简介
分布式系统(Distributed System),对于很多刚接触的同学来说,听到这个词就会感到畏惧,仿佛觉得这是一类很高深的理论或技术。其实不然,分布式理论本身固然很晦涩,但经过几十年的发展,在工业环境应用中已经较为成熟。
许多分布式框架为使用者屏蔽了复杂的底层细节,我们要做的就是掌握基本的分布式理论,然后对各类分布式框架的特性和适用场景有全局性的了解,最后结合应用实际落地的场景,选择适合自己的框架,在应用中逐步去了解框架细节,切勿为了学习而学习,死钻牛角尖。所以,学习分布式技术的诀窍无他,唯熟尔。
何谓分布式系统?
分布式系统是由集中式系统演化来的,所以在谈分布式系统之前,不妨先来看下传统的集中式系统。
所谓集中式系统,就是把所有的程序、功能都集中到一台主机上,从而往外提供服务的单体应用。集中式系统的优点是便于维护、操作简单。
但这样的系统也有缺陷,不出问题还好,一出问题,就容易造成单点故障,所有功能就都不能正常工作了。另外,集中式系统的性能瓶颈就是单机性能的上限,横向扩展比较困难。
为了解决集中式系统存在的缺陷问题,分布式系统诞生并逐渐演化。关于分布式系统的定义有很多,这里引用《分布式系统原理和范型》中的定义:
分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。
说的再直白点,分布式系统就是一组通过网络进行通信、为了完成共同任务而协调工作的计算机节点(Node)组成的系统。系统中的各个节点对于用户是透明的,用户感知不到背后的逻辑,就像访问单个计算机一样。
分布式系统的目标就是要解决集中式系统的各种缺陷,实现整个系统的高性能、高可用、可扩展。但是,要实现这三个目标并不容易,因为将系统从集中式拆分成分布式,会遇到各种各样的问题,比如数据的一致性、节点间通信方式、节点宕机问题等等。于是为了解决这些问题,诞生出很多分布式基本理论,比如CAP、一致性哈希、BASE等等。
二、理论篇
分布式理论是分布式系统能够实现高性能、高可用、可扩展这三个主要目标的基础。
本部分从应用拆分为分布式后遇到的问题出发,介绍解决这些问题背后所依赖的分布式理论,为后续学习高性能、高可用、可扩展打下基础。
本部分主要包含以下文章:
- 分布式理论之分布式一致性(1):CAP理论
- 分布式理论之分布式一致性(2):BASE理论
- 分布式理论之分布式一致性(3):Paxos算法
- 分布式理论之分布式一致性(4):Raft算法
- 分布式理论之分布式事务(5):2PC
- 分布式理论之分布式事务(6):3PC
- 分布式理论之分布式事务(7):TCC
- 分布式理论之分布式事务(8):可靠消息最终一致性方案
- 分布式理论之可扩展(9):一致性Hash
- 分布式理论之可扩展(10):Range Based
- 分布式理论之可扩展(11):全局流水号
- 分布式理论之可扩展(12):服务化拆分
- 分布式理论之高可用(13):Master-Slave
- 分布式理论之高可用(14):集群
- 分布式理论之高可用(15):降级、熔断、限流
- 分布式理论之高性能(16):读写分离
- 分布式理论之高性能(17):分库分表
- 分布式理论之高性能(18):分布式缓存
- 分布式理论之高性能(19):负载均衡
三、进阶篇
进阶篇和理论篇相辅相成,在进阶篇中,我们会以一些分布式框架为示例,依然从从高性能、可扩展、高可用三个维度出发讲解分布式理论的落地,以及在运用这些框架时的一些核心关注问题。
进阶篇中,我们不会具体去讲某个分布式框架怎么使用,但是会罗列出一些比较好的书籍供读者参考。后续如有需要,也会针对某些分布式框架做一个专栏讲解,比如分布式MQ。
本部分包含以下文章:
- 分布式框架概述(1)
- 分布式框架之高性能(2):消息队列概述
- 分布式框架之高性能(3):消息队列的可用性
- 分布式框架之高性能(4):消费的幂等性
- 分布式框架之高性能(5):消息丢失
- 分布式框架之高性能(6):消息有序性
- 分布式框架之高性能(7):消息积压
- 分布式框架之高性能(8):搜索引擎概述
- 分布式框架之高性能(9):ElasticSearch架构
- 分布式框架之高性能(10):ElasticSearch优化
- 分布式框架之高性能(11):Redis线程模型
- 分布式框架之高性能(12):Redis缓存策略
- 分布式框架之高性能(13):Redis持久化
- 分布式框架之高性能(14):Redis复制
- 分布式框架之高性能(15):Redis的Master-Slave架构
- 分布式框架之高性能(16):Redis哨兵架构
- 分布式框架之高性能(17):Redis集群架构
- 分布式框架之高性能(18):Redis分布式锁
- 分布式框架之高性能(19):高并发架构演进示例
- 分布式框架之可扩展(20):Dubbo简介
- 分布式框架之可扩展(21):Dubbo的SPI机制
- 分布式框架之可扩展(22):Spring Cloud简介
- 分布式框架之可扩展(23):Eureka基本原理
- 分布式框架之可扩展(24):服务网关
- 分布式框架之可扩展(25):Ribbon简介
- 分布式框架之可扩展(26):Zookeeper简介
- 分布式框架之可扩展(27):Zookeeper分布式锁
- 分布式框架之可扩展(28):分布式Session
- 分布式框架之高可用(29):Hystrix简介
- 分布式框架之高可用(30):Hystrix资源隔离
- 分布式框架之高可用(31):Hystrix请求流程
- 分布式框架之高可用(32):Hystrix降级
- 分布式框架之高可用(33):Hystrix断路器
四、实战篇
实战篇部分,我们会以一个真实的线上系统为案例,从零开始搭建,期间运用理论篇和进阶篇中涉及的各种分布式框架和理论,逐步完善我们的应用,以掌握各种分布式框架的组合应用。
本部分包含以下文章:
- 分布式实战之系统背景:系统概述
TO BE CONTINUED...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。