阿里资深架构师整理分享的分布式系统架构:技术栈详解与进阶文档

news2024/11/13 16:45:58

前言

有人调侃我们说:

  • 程序员不如送外卖。送外卖是搬运食物,自己是搬运代码,都不产出新的东西……
  • 透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险……
  • 想跳槽,但是更高的平台难进,同级别的平台又是重复……
  • 想利用业余时间学习提升,但是自己能力有限,很难形成知识体系…

这些其实都是初级程序员面临的困境,当你提高自身能力,登上更高的层级之后,无论薪资还是发展都会有很大的提升。

那么问题来了,怎么才能度过初级程序员的瓶颈,进阶成为高薪工程师呢?

资深分布式系统研发工程师、架构师多年工作经验总结,从原理、应用和实践3个维度展开从前端到后端,从网络传输到负载均衡,从事务到数据库,从高并发到高可用,8个维度全面讲解分布式系统的技术栈。

本文从技术原理、高并发、性能优化的角度出发,对分布式环境中因应用场景复杂多变产生的问题,从多种技术层面进行分析,并给出高性能的优化方案和高可用的架构方案。

通过本文,读者在实际工作中可以整体提高分布式环境中应用的稳定性。

文中融入了对分布式领域中多种主流技术栈的介绍,能让读者全方位了解关于分布式系统架构的知识。

因为文章内容实在是太多了,小编只把部分知识点拿出来给大家介绍了一下,每个小节都有更加细化的内容,需要完整版的小伙伴,可以转发此文关注小编,私信小编【技术】来获取!!

目录

主要内容

本文根据分布式环境交互的顺序来构造和安排内容,建议按照目录的顺序依次阅读。全文一共10章,具体如下。

**第1章分布式架构介绍;**分布式架构是分布式计算技术的应用,目前比较成熟的技术包括J2EE、CORBA和.NET(DCOM)。本文重点讲述J2EE。J2EE是由Sun公司推出的一项中间件技术,旨在简化和规范多层分布式企业应用系统的开发和部署,可以为分布式应用软件提供在各种技术间共享资源的平台。J2EE标准的实施可显著地提高系统的可移植性、安全性、可伸缩性、负载平衡、可重用性。它主要有以下特点。

具有分布式的体系结构。J2EE组件的分布与服务器环境无关,所有的资源都可通过分布式目录访问,开发人员不需要为组件和资源分布问题耗费精力。

采用多层分布式应用模型。J2EE将应用开发划分为多个不同的层,并在每一个层上定义组件。各个应用根据它们所在的层,分布在相同或不同的服务器上,共同组成基于组件的多层分布式系统,包括客户层、表示逻辑层、商业逻辑层、企业信息系统层。

拥有应用服务器的标准。J2EE是首个获得业界广泛认可和采纳的中间件标准。

随着移动互联网不断发展,计算机系统已从单机状态过渡到多机协作状态,计算机以集群的方式存在,按照分布式理论的指导构建出庞大复杂的应用服务。

本章重点内容如下:

  • 分布式架构发展过程
  • 分布式架构设计理念和目标
  • 分布式架构应用场景
  • 分布式架构设计难点
  • 分布式架构解决痛点

**第2章分布式架构前后端交互;**从传统的交互发展到目前较流行的前后端交互的过程中,分布式架构下的前后端交互变得更高效和全面,太多技术层面进行了迭代和更新。

本章重点内容如下:

  • 前后端交互发展过程
  • 前后端交互方式
  • 前后端交互难点
  • 前后端交互优化
  • 案例讲解

**第3章分布式架构网络传输;**分布式架构网络是由分布在不同地点且具有多个终端的节点机互连形成的。网络中任意一节点均至少与两条线路与其他节点相连,当任意一条线路发生故障时,通信可转经其他线路完成,从而使网络具有较高的可靠性和可扩充性。网络传输是基于可靠的线路和网络传输协议来实现的。

本章重点内容如下:

  • 网络传输协议
  • 网络传输调用过程
  • 网络传输优化

