大型网站技术架构剖析

news/2024/5/19 20:46:16/文章来源:https://blog.csdn.net/huangjinjin520/article/details/103116256

阅读文本大概需要3分钟。

大型网站系统特点

  • 高并发,大流量

  • 高可用

  • 海量数据

  • 用户分布广泛,网络情况复杂

  • 安全环境恶劣

  • 需求快速变更,发布频繁

  • 渐进式发展

大型网站发展演化过程

一台服务器

特点:没人

应用程序、数据库、文件都在一个服务器。

应用服务器和数据服务器分离

应用服务器

  • 处理大量业务

  • 需要更快更强的CPU

数据服务器

  • 需要快速磁盘检索和数据缓存

  • 需要更快的磁盘和更大的内存

文件服务器

  • 需要更大的硬盘

使用缓存改善网站性能

  • 本地缓存

  • 远程缓存(分布式缓存)

使用应用服务器集群改善并发处理能力

  • 负载均衡服务器

  • 用户服务器集群

数据库读写分离

利用数据库的主从热备份,来实现数据库的读写分离。从而改善数据库的负载压力。

使用反向代理和CDN加速网站响应

基本原理都是缓存(都可以缓存一些静态资源)

反向代理服务器

  • 缓存用户请求资源

CDN服务器

  • 目的:尽早返回数据给用户

使用分布式文件系统和分布式数据库系统

分布式数据库是网站数据库拆分的最后手段。不到万不得已的时网站更常用的拆分手段是业务拆分。

使用NoSQL和搜索引擎

应对更复杂的存储和检索需求

业务拆分

应对日益复杂的业务场景

拆分方法

  • 根据产品线拆分成不同的应用

应用产品之间的关系

  • 超链接

  • 消息队列进行数据分发

  • 访问同一个数据存储系统

分布式服务

通过分布式服务调用公用业务服务完成具体业务需要

大型网站架构模式

分层

  • 应用层

  • 服务层

  • 数据层

分割

对不同的层继续进行垂直的分割

分布式

分层、分割的主要目的就是为了便于分布式部署。

分布式就是为了用更多的计算机来完成同样的功能

  • 分布式应用和服务

  • 分布式静态资源

  • 分布式数据和存储

  • 分布式计算

  • 分布式配置

  • 分布式文件系统

集群

多台服务器部署相同应用构成一个集群。通过负载均衡设备对外提供服务

优点:

  • 提高系统并发访问量

  • 提高系统可用性(冗余)

缓存

改善性能的第一手段

  • 内容分发网络CDN

  • 反向代理

  • 本地缓存

  • 分布式缓存

异步

  • 共享内存队列(单服务器)

  • 分布式消息队列(分布式系统)

冗余

访问和负载很小的服务器也至少要部署两台构成集群。目的就是实现服务的高可用。

自动化

  • 自动化报警

  • 自动化失效转移

  • 自动化失效恢复

  • 自动化降级

  • 自动化分配资源

安全

  • 身份认证

  • 加密

  • 验证码识别

  • 对于XSS,SQL注入,进行编码转换等

  • 敏感信息过滤

  • 风险控制

网站性能测试优化

性能测试指标

  • 响应时间

  • 并发数

  • 吞吐量

  • 性能计数器

性能测试方法

  • 性能测试

  • 负载测试

  • 压力测试

  • 稳定性测试

常见优化手段

用户视角

  • 优化页面HTML样式

  • 利用浏览器的并发和异步

  • 调整浏览器缓存策略

  • CDN和反向代理

开发人员

  • 使用缓存加速数据读取速度

  • 使用集群提高系统吞吐能力

  • 使用异步消息加速响应及实现消峰

  • 优化代码改善程序性能

运维人员

  • 优化骨干网

  • 使用高性价比定制服务器

  • 使用虚拟化技术优化资源利用

网站性能优化

web性能优化

  • 减少HTTP请求(合并css、javascript、图片)

  • 使用浏览器缓存(使用Cache-Control和Expire属性)

  • 启用压缩(减少网络数据传输量)

  • 减少页面阻塞(CSS文件尽量放在最上面,javascript放在最下面)

  • 减少Cookie传输

  • CDN加速

  • 反向代理

    • 安全

    • 加速web请求(可以缓存一些静态资源)

    • 负载均衡

应用服务器优化

  • 分布式缓存

  • 异步操作(消息队列)

    原则:任何可以晚点在做的事都可以晚点再做

  • 使用集群

    使用负载均衡技术来构建

存储服务器优化

  • 访问频繁的页面不应该访问数据库(如首页,最好是静态的)

  • 谨慎使用锁操作

  • 对缓存的管理提高到和其他服务器一样的级别

  • 大文件小文件分别对待

大型网站架构设计误区

  • 一味追求大公司的解决方案

  • 为了技术而技术

  • 企图用技术解决所有问题

  • 本文作者: zhimiao

  • 本文链接: https://weizhimiao.github.io

往期精彩

01 漫谈发版哪些事,好课程推荐

02 Linux的常用最危险的命令

03 精讲Spring Boot—入门+进阶+实例

04 优秀的Java程序员必须了解的GC哪些

05 互联网支付系统整体架构详解

关注我

每天进步一点点

喜欢!在看☟

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[网站优化实战]公共CDN库/Nginx启用Gzip/全站CDN加速

本文公众号来源:Rude3Knife 作者:蛮三刀把刀网站加载优化的过程(主要针对静态资源),思路可以借鉴一下!前言接触到CDN的起因:我自己搭建的网站https://price.monitor4all.cn/网页打开的速度一直…

