互联网大型网站的特点

简介: 互联网大型网站的特点

1 大型网站的介绍

说到大型网站,很多人可能都会有一个误区,他们会认为:网站访问量大,那就是一个大型网站,其实这只说对了一半。为什么呢?给大家举个例子就明白了。比如:百度旗下的上网导航网站:

hao123。这个网站的用户访问量是非常巨大的,那么它是一个大型网站吗?其实不是。为什么呢?

web2.0

类似hao123这样的网站,它们都是提供一个静态网页(可以通过模板技术生成静态页面),用户点击是跳转到其他的网站,它们是根据用户的访问需求提供了一种综合的网站分类推荐服务。这些网站本身是不具有庞大的数据量的。可以说他们和用户的交互都是单向的,网站通过自身编辑内容对用户提供访问内容,用户只需要点击浏览即可,相当于Web1.0时代的小型网站。


那么我们再来看一下淘宝和京东,这两个网站无疑都是大型网站,首先他们都具有庞大的访问量,不论是淘宝双11或是京东618,用户的请求量都是十分巨大的;再者,不仅仅访问量大,网站的数据体量也是非常庞大的,拥有海量数据,并且可以支持大数据分析。像每年年底都能通过大数据分析为你提供当年你花了多少钱,买了什么,预计明年会买什么等等,这些都是大型网站的基本特征。当然,大型互联网站的特点细分下来有很多,接下来我们一起来看一下:

1. 高并发,流量大:

一个网站从小做到大,业务越来越大,积累的用户也越来越多,那么网站的请求量就势必越来越大。举个例子:


百度日均访问达到50亿+(据说已经超过谷歌)

腾讯QQ早就突破1亿用户同时在线

淘宝双11交易金额达到2000多亿人民币

(在此背后,那些工程师付出了多少汗水!?)

2. 高可用:

大型网站有一个必须达到的标准,就是高可用。什么是高可用,就是假设服务器宕机了,这个时候用户就无法访问,我们必须保证网站稳定地向用户提供7x24小时不间断的服务,哪怕有服务器节点宕机了,这个时候备用机也会替换当前不可用的服务器节点,确保服务正常访问。


3. 大数据:

通过大量服务器以及存储系统管理海量数据,比如阿里在全国各地有上千甚至上万台服务节点。数据多了,那么就可以做大数据分析了,比如为每个用户做用户画像,不论是用户购买习惯,还是用户未来预计会购买的商品,都能做到一步步的分析。当然图片数据也是数据,当你上传了图片,网站会通过人工智能来分析你的图片,不论是人物图,风景图还是宠物图,都会做到精确的分析。


4. 敏捷开发,迭代快:

大型网站的用户量必然是会很多的,为了提高用户体验,优化用户各类操作,形形色色的需求都会被产品人员提出,通过头脑风暴、研讨会等方式角逐出一些非常好用的功能模块,与此同时,开发人员根据需求快速迭代,当然测试与运维也会跟进。一般来说1~2周会快速迭代一次。


5. 用户体系庞大:

既然一个大型网站的用户量是非常大的,那么这些用户不可能都分布在同一个地区,他们都是分散的个体,分布在全国各地,甚至全球各地。比如通过淘宝和物流,你可以把商品卖到很偏远的农村或者山区,当然这些偏远地也能通过网站把自家的特产,卖向全国各地。


6. 可持续升级:

任何大型网站都不是一蹴而就的,都是从最初最简单的版本一步一步迭代出来的,很多初创公司都会有这样的误区,一上来就搞一个高大上的架构,目标tps达到千万。淘宝初期,是从马云老师家里诞生的;苹果公司诞生于车库;谷歌诞生于斯坦福大学宿舍,随后搬入车库。他们刚推出的时候都是非常简单的网站。我们的课程也不会一上来就教大家直接搭建一个千万级架构的项目,而是会从单体电商项目起步,然后逐步演变,向集群,分布式,微服务发展,让大家真正感受一个大型项目到底是怎么一步步的从初创项目不断发展到今天的大型架构项目的。


7. 安全防范:

正所谓树大招风,你越牛叉,就愈会有黑客或者同行来攻击你,所以这对运维来说也有相当大的挑战,我们之前的网站就被黑客攻击勒索比特币,出现这样的问题是因为服务器漏洞,比如上传图片,没有做到限制文件类型,只在前端判断,却没有在后端判断,导致黑客可以直接攻击Api接口,把PHP或者其他可植入脚本上传到服务器运行,这是非常危险的。


8. 弹性扩展:


淘宝双11在并发量剧增的时候,可以通过增加服务器来扩容,从而引导剧增的流量;微博里若某明星结婚,流量也会剧增,这个时候服务器都是可以动态的增加,来实现动态扩容。不需要的时候适当减少服务器就行。


9. 吞吐量高,响应速度快:

一个系统数据量一旦大了,那么它的响应速度会比较慢,这会影响用户体验。所以一个大型网站也必须保证用户每次的请求响应是很快的,虽然这个网站背后可能有上百上千台服务器,但是对于用户来说是透明的,他是不知道的。


从上面我们可以看出,大型网站一般具备9个特点:


高并发

高可用

大数据

迭代周期短

用户量庞大

可持续发展

安全级别高

可弹性、可伸缩

吞吐量高

2 大型网站设计要求

平时开发过程中,对于项目架构的设计,需要注意:

1. 合久必分:

最初MVC就是把系统拆为 M(model)、 V(view)、 C(controller)这三块,通过不同的包名来进行区分和分层,分层也是最常见的一种架构模式,不论用什么语言开发都会面临分层,这是无处不在的一种模式。而且分层也便于代码的解耦以及合理的工作分配。在我们的项目里,我们会通过Maven来对项目进行聚合分层。