**第4章分布式架构Nginx;**Nginx是一个高性能的HTTP和反向代理Web服务器。Nginx可以作为一个HTTP服务器进行网站的发布处理,也可以作为反向代理进行负载均衡的实现,由于其占用内存少,并发能力强,所以可以广泛应用在互联网中。

本章重点内容如下:

  • Nginx工作原理
  • Nginx源码编译安装
  • Nginx配置
  • Nginx代理&负载均衡
  • Nginx缓存
  • Nginx限流
  • Nginx屏蔽
  • Nginx优化
  • Nginx高可用

**第5章分布式架构Varnish;**Varnish是一款高性能且开源的反向代理服务器和HTTP加速器,主要通过缓存来实现Web访问加速。它基于内存进行缓存,支持精确缓存时效,性能高效。其VCL配置管理比较灵活,支持后端服务器负载和健康检查,内部实现了负载均衡轮询调用服务器。

本章重点内容如下:

  • Varnish工作原理
  • Varnish源码编译安装
  • Varnish配置
  • Varnish核心指令
  • Varnish缓存
  • Varnish处理策略
  • Varnish健康检查
  • Varnish优化
  • Varnish高可用

**第6章分布式架构Tomcat;**Tomcat是一个免费的开放源代码的Web应用服务器,主要应用于中小型系统,内部具有Servlet和JSP规范,且较轻量级,深受广大开发者喜爱和使用,目前较流行。实际上Tomcat部分应用是Apache服务器的扩展,作为一个与Apache独立的进程单独运行。

本章重点内容如下:

  • Tomcat原理
  • Tomcat生命周期
  • Tomcat源码编译安装
  • Tomcat目录结构
  • Tomcat加载过程
  • Tomcat安全
  • Tomcat集群
  • JVM
  • Tomcat性能调优

**第7章分布式架构高并发;**大量请求可能同时或者在极短时间内到达服务端,此时每个请求都需要服务端耗费资源进行处理并做出相应反馈。能同时运行的线程数、网络连接数、CPU运算、I/O、内存是有限的,所以服务端能同时处理的请求数也是有限的,高并发本质就是解决资源的有限性问题。

假设系统在线人数是20万,并不意味系统并发用户是20万,可能存在10万用户同时在首页查看静态文章,并未对服务器发送请求,所以高并发数是根据系统真实的用户数发送请求,并需要服务端消耗资源进行处理。如服务端只能开启100个线程,恰好1个线程处理1个请求需要耗时1s,那么服务端1s内只能处理100个请求,多余请求则无法处理。

高并发涉及相关常用的指标有吞吐量(TPS)、每秒查询率(QPS)、响应时间、并发用户数等。

1)TPS(QPS):单位时间内处理的请求数量,计算公式为并发数/平均响应时间。

2)响应时间:系统对请求做出响应的时间,一般取平均响应时间。

3)并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时聊天系统,同时在线量一定程度上代表了系统的并发用户数。

本章重点内容如下:

  • 高并发使用场景
  • 高并发难点
  • 高并发之缓存
  • 高并发之消息队列高并发优化
  • 高并发经典案例

**第8章分布式架构事务;**主要介绍普通事务与分布式事务的差异性,以及对分布式事务的多种处理方式,本章会通过多个案例并结合代码进行分析。

主动方应用可以异步发送消息至被动方应用,提高应用处理效率,消息中间件可以解耦主动方和被动方的强耦合性,同时引入消息中间件MQ。由于MQ有着独特的高并发、高吞吐能力,能够缓冲消息、灵活调节控制消息处理的效率,大大提高了双方系统的并发量。

本章重点内容如下:

  • 分布式事务介绍
  • 分布式事务概论
  • 分布式事务应用场景
  • 分布式事务难点
  • 分布式事务解决方案
  • 分布式事务案例讲解