《大型网站系统与Java中间件》读书笔记(上)

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 这本书买了一段时间了,之前在杭州没带过去,现在读完第三章,来做做笔记 这本书前三章都在科普和回顾中间件/分布式…

《大型网站系统与Java中间件》读书笔记 (二)

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y回顾上一篇:《大型网站系统与Java中间件》读书笔记(一)这周周末读了第四章,现在过来做做笔记&#xff0…

《大型网站系统与Java中间件》读书笔记 (中)

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾上一篇: 《大型网站系统与Java中间件》读书笔记(一) 这周周末读了第四章,现在过来做做笔记&am…

几个简单步骤可以提高网站浏览体验

摘要: STEP 1确定网站定位 你的网站定位是要以企业形象官网为主,或是以单纯贩售商品的购物网站,还是要跟使用者做互动活动的网站? 每个网站的目的都不尽相同,形象官网,可能需要着重于品牌理念、品牌故事、…

一次面试引发的思考(中小型网站优化思考)

前言 故事的起因是这样的,由于本人地处偏僻工作地点在美丽的冰城哈尔滨虽然地方很美丽,但是这里的软件行业实在是算不上“美丽”,这么多年由于个人原因或者公司原因经常换工作,因为这里都是中小型公司,没有什么大公司。…

我采访了同事,让他掏出了每天都会浏览的干货网站...这几个网站也太牛了吧!

前言 在周六的晚上,我日常去到公司写文章。想写一篇程序员常浏览的网站,刚好同事在我后面看我在干什么。于是我就对他进行了采访,问了一下他常去的网站有哪些。 这次我采访的是鸡蛋,他跟我一样大,但是技术比我优秀实在…

Django项目实践4 - Django网站管理(后台管理员)

http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类站点, 管理界面 是基础设施中很重要的一部分。这是以网页和有限的可信任管理者为基础的界面,它能够让你加入&#xff0…

亿级流量网站构架核心技术

高并发原则无状态拆分系统维度:根据系统功能/业务进行拆分功能维度:对一个系统进行功能再拆分读写维度:根据读写比例进行拆分AOP维度:根据访问特征模块维度:比如按照基础或代码维护特征进行拆分服务化:进程…

Python教程 - 廖雪峰的官方网站

2019独角兽企业重金招聘Python工程师标准>>> https://www.liaoxuefeng.com/ 转载于:https://my.oschina.net/u/3563297/blog/1622686

这也许是破解所有网站

您还担心各种资源获取不到吗?这里聚集了广大网友的智慧结晶所在! 现在的技术真的是越来厉害了,而且相比于以往复杂的操作 现在的黑科技仿佛特别“亲民” 比如 我之前发过在“baidu”后面加“wp” 就能高速下载百度云资源 而且自己不需要…

thinkphp5项目--企业单车网站(五)

thinkphp5项目--企业单车网站(五) 项目地址 fry404006308/BicycleEnterpriseWebsite: Bicycle Enterprise Websitehttps://github.com/fry404006308/BicycleEnterpriseWebsite 一、BeyondAdmin使用 1、里面的功能真的超级全,连编辑器都有&…

使用Nginx实现多台服务器网站负载均衡的配置方法介绍

使用Nginx实现网站负载均衡的配置方法介绍1.准备工作1.1 Linux系统安装Nginx1.2 准备三台服务器1.3配置主服务器nginx访问路径1.4访问主服务器2.Nginx负载均衡的几种不同方式介绍2.1 轮询2.2 权重2.3 iphash2.4 最少连接2.5 fair服务器的响应时间来分配3.Nginx配置1.准备工作 …

Laravel访问网站页面空白

配置好了Laravel之后进行网站访问,发现是空白页面,第一次使用Laravel很迷茫。使用fiddler查看的时候出现500错误,网上查了下是因为根目录下的storage目录没有777权限,如图: 解决方法:使用chmod -R 777 s…

访问网站的时候出现Discuz! Database Error (2002) notconnect错误

自己用dz做的网站一直好好的,今天访问的时候出现了:Discuz! Database Error (2002) notconnect错误,如图: 解决方法: 修改/config/config_global.php中的config[‘db′][‘1′][‘dbhost′]‘localhost′;改为&…

知乎有哪些适合大学生浏览的网站?

2019独角兽企业重金招聘Python工程师标准>>> 作者:Adam 链接:https://www.zhihu.com/question/20136746/answer/299592153 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 公开课 …

SEO新站与老站,如何解决网站降权问题?

针对网站降权的问题,百度与谷歌的评定标准基本相同,都是完全基于搜索引擎的用户体验,进行基础性的判断。简单理解:网站被降权,实际上是被搜索引擎降低信任评级的一个过程,那么你一定触碰了相关算法的识别机…

SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎 .

IDE使用的MyEclipse6.5,数据库使用MySQL 5.0.37 , 另装了Navicat for MySQL , jdk版本是6.0 工程做完的效果图如下,com.zly.indexManager中两个类,分别创建索引和搜索索引, com.zly.test.entity中是使用的实体类,分别是…

微软正式发布Azure Storage上的静态网站

微软正式宣布了Azure Storage上的静态网站,提供了从托管在Azure Storage上的HTML、CSS和JavaScript文件提供内容的能力。静态网站包含内容固定的Web页面,同时仍然允许利用JavaScript等客户端代码来创建丰富的用户体验。 有了这个新功能,继用于…

收藏了很久的:5款电影网站!高清大片任意看!就没有找不到资源!

一放假就剧荒?没有时间去电影院看?那这5款电影网站你很需要!Top1:中国高清网各种大片任意看!最新上映还是好莱坞大片,想看什么就看什么!还怕剧荒?Top2:BT天堂热门综艺总是…