服务器也要分开,进行性能更好的发挥

2. 集群:

集群是高可用和负载均衡的手段,多台服务器节点部署相同的应用构成一个集群,保证负载均衡的同时提升系统的可用性,互相灾备。


257a977e293f424e96229c1fd8ec60b9.png

3. CDN:

之前我们也说了,大型网站的用户群体是分散在全国各地的,所以,网站一旦发展到很庞大的时候,就会采用CDN。这样不论用户在哪里都能够访问到最近的服务节点,这样就不会因为距离而使得用户请求速度变慢。


4. 分布式系统:

一个大型网站势必是由多系统、多模块、多中间件、多服务器等共同协同整合的一个整体。在分布式领域里,我们会接触到分布式架构、分布式文件系统、分布式锁、分布式事务、分布式配置、分布式限流、日志收集等等。

585ecea348b44767abe749f6dec712bc.png5. 异步:

异步是最常见的优化用户体验的一种方式。前端可以采用Ajax异步调用,减少页面刷新;后端采用生产者和消费者模式,对代码进行解耦,如此就会使用到消息队列,常见的消息队列为:RabbitMQ、RocketMQ、ActiveMQ、Kafka等,合理地使用消息队列,可以在高并发时进行流量消峰,以而达到保护自己的作用。

a61ea0563f0d4ce08551ac925a86e699.png

6. 业务分离:

一个大型网站的业务会有很多,用户、订单、商品、支付等等,那么这些模块都可以合理的进行分离,独立出一个子系统或子服务让某个专门的团队来负责,我们会在微服务阶段进行讲解。

7. 数据备份:

在大型网站多服务器运维的情况下,节点宕机是非常常见的,一旦宕机,我们所要做的就是数据的备份,不能因为宕机了而导致数据丢失。所以,定期为数据库做好冷热备份,做好主从,以此达到系统的高可用性(一般这块都由运维工程师帮我们搞定)。

3 总结

相信大家对大型网站的特点以及设计宗旨有了一定的了解。因为每个公司都是从零起步的,自己的业务需求和网站系统也是慢慢的进化的,合理的设计架构来匹配当前公司的业务才是架构师真正的职责所在。


目录
相关文章
|
10月前
|
算法 数据安全/隐私保护 索引
基于GWO灰狼优化的多目标优化算法matlab仿真
本程序基于灰狼优化(GWO)算法实现多目标优化,适用于2个目标函数的MATLAB仿真。使用MATLAB2022A版本运行,迭代1000次后无水印输出结果。GWO通过模拟灰狼的社会层级和狩猎行为,有效搜索解空间,找到帕累托最优解集。核心步骤包括初始化狼群、更新领导者位置及适应值计算,确保高效探索多目标优化问题。该方法适用于工程、经济等领域复杂决策问题。
|
10月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
随着DeepSeek-R1模型的广泛应用,越来越多的开发者开始尝试复现类似的模型,以提升其推理能力。
673 3
|
机器学习/深度学习 人工智能 算法
构建一个基于AI的语音识别系统:技术深度解析与实战指南
【5月更文挑战第28天】本文深入探讨了构建基于AI的语音识别系统,涵盖基本原理、关键技术及实战指南。关键步骤包括语音信号预处理、特征提取、声学模型、语言模型和解码器。深度学习在声学和语言模型中发挥关键作用,如RNN、LSTM和Transformer。实战部分涉及数据收集、预处理、模型训练、解码器实现及系统评估。通过本文,读者可了解构建语音识别系统的基本流程和技巧。
1033 1
|
传感器 数据采集 人工智能
数字孪生与智慧城市:构建未来城市模型
【10月更文挑战第31天】在信息化和智能化高速发展的今天,数字孪生技术正逐步成为推动智慧城市建设的核心力量。本文将深入探讨数字孪生技术在城市规划、管理、交通和环保等方面的应用,以及它如何助力构建未来城市的理想模型。数字孪生通过实时数据同步和双向交互,实现城市运行状态的全面监控、预测和优化,推动城市向更加智慧、绿色和可持续的方向发展。
|
数据采集 数据安全/隐私保护
数据治理创新路:建设数据集市,强化数据报送一致性新实践
企业可以通过组织培训课程、提供操作手册等方式,提高数据报送人员的业务水平和数据意识,减少人为因素导致的数据不一致问题。
|
存储 Java Apache
Java“NoClassDefFoundError”解决
“Java NoClassDefFoundError”是运行时错误,表示JVM找不到某个类的定义。通常由类路径设置不当、依赖缺失或版本冲突引起。解决方法包括检查类路径、确保所有依赖正确添加及版本兼容。
1931 3
|
JavaScript
【小白懂系列】Vue CLi脚手架创建第一个VUE项目
【小白懂系列】Vue CLi脚手架创建第一个VUE项目
237 2
|
分布式计算 并行计算 数据处理
大规模数据处理的最佳实践:使用 Dask 进行高效并行计算
【8月更文第29天】在大数据时代,高效地处理大规模数据集是至关重要的。Python 社区提供了一些强大的工具来帮助开发者进行并行和分布式计算,其中之一就是 Dask。本文将详细介绍如何使用 Dask 来优化大规模数据集的处理效率,并提供一些实用的代码示例。
2054 3
|
JavaScript 编译器
TS编译设置和配置文件属性解读
TS编译设置和配置文件属性解读
|
算法 C语言
【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现
客观评价方法中的一种,亦称为理想解法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最优解和最劣解,通过计算每个方案到理想方案的相对贴近度,即靠近止理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。
【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现