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为代表的国内外知名互联网企业的大型分布
式系统案例,分析其架构设计以及演变过程。
总内容截图:
二、分布式事务专题
-
基础概念
-
分布式事务基础理论
-
分布式事务解决方案之2PC(两阶段提交)
-
分布式事务解决方案之TCC
-
分布式事务解决方案之可靠消息最终一致性
-
分布式事务解决方案之最大努力通知
-
分布式事务综合案例分析
总内容截图:
三、从Paxos到ZooKeeper分布式一致性原理与实践
在计算机科学领域,分布式一致性问题是一个相当重要,且被广泛探索与论证的问题,通常存在于诸如分布式文件系统,级存系统和數据库等大型分布式存储系统中。什么是分布式一致性?分布式一致性分为哪些类型?分布式系统达到一致性后将会是一个什么样的状态?如果失去了一致性约束,分布式系统是否还可以依赖?如果一味地追求一致性,对系统的整体架构和性能又有多大影响?这一系列的问题,似乎都没有一个严格意义上准确的定义和答案。
第一版块:分布式架构
- 从集中式到分布式
- 从ACID到CAP/BASE
第二版块:一致性协议
- 2PC与3PC
- Paxos算法
第三版块:Paxos的工程实践
- Chubby
- Hypertable
第四版块:ZooKeeper与Paxos
- 初识ZooKeeper
- ZooKeeper的ZAB协议
第五版块:使用ZooKeeper
- 部客与运行
- 客户端脚本
- Java客户端API使用
- 开源客户端
第六版块:ZooKeeper的典型应用场景
- 典型应用场景及实现注
- ZooKeeper在大型分布式系统中的应用
- ZooKeeper在阿里巴巴的实践与应用
第七版块:ZooKeeper技术内幕
- 系统模型
- 序列化与协议
- 客户端
- 会话
- 服务器启动
- Leader选举
- 各服务器角色介绍
- 请求处理
- 数据与存储
第八版块:ZooKeeper运维
-
配置详解
-
四字命令
-
JMX
-
监控
-
构建一个高可用的集群
-
日常运维
总内容截图:
四、分布式数据库架构企业实践基于Mycat中间件
本文档总计8章,首先简单介绍了分布式系统和分布式数据库的需求,然后讲解了分布式数据库的实现原理,并对市场上存在的各种分布式数据库中间件进行了对比,再围绕着如何利用Mycat实现分布式数据库而展开。对Mycat从入门到进阶、从高级技术实践到架构剖析、从网络通信协议解析到系统工作原理的方方面面进行了详细讲解,并剂析Mycat的SQL路由、跨库联合查询、分布式事务及原生MySQL. PostgreSQL 协议等核心技术。通过本书不可以了解Mycat的基本概念,掌握Mycat配置等技术,还能感受到Mycat的架构设计之美,了解Mycat。
-
数据库中间件与分布式数据库的实现
-
Mycat入门
-
Mycat进阶
-
Mycat高级技术实战
-
Mycat企业运维
-
Mycat架构剖析
-
Mycat核心技术分析
-
Mycat多数据库支持原理与实现