前言
有人调侃我们说:
- 程序员不如送外卖。送外卖是搬运食物,自己是搬运代码,都不产出新的东西……
- 透支体力,又消耗健康,可替代性极强,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章分布式架构高可用;**高可用是指系统经过专门的设计,可以减少停工时间,保持其服务的高度可用性。可用性包含两个维度:计算机服务可用性平均时间和计算机服务可维护性平均时间。计算机服务可用性平均时间指系统平均能够正常运行多长时间会发生一次故障,系统的可用性越高,平均无故障时间越长。计算机服务可维护性平均时间指系统发生故障后处理和重新恢复正常运行平均花费的时间,系统的可维护性越好,平均维修时间越短。因此,计算机的可用性定义为系统保持正常运行时间的占比,可见,高可用是系统的重要目标。
本章重点内容如下:
- 高可用概述及难点
- 高可用涉及内容
- 高可用具体应用
- 高可用案例讲解
本文面向的阅读对象
本文是关于分布式系统架构的技术型文章,适合的阅读对象如下。
- 对分布式、分布式全栈中使用的技术栈感兴趣的读者。
- 基础偏弱,想通过学习分布式全栈中的概念、设计思想以加深对分布式理解的技术人员。
- 基础偏强,想深刻理解并灵活运用分布式全栈中的设计思想、优化方案的技术人员
希望大家能够仔细阅读本文,把所有的知识点都能融会贯通,争取做到精通,这样子在以后的求职或者自身的发展过程中,才能体现自身的重大价值,也希望本文能够得到大家的喜欢!!