**第9章分布式架构MySQL;**MySQL是一种关系数据库,由瑞典MySQL AB公司开发,目前属于Oracle。MySQL在之前因开源的原因在Web应用方面使用非常广泛,同时也因为体积小、速度快、使用成本低,尤其是开放源码这一特点,深受大中小型企业的喜爱,MySQL采用标准化的SQL语言帮助用户更好地管理数据库系统。

本章重点内容如下:

  • MySQL运行原理
  • MySQL编译启动
  • MySQL事务
  • MySQL存储引擎
  • MySQL之SQL操作
  • MySQL索引
  • MySQL备份
  • MySQL难点
  • MySQL性能优化
  • MySQL集群

**第10章分布式架构高可用;**高可用是指系统经过专门的设计,可以减少停工时间,保持其服务的高度可用性。可用性包含两个维度:计算机服务可用性平均时间和计算机服务可维护性平均时间。计算机服务可用性平均时间指系统平均能够正常运行多长时间会发生一次故障,系统的可用性越高,平均无故障时间越长。计算机服务可维护性平均时间指系统发生故障后处理和重新恢复正常运行平均花费的时间,系统的可维护性越好,平均维修时间越短。因此,计算机的可用性定义为系统保持正常运行时间的占比,可见,高可用是系统的重要目标。

本章重点内容如下:

  • 高可用概述及难点
  • 高可用涉及内容
  • 高可用具体应用
  • 高可用案例讲解

本文面向的阅读对象

本文是关于分布式系统架构的技术型文章,适合的阅读对象如下。

  • 对分布式、分布式全栈中使用的技术栈感兴趣的读者。
  • 基础偏弱,想通过学习分布式全栈中的概念、设计思想以加深对分布式理解的技术人员。
  • 基础偏强,想深刻理解并灵活运用分布式全栈中的设计思想、优化方案的技术人员

希望大家能够仔细阅读本文,把所有的知识点都能融会贯通,争取做到精通,这样子在以后的求职或者自身的发展过程中,才能体现自身的重大价值,也希望本文能够得到大家的喜欢!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch 2.0 重磅发布:一行代码提速 30%

在今天的 PyTorch 2022 开发者大会上,PyTorch 团队发布了一个新特性torch.compile,这个新特性将 PyTorch 的性能推向了新高度,并开始将 PyTorch 的部分实现从 C 中迁移到 Python 中。他们相信这是 PyTorch 一个实质性的新方向--因此称之为 **…

(最优化理论与方法)第六章无约束优化算法-第一节:线搜索方法

文章目录一:无约束优化问题概述二:线搜索方法(1)概述(2)线搜索准则A:Armijo准则①:概述②:Armjio准则缺陷③:回退法④:代码B:Goldstei…

从固定管线到可编程管线:十段代码入门OpenGL

文章目录1. 最简单的OpenGL应用程序2. 视点系统和投影矩阵3. 深度缓冲区和深度测试4. 模型的旋转和平移5. VBO和顶点混合数组6. 纹理映射和纹理坐标7. 光照和法向量计算8. 最简单的着色器程序9. 着色器中的MVP矩阵10. 着色器中的漫反射、镜面反射和高光计算1. 最简单的OpenGL应…

【什么是区块链】

