从小站到大站的技术架构优化之路-网站架构与前端服务性能优化

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Tair(兼容Redis),内存型 2GB
简介:

一、课程目的

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    

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
12天前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
5天前
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
|
16天前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
29 3
|
17天前
|
编解码 前端开发 JavaScript
从入门到精通:揭秘前端开发中那些不为人知的优化秘籍!
前端开发是充满无限可能的领域,从初学者到资深专家,每个人都追求更快、更稳定、更用户体验友好的网页。本文介绍了四大优化秘籍:1. HTML的精简与语义化;2. CSS的优雅与高效;3. JavaScript的精简与异步加载;4. 图片与资源的优化。通过这些方法,可以显著提升网页性能和用户体验。
19 3
|
21天前
|
缓存 负载均衡 监控
微服务架构下的接口性能优化策略####
在当今快速迭代的软件开发领域,微服务架构以其灵活性和可扩展性成为众多企业的首选。然而,随着系统复杂性的增加,接口性能问题日益凸显,成为制约用户体验与系统稳定性的关键因素。本文旨在探讨微服务架构下接口性能优化的有效策略,通过具体案例分析,揭示从代码层面到系统架构层面的全方位优化路径,为开发者提供实战指南。 ####
|
26天前
|
缓存 前端开发 JavaScript
前端性能优化:Webpack与Babel的进阶配置与优化策略
【10月更文挑战第28天】在现代Web开发中,Webpack和Babel是不可或缺的工具,分别负责模块打包和ES6+代码转换。本文探讨了它们的进阶配置与优化策略,包括Webpack的代码压缩、缓存优化和代码分割,以及Babel的按需引入polyfill和目标浏览器设置。通过这些优化,可以显著提升应用的加载速度和运行效率,从而改善用户体验。
41 6
|
28天前
|
缓存 监控 前端开发
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第26天】前端工程化是现代Web开发的重要趋势,通过将前端代码视为工程来管理,提高了开发效率和质量。本文详细对比了Webpack和Gulp两大主流构建工具的选择与配置优化,并提供了具体示例代码。Webpack擅长模块化打包和资源管理,而Gulp则在任务编写和自动化构建方面更具灵活性。两者各有优势,需根据项目需求进行选择和优化。
62 7
|
27天前
|
缓存 前端开发 JavaScript
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第27天】在现代前端开发中,构建工具的选择对项目的效率和可维护性至关重要。本文比较了Webpack和Gulp两个流行的构建工具,介绍了它们的特点和适用场景,并提供了配置优化的最佳实践。Webpack适合大型模块化项目,Gulp则适用于快速自动化构建流程。通过合理的配置优化,可以显著提升构建效率和性能。
35 2
|
28天前
|
弹性计算 监控 Cloud Native
云原生架构下的性能优化实践与策略####
在数字化转型加速的今天,云原生技术以其弹性、敏捷和高效的特点成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,通过具体案例分析,揭示了性能优化的关键路径与策略,为开发者和企业提供了可操作的实践指南。 ####
|
1月前
|
前端开发 API UED
深入理解微前端架构:构建灵活、高效的前端应用
【10月更文挑战第23天】微前端架构是一种将前端应用分解为多个小型、独立、可复用的服务的方法。每个服务独立开发和部署,但共同提供一致的用户体验。本文探讨了微前端架构的核心概念、优势及实施方法,包括定义服务边界、建立通信机制、共享UI组件库和版本控制等。通过实际案例和职业心得,帮助读者更好地理解和应用微前端架构。