怎么才能学好分布式架构和相关技术?一起来深入聊聊分布式技术

35 阅读6分钟

20世纪90年代,业界采用了基于接口/构件的架构设计方式,很自然的演化出了 SOA,基于服务的架构,但随着时间的发展,程序设计越来越追求轻量级,慢慢的如 WSDL,XML 被 JSON,RESTful 等方式替代,但是 SOA 的思想一直延续着,也就是如今所说的分布式服务架构。
然而,分布式的世界中涉及到大量的协议(raft、2pc、lease、quorum 等)、大量的理论(FLP, CAP等)、大量的系统(GFS、MongoDB、MapReduce、Spark、RabbitMQ等)。

两个字总结就是:硬核!

我们需要使用分布式系统主要有两个原因:

1.增加系统容量
2.加强系统可用

但就是为了上述的两个理由,引入了更多的复杂性,例如:

架构设计变得异常复杂。
分布式系统下部署流程变得更复杂。
系统的吞吐量会变大,但是响应时间会变长。
运维复杂度会因为服务变多而变得很复杂。
测试和查错的复杂度增大。
技术多元化,这会带来维护和运维的复杂度。
管理分布式系统中的服务和调度变得困难和复杂。

这可能就是技术发展的必然吧:解决一个问题,常常会引入新的问题。
比如,为了提高可用性,引入了冗余;而冗余又带来了副本之间的一致性问题,所以引入了中心化副本协议(primary/secondary);那么接下来就要考虑 primary(节点)故障时候的选举问题。

还有的时候整个设计形成了一个闭环:我们需要提高性能,因此设计了分片缓存,然而为了保证数据的正确性,我们又需要考虑数据的一致性,然后为了数据的一致性,又不得不放弃一定的性能。
下面就给大家分享一份在多年的学习、【+jcc4261获取】工作中积累下来的分布式知识文档

一、分布式系统常用技术及案例分析

分布式场景解决方案.mind图

目录:

本文档共分为10个版块。

**第1版块:**介绍分布式系统基础理论知识,总结一些在设计分布式系统时需要考虑的范式、知

识点以及可能会面临的问题,其中包括线程、通信、-致性、容错性、CAP理论、安全性合并

发等相关内容。

**第2版块:**详细介绍分布式系统的架构体系,包括传统的基于对象的体系结构、SOA,也包括

最近比较火的RESTful风格架构、微服务、容器技术、Serverless 架构等。

**第3版块:**介绍常用的分布式消息服务框架,包括Apache ActiveMQ、RabbitMQ、 RockeMQ、

Apache Kafka等。

**第4版块:**介绍分布式计算理论和应用框架方面的内容,包括MapReduce、Apache Hadoop.

Apache Spark、Apache Mesos等。

**第5版块:**介绍分布式存储理论和应用框架方面的内容,包括Bigtable Apache HBase. Apache

Cassandra、Memcached、 Redis、 MongoDB 等。

**第6版块:**介绍分布式监控方面常用的技术,包括Nagios、Zabbix、Consul、 ZooKeeper 等。

**第7版块:**介绍常用的分布式版本控制工具,包括Bazaar、Mercurial、 Git 等。

  

**第8版块:**介绍RESTful API、微服务及容器相关的技术,着重介绍Jersey、Spring Boot、Docker

等技术的应用。

**第9版块和第10版块:**分别介绍以淘宝网和Twitter为代表的国内外知名互联网企业的大型分布

式系统案例,分析其架构设计以及演变过程。

总内容截图:

二、分布式事务专题

  1. 基础概念

  2. 分布式事务基础理论

  3. 分布式事务解决方案之2PC(两阶段提交)

  4. 分布式事务解决方案之TCC

  5. 分布式事务解决方案之可靠消息最终一致性

  6. 分布式事务解决方案之最大努力通知

  7. 分布式事务综合案例分析

总内容截图:

三、从Paxos到ZooKeeper分布式一致性原理与实践

在计算机科学领域,分布式一致性问题是一个相当重要,且被广泛探索与论证的问题,通常存在于诸如分布式文件系统,级存系统和數据库等大型分布式存储系统中。什么是分布式一致性?分布式一致性分为哪些类型?分布式系统达到一致性后将会是一个什么样的状态?如果失去了一致性约束,分布式系统是否还可以依赖?如果一味地追求一致性,对系统的整体架构和性能又有多大影响?这一系列的问题,似乎都没有一个严格意义上准确的定义和答案。

第一版块:分布式架构

  1. 从集中式到分布式
  2. 从ACID到CAP/BASE

第二版块:一致性协议

  1. 2PC与3PC
  2. Paxos算法

第三版块:Paxos的工程实践

  1. Chubby
  2. Hypertable

第四版块:ZooKeeper与Paxos

  1. 初识ZooKeeper
  2. ZooKeeper的ZAB协议

第五版块:使用ZooKeeper

  1. 部客与运行
  2. 客户端脚本
  3. Java客户端API使用
  4. 开源客户端

第六版块:ZooKeeper的典型应用场景

  1. 典型应用场景及实现注
  2. ZooKeeper在大型分布式系统中的应用
  3. ZooKeeper在阿里巴巴的实践与应用

第七版块:ZooKeeper技术内幕

  1. 系统模型
  2. 序列化与协议
  3. 客户端
  4. 会话
  5. 服务器启动
  6. Leader选举
  7. 各服务器角色介绍
  8. 请求处理
  9. 数据与存储

第八版块:ZooKeeper运维

  1. 配置详解

  2. 四字命令

  3. JMX

  4. 监控

  5. 构建一个高可用的集群

  6. 日常运维

总内容截图:

四、分布式数据库架构企业实践基于Mycat中间件

本文档总计8章,首先简单介绍了分布式系统和分布式数据库的需求,然后讲解了分布式数据库的实现原理,并对市场上存在的各种分布式数据库中间件进行了对比,再围绕着如何利用Mycat实现分布式数据库而展开。对Mycat从入门到进阶、从高级技术实践到架构剖析、从网络通信协议解析到系统工作原理的方方面面进行了详细讲解,并剂析Mycat的SQL路由、跨库联合查询、分布式事务及原生MySQL. PostgreSQL 协议等核心技术。通过本书不可以了解Mycat的基本概念,掌握Mycat配置等技术,还能感受到Mycat的架构设计之美,了解Mycat。

  1. 数据库中间件与分布式数据库的实现

  2. Mycat入门

  3. Mycat进阶

  4. Mycat高级技术实战

  5. Mycat企业运维

  6. Mycat架构剖析

  7. Mycat核心技术分析

  8. Mycat多数据库支持原理与实现

     

总内容截图: