每个程序员,都渴望成为一名分布式系统架构师,Java进阶知识图谱

2021年09月15日 阅读数:2
这篇文章主要向大家介绍每个程序员,都渴望成为一名分布式系统架构师,Java进阶知识图谱,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
  • 业务如此复杂,为了公司的发展,业务能继续扩大,就须要能更加精准的营销和运营,咱们还须要对数据进行实时、离线处理分析,此时,咱们又得考虑分布式计算技术。git

  • 在业务拆分后,总体架构出现了巨变,不可能再用之前集群方式的思惟去考虑高可用,那么分布式的可靠性技术又要归入咱们的掌握范畴。 程序员

    在这里插入图片描述

    你看分布式系统的技术栈这么多、这么复杂对吧,别慌。面试

我写这篇文章不是为了劝退大家的,咱们要学习必须分步骤分主题的学习,对总体的分布式技术栈分而克之,逐步掌握。算法

[](数据库

)4. 如何学习分布式系统的技术栈后端


在分布式技术栈中咱们能够看到,其实分布式技术是有分类的,咱们能够根据不一样的分类去掌握每种类别的分布式技术背后的概念和思想。不管分布式技术有多少实现,这些实现永远都是以其所在分类的分布式技术原理做为核心底层来实现的。缓存

同时呢,咱们在学习当中,还必须理论联系实际,根据咱们的实际开发和架构须要学习。安全

并且,业务是逐步发展的,项目也不会一下就发展的特别庞大。这就给与了咱们分步学习,逐步掌握的时间和机会。服务器

[](markdown

)4.1 分布式通讯


那具体到底如何作呢?

首先,分布式中的根基是什么?就我本身的经历而言,我认为是通讯,最重要的其实分布式系统中那些模块中的通讯机制。

而通讯机制该怎么学习?我认为首先要了解咱们可用的各通讯机制的区别。其中尤其重要的是了解各通讯机制的缺点。对,你没看错,就是缺点。

为何缺点最重要呢?由于架构师在架构的时候,一项尤其重要的工做就是作技术选型。而技术选型的目标不少时候的应用场景每每很是模糊,若是能了解到各选型的缺点,则对选型的结果是否准确就起到了极其重要的做用。

好比,咱们如今想搞模块间通讯,那么究竟是用 RPC 仍是用 MQ ?此时,咱们知道 RPC 的缺点和 MQ 的缺点的话,就能很容易作出更准确的选型。

RPC 的缺点:

  1. 不能搞流量削锋

  2. 不能广播给多个模块

  3. 消息投递没有保证

  4. 模块和模块之间无法解耦

MQ 的缺点:

  1. 不能保证延迟时间

  2. 不适合搞强一致性的事务

  3. 增长了系统的复杂度

  4. 下降了系统的可用性

好了,知道了缺点,咱们就很容易选型了。若是咱们如今有个业务是实时扣费,咱们确定要搞 RPC,由于这是延迟敏感而且是须要强一致性。

若是咱们如今有个业务是同时给会计系统和合做方发记帐请求的需求,那这时候咱们就可能选用 MQ 通讯了。

[](

)4.2 分布式协调和同步


咱们理解了分布式通讯以后,下一步我认为最要学的是分布式协调和同步。

由于在现实里,即便系统搞成分布式了,其实每每没有特别大,分布式资源管理暂时能够先不考虑。分布式存储也可能还在使用数据库的主备或者 Sharding 方式在抗。而分布式计算的需求也可能没有那么紧急。

可是,一旦分布式系统中的全局状态出问题了,那就是事故了。因此,理解分布式协调和同步,必定是很紧急也很重要的。

那协调和同步怎么学呢?

咱们要知道,咱们所谓的协调数据访问,同步数据访问究竟是在作什么。其实协调数据访问的本质就是去对数据访问的请求作优先级排列,这就是协调数据访问的本质。而如何定义优先级?根据什么定义优先级?就是咱们须要学习的东西。

至于同步,其实就是对数据访问的保护。如何限制对数据的访问?限制数据访问的策略是什么?就是同步的本质。

而后,若是咱们理解了多线程的数据协调和同步,咱们经过分布式和多线程的相同和区别,能更容易更快速的去把握好分布式协调的技术本质。

[](

)4.3 分布式存储


当理解了分布式协调和同步以后,咱们就应该关注分布式存储。由于业务的核心是数据,海量的数据最终还须要分布式存储来解决安全可靠的持久化问题。

而分布式存储最最重要的是理解什么?不是存储的各类实现,是分布式存储的立身之本:CAP 理论。

咱们经过对 CAP 理论的理解,去理解分布式存储实现是如何实现对应的 CP 或者 AP 的,就会很是容易了。而且理解了 CAP,咱们就能根据真实的业务需求,理解业务是须要 CP 仍是 AP,而后就能根据这些,对分布式存储作合适的选型了。

[](

)4.4 分布式计算


当学习了分布式存储,此时,咱们就应该去学习分布式计算。由于分布式计算极可能会成为一个重要的运营需求。而分布式计算,就总体而言,一共就四种模式。任你变幻无穷,都逃不掉这四种模式。

从计算方式上看,一共就两种方法:

  1. MR 方式(MapReduce)

  2. Stream 方式

从处理过程来看,也只有两种模式:

  1. Actor 模式

  2. 流水线模式

[](

)4.5 分布式可靠性


到此,在知道了这些知识以后,对于通常公司的架构任务,架构师们作起来就游刃有余了。一个完整的正向分布式学习流程的知识,其实就差很少了。

此时,咱们还须要知道通常的分布式可靠性的处理方案。其实大致也不会超过三种:

  1. 对量大的模块搞负载均衡的集群;

  2. 对某些有资源限制条件的模块能够搞流量控制;

  3. 当任何模块对应的服务器出现问题时,想办法不让它影响正常的系统运转,而这个就叫作故障隔离。

而对于以上三种方案,其中两种其实都是很通用的技术,即便你们不搞分布式,也照样须要学习和了解。

惟独对于第三种,故障隔离,是须要深刻了解下的。可是故障隔离并非什么高大上的黑科技,当咱们搞分布式的时候,因为自然是不一样的模块有不一样的机器,而且机器还作了集群,因此,这个故障隔离就是自然就有的。

只是,有的时候,咱们想更细粒度的对故障隔离进行阻隔,好比,想在线程级别或者进程级别就把故障隔离开了。此时,我就就能够考虑用下线程或者容器等去执行任务,而后才去一些调度策略,把故障就自然的隔离为线程或者进程级别了。

[](

)4.6 分布式资源管理


最后,咱们想深造能应对更庞大的分布式系统,毕竟人都是追求进步的。这时候,咱们就须要去理解分布式的体系结构相关的知识,须要去理解分布式的资源管理。

但庆幸的是,分布式的资源管理自己技术栈很小。对于分布式体系结构,一共就两种结构:

  1. 集中式结构

  2. 非集中式结构

对于分布式资源的分配或者说调度,一共就三种方法:

最后

因为文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

image

本知识体系适合于全部Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的全部内容对你会有一个质的提高,其中也总结了不少面试过程当中遇到的题目以及有对应的视频解析总结。
CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

image

image