一、课程目的
2015年,5月的某天,正在上班,突然看线公司群里开始发出携程网访问500的信息,于是乎,大家小扯的一下,大家并没有想到后来发生的事情的事情会如此震惊,开始官方的微博确认问题为,正遭受攻击,但后来内部的技术人员泄漏出“数据库被物理删除!” 这个对于技术的人员来说,可以说是非常惊讶的消息,大家开始了各种疑问,怎么确定是数据库引起,作为一个大公司怎么会有这种问题产生,数据库作为底层核心,为什么恢复机制是那么薄弱。
陆续消息中,最后传出,由于运维人员的类似于自动化系统操作不当,造成几个系统的数据目录被清理。这个也人员失误最后也得到了官方的证实。
https://www.zhihu.com/question/30746844
2014年,当时应邀去成都的一家企业作mongodb的培训,公司正利用mongdb作为单一的数据仓库,他们选用2.4的版本,由于业务性质,主要存储客户车辆和交通位置信息,且mongodb很好的分片方式,避免了关系数据库的水平扩展。由于持续的数据写入,并且初期缺乏对mongdo管理维护的了解,导致当时一个collection的数据超过了150G,oplog的设置为200m的,导致性能极具下降。
2014、2015年正是微信公众账号的极速发展事情,很多小的创业团队,利用公众账号的平台大赚了一笔。15年中旬,接到一家公司老板打过来的电话,电话中着很急切的告知他们公司的服务目前正不断遭受类似于DDOS的恶意攻击,这种情况已经持续了一段时间,由于问题迟迟无法定位,导致线上核心服务无法正常运行,为此收到了很多顾客投诉反馈,若再无法解决,业务将没法正常开展,急需技术支持.
在这几年,或是而听、或是全身心经历,兼职技术支持,我接触了很多类似的案例,写这个课程的最基本的目的就是,总结经验和教训,为了避免走相同的路。
因......
1、为什么要设计这门课程
2、我们能学到什么?
2.1.1、一样的技术不一样的切入点
从整体到局部,从案例到总结 我们来讲解本课程
2.1.2、常遇到的内容不常明白的东西
基于个人实践案例,从其抽象出的互联网概念中,细节的介绍典型的案例实现。
大的问题,几乎都是由于细节的不注意引起,有的问题,我们常遇到,也容易疏忽,以至于导致造成的大问题。
2.1.3、一样的针对性适合不一样的人群
资深工程狮-看不同问题的处理手段、程序猿-了解不同领域的技术实现、技术小白-了解互联网技术架构的奥秘。
没错,本课程我们要讲的是 “架构”“性能”、和 “实践”。
3、讲解前言
3.1.1、讲解方式
金字塔形式的方式从上层到下层讲解,先:介绍技术架构模式、一般演变模式。总体介绍接入层、中层层、底层的技术架构,再着重围绕接入层性能优化展开案例分析。
课程若有涉及比较浅显的内容,本课程提供出对应知识点指引,并不作详述。
大章节 | 小标题 | 课程小节 | 内容介绍 | 预计时长(min) | 课时小章(拆分成小课时) | 预计时长(min) |
课程设计前言 | 课程目的 | 1、为什么要作这期的课程? | 介绍这门课程设计的目的,比如介绍一些由于我们在日常的工作中常常遇到的问题,或是由于网站整体设计时的考虑不足,导致后期的性能、功能扩展瓶颈,最后不得不考虑重构,学习完这门课程后,我们所作的东西更有前瞻性,思路能更复合公司的业务发展方向。或是由于单一的通过某一种思路或者方向上去考虑问题,导致功能、性能及安全的冲突,学习完这门课程后,我们学会多方面的综合分析,拿出最有效的方案。或是由于,目前企业中已经出现了各式各样的问题甚至到了瓶颈时期,一直到不到出路,这时借助这门课程来学习到一些我之前处理并且归纳好的经验,从而有助于帮助你走出问题困境。也许你只是了解互联网的一部分,那么我将带你进入到互联网的技术世界,看看一路从小站到大战中有多少的坑是可以避免出现的。 | 6 | ||
2、课程找重点及注意事项 | 提高到架构,确实讲解课程内容有很多,好比一个金字塔,这个课程是带着大家从顶端往下分析,内容过于笼统,我们也就只能知道个大概,不知所以然,如果一个个深挖,就是一个幕客网所有视频的集合。 所以,在这里特别的告诉大家,我们介绍的就是从上层说起,分别准备三大块内容:网站性能优化、开源应用、及框架应用及分析、网站安全三个课程分类进行。 即使是分了三个部分,也是有海量的内容存在,但是就目前互联网的常用架构及工作模式,我们针对性的介绍一些,针对性的介绍具体某一个案例时,我将把设计到的基础内容以别的方式提供,或者引升到。案例部分详细介绍,注意了:重点是思路总结,我们需要掌握的就是这个。 介绍三门课程前端服务性能优化 中间层、底层开源服务、安全分别将介绍的内容。 | 5 | ||||
3、我们能学习到什么? | 学习到什么,我想不用多介绍,就如本课程的标题一样,如果你能一一的按照课程的内容学习完,那么你将从总体上对网站架构有把控。相信借助课程中实践的经验总结,你也将收获到可贵的经验,从而以后的工作中少走弯路。 | 2 | ||||
主要内容 | ||||||
常见的网站部署架构模型 | 小站的常用部署架构 | 1、集中方式 | 1、介绍单机部署特点 2、存在的优点和缺陷 3、典型的集中式架构演示 | 10 | ||
2、BS\CS架构模式 | 1、介绍什么是BS及CS的架构模式 2、介绍BS\CS的架构模式特点 3、集中模式到BS\CS模式需要注意问题 4、典型的BS架构演示 | 10 | ||||
大站的常用部署架构 | 1、分层服务化部署 | 1、水平拆分与垂直拆分 2、常用的分层模式案例 3、应用、数据分层演化 | 10 | |||
2、分布式架构 | 1、什么是分布式架构 2、SOA面向服务模式 2、互联网中常用的分布式架构案例 3、CDN网络 4、GLSB的实现 | 10 | ||||
4、服务的接入层、中间层、底层 | 演示服务接入整体架构,总体分析本课程中前端接入层,中间层底层服务有哪些。 | 10 | ||||
从小站到大战演变 | 4、架构演变 | 1、阐述架构演变模式 2、开发语言性能优化 3、整体架构的稳定性 4、网站架构设计中的矛盾 5、水平拆分与垂直拆分 | 10 | |||
网站架构设计核心 | 衡量架构设计好坏的标准 | 1、网站性能中的可用性和可靠性 | 1、可用性与可靠性介绍 2、网站性能指标参数讲解 | 5 | ||
2、网站扩展能力 | 1、网站架构设计之初该考虑的扩展性 2、案例分析:扩展性考虑缺失而导致的隐患 网站上线初期带宽预估不足导致页面加载缓慢 tomcat多个服务部署与独立部署的矛盾 | 5 | ||||
前端服务常用重点技术 | Web前端性能优化 | 1、接入端性能优化常见方法 | 1、接性能优化逻辑 2、js代码结构优化 3、多线程、异步、非阻塞实现 3、 | 120 | 1、网站接入层性能优化逻辑 | 10 |
2、常用的接入前端服务结构(JAVA、PHP、PYTHON) | 10 | |||||
3、Tomcat独立部署还是选择整合部署? | 10 | |||||
4、服务的动静分离实现 | 15 | |||||
5、LAMP与LNMP | 15 | |||||
6、Tengine对比nginx | 15 | |||||
7、linux系统下的多线程 | 15 | |||||
8、程序的异步与非阻塞实现 | 15 | |||||
9、Linux系统下的IO模式 | 15 | |||||
2、Nginx服务优化 | 1、详解轻量级Nginx服务及优化 2、Nginx代理详解 3、Nginx服务常用结构及优化手段 | 70 | 1、Nginx为什么能脱颖而出 | 10 | ||
2、Nginx系统性参数优化 | 15 | |||||
3、代理服务 | 15 | |||||
4、负载均衡 | 15 | |||||
5、静态资源服务 | 15 | |||||
3、负载均衡服务 | 1、负载均衡实现特点 2、常用的负载均衡实现方式 3、LVS方案的高可用设计及实现 | 45 | 1、负载均衡的基本原理 | 15 | ||
2、不同场景下的负载均衡技术实现 | 15 | |||||
3、LVS | 15 | |||||
4、持久化缓存 | 1、持久化与非持久化 2、构建高性能的Redis持久化集群 3、Mongodb分片集群可用性介绍及注意事项 | 50 | 1、什么是持久化和非持久化? | 10 | ||
2、Redis中的持久化和非持久化实现 | 15 | |||||
3、Mongodb和redis集群对比 | 10 | |||||
4、Mongodb和Redis分片集群的实现对比 | 15 | |||||
5、非持久化缓存 | 1、一致性哈希与哈希取模的算法实现 python程序为例 2、数据级缓存设计实现逻辑 python、php程序实现为例 3、memcache开发使用过程中的那些坑 | 30-40 | 1、非持久化缓存的特性及应用 | 10 | ||
2、用Memcache构建高可用非持久化集群 | 15 | |||||
3、程序演示Python中实现一致性哈希的实现 | 15 | |||||
6、页面缓存服务 | 1、页面缓存的作用 2、Nginx\Varnish\ATS\Squid缓存加速区别 3、如何有效的使用Vanrish缓存加速 | 20-40 | 1、什么时候应该考虑页面缓存 | 10 | ||
2、页面缓存的实现已及各种类的缓存应用对比 | 10 | |||||
3、静态内容缓存实现分类 | 10 | |||||
4、Varnish静态动态接口页面缓存的实现 | 15 | |||||
案例 | 1、应用混部导致网站性能故障 | 10 | ||||
2、归纳应用部署常见的错误 | 10 | |||||
3、日志错乱写入引发的故障 | 10 | |||||
4、归纳日志管理不善导致的其他影响 | 10 | |||||
5、不好的编程习惯引发的故障 | 15 | |||||
6、归纳编程习惯导致的问题 | 15 | |||||
7、缓存操作不合理导致的系统性崩溃 | 20-30 | 1、连接数限制设置过小导致缓存的短链接性质受限 | 10 | |||
2、哈希取模的算法实现容易导只能 | 10 | |||||
3、缓存数据内容维度对接口功能的影响 | 10 | |||||
8、归纳缓存的使用不当造成的影响 | 10 | |||||
前端服务架构设计总结 | 1、接入层服务架构设计逻辑总结 | 15 |