区块链技术简介前言一、区块链技术简介二、区块链的特点1.去中心化2.去信任3.不可篡改和伪造4.可溯源5.匿名性三、区块链用到的技术1.非对称密码算法2.哈希函数3.P2P网络4.安全多方计算前言 比特币与区块链的关系: 2008年中本聪(Satoshi Nakamoto&…

Python中logging日志模块详解

用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所以Python引入了logging模块来…

104.二叉树的最大深度 | 111.二叉树的最小深度

文章目录二叉树的深度104.二叉树的最大深度题目题解111.二叉树的最小深度题目题解二叉树的深度 104.二叉树的最大深度 题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。…

Mac终端常用命令

1、打开窗口命令 快速打开:command空格(打开查询),输入ter回车 打开多个窗口:commandN(光标在终端执行此操作) 2、目录操作 命令名 命令功能 备注 cd 打开当前目录 cd dirname pwd 显示…

Java 调用 Cpp 代码简单示例

Java 调用 Cpp 代码 前言:首先说明一下,本篇文章是干嘛的,简单来说就是在 Java 代码里调用 C 代码。但是呢,这里只做一个简单的示例,调用最简单的 C 代码,起到一个抛砖引玉的作用。如有不对之处&#xff0…

选择编码节点的最佳数量和位置研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

[附源码]计算机毕业设计校园招聘微信小程序Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

代码随想录训练营第39天|LeetCode 62.不同路径、63. 不同路径 II

参考 代码随想录 题目一:LeetCode 62.不同路径 相比于之前的爬楼梯,这题变成了二维,对于某个位置[i,j],可以从[i-1,j]或者[i,j-1]走到[i,j],因此在求解思想上其实是类似于爬楼梯的。 确定dp数组及其下标的含义 dp[…

Android Camera性能分析 - 第26讲 DequeueBuffer Latency

本讲是Android Camera性能分析专题的第26讲 ​,我们介绍DequeueBuffer Latency,包括如下内容: DequeueBuffer Latency是什么DequeueBuffer Latency配置DequeeuBuffer Latency实战 视频在线观看: 极客笔记:极客笔记在…

JavaScript正则表达式:正则表达式中的特殊字符

正则表达式的组成 一个正则表达式可以由简单的字符构成,比如 /abc/,也可以是简单和特殊字符的组合,比如 /ab*c/ 。其中特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号,如 ^ 、$ 、 等。 特殊字符非…

logos_HSST简要说明

HSST分为PCS和PMA, TX PCS:8b/10b编码 RX PCS TX PMA RX PMA 含1个HSST,有4个全双工收发LANE。 LINE和PLL的关系 PLL0可以为4个LANE提供时钟,PLL1只能为LANE2&3提供时钟。 PLL VCO 的转出频率范围为 2.125GHz~3.1875GHz。PLL…

【关于Linux中----文件接口、描述符、重定向、系统调用和缓冲区】

文章目录一、C文件接口中的那些事儿二、接口介绍三、文件描述符fd四、重定向五、缓冲区一、C文件接口中的那些事儿 众所周知,Linux是用C语言写成的,那在这篇文章的开头,自然要先对C语言中的文件操作进行一个概括! 写文件&#x…

20221203英语学习

今日新词: lecturer n.讲演者, 讲课者, 讲授者, (尤指英国大学的)讲师 hypothetical adj.假设的, 假定的 rather adv.相当; 宁可, 宁愿; (常用于or后) 更确切些 ring n.戒指, 指环, 环状物; 圆圈; 敲钟, 按铃; 铃声, 钟声 yes adv.(回答…

1.2 Hadoop简介-hadoop-最全最完整的保姆级的java大数据学习资料

文章目录1.2 Hadoop简介1.2.1 什么是Hadoop1.2.2 Hadoop的起源1.2.3 Hadoop的特点1.2.4 Hadoop的发行版本1.2.5 Apache Hadoop版本更迭1.2.6 第六节 Hadoop的优缺点1.2 Hadoop简介 1.2.1 什么是Hadoop ​ Hadoop 是一个适合大数据的分布式存储和计算平台 ​ 如前所述&#x…

html5期末大作业:基于HTML+CSS技术实现——传统手工艺术雕刻网站(3页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

深度强化学习的组合优化[1] 综述阅读笔记

文章目录前言零、组合优化问题基础1. 定义(1)定义(2)常见问题2. 方法(1)精确方法(2)近似方法(3)深度学习方法3. 文章架构一、概述1. 神经网络(1&a…

【图文教程】若依前后端分离版本-菜单怎么设置

在使用若依前后端分离版本作为基础架构的时候,需要新建菜单怎么操作?本文凯哥将详细讲解怎么添加。 1:登录若依系统后,[系统管理]>>[菜单] 先新建一个一级菜单。可以模仿【系统管理】菜单来创建: 系统菜单&am…