本文首发于一世流云的我的博客: https://www.tpvlog.com/articl...
《分布式系统从理论到实战系列》是我写的第三个专栏,也将会是涵盖面最广、知识点最复杂的一个专栏。我一直在思考怎样才能将分布式相关的知识系统化的阐述出来,网络上有不少关于分布式的文章、视频、书籍,但要么过于零散,要么泛泛而谈,不多看到有能系统、全面、深刻浅出的阐述和概括实际工做中用的各类分布式知识和框架的系列文章。算法
虽然分布式涉及的东西确实很是庞杂,但我认为仍是能够系统的经过文章由面到点的阐述出来的,由于咱们工做中用到的分布式技术其实就那么几种,剩下的就是在实战中积累经验,坑踩得多了,经验才会丰富。我写这个系列的过程自己也是一个不断自我学习、总结概括的过程,每一个知识点和每一个框架的介绍都参考了很是多的文章、书籍,也感谢前人的总结概括,我后面也会列出我认为一些比较好的书籍供读者参考。缓存
整个系列包含三部分:理论篇、进阶篇、实战篇。咱们先从最基本的“什么是分布式系统?”开始。网络
分布式系统(Distributed System),对于不少刚接触的同窗来讲,听到这个词就会感到畏惧,仿佛以为这是一类很高深的理论或技术。其实否则,分布式理论自己当然很晦涩,但通过几十年的发展,在工业环境应用中已经较为成熟。架构
许多分布式框架为使用者屏蔽了复杂的底层细节,咱们要作的就是掌握基本的分布式理论,而后对各种分布式框架的特性和适用场景有全局性的了解,最后结合应用实际落地的场景,选择适合本身的框架,在应用中逐步去了解框架细节,切勿为了学习而学习,死钻牛角尖。因此,学习分布式技术的诀窍无他,惟熟尔。并发
何谓分布式系统?负载均衡
分布式系统是由集中式系统演化来的,因此在谈分布式系统以前,不妨先来看下传统的集中式系统。框架
所谓集中式系统,就是把全部的程序、功能都集中到一台主机上,从而往外提供服务的单体应用。集中式系统的优势是便于维护、操做简单。分布式
但这样的系统也有缺陷,不出问题还好,一出问题,就容易形成单点故障,全部功能就都不能正常工做了。另外,集中式系统的性能瓶颈就是单机性能的上限,横向扩展比较困难。高并发
为了解决集中式系统存在的缺陷问题,分布式系统诞生并逐渐演化。关于分布式系统的定义有不少,这里引用《分布式系统原理和范型》中的定义:性能
分布式系统是若干独立计算机的集合,这些计算机对于用户来讲就像是单个相关系统。
说的再直白点,分布式系统就是一组经过网络进行通讯、为了完成共同任务而协调工做的计算机节点(Node)组成的系统。系统中的各个节点对于用户是透明的,用户感知不到背后的逻辑,就像访问单个计算机同样。
分布式系统的目标就是要解决集中式系统的各类缺陷,实现整个系统的 高性能、 高可用、 可扩展。可是,要实现这三个目标并不容易,由于将系统从集中式拆分红分布式,会遇到各类各样的问题,好比数据的一致性、节点间通讯方式、节点宕机问题等等。因而为了解决这些问题,诞生出不少分布式基本理论,好比CAP、一致性哈希、BASE等等。
分布式理论是分布式系统可以实现高性能、高可用、可扩展这三个主要目标的基础。
本部分从应用拆分为分布式后遇到的问题出发,介绍解决这些问题背后所依赖的分布式理论,为后续学习高性能、高可用、可扩展打下基础。
本部分主要包含如下文章:
进阶篇和理论篇相辅相成,在进阶篇中,咱们会以一些分布式框架为示例,依然从从高性能、可扩展、高可用三个维度出发讲解分布式理论的落地,以及在运用这些框架时的一些核心关注问题。
进阶篇中,咱们不会具体去讲某个分布式框架怎么使用,可是会罗列出一些比较好的书籍供读者参考。后续若有须要,也会针对某些分布式框架作一个专栏讲解,好比分布式MQ。
本部分包含如下文章:
实战篇部分,咱们会以一个真实的线上系统为案例,从零开始搭建,期间运用理论篇和进阶篇中涉及的各类分布式框架和理论,逐步完善咱们的应用,以掌握各类分布式框架的组合应用。
本部分包含如下文章:
TO BE CONTINUED...