大型网站技术架构演化

news/2024/5/14 2:44:02/文章来源:https://blog.csdn.net/weixin_30856725/article/details/98019191

一、大型网站软件系统的特点

1.高并发、大流量

a.什么是高并发?

高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理多个请求。

b.高并发的衡量指标有哪些?

(1)响应时间:系统对请求做出响应。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。

(2)吞吐量:单位时间内处理的请求数量。

(3)QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的不那么明显。

(4)并发用户数:同时承载正常使用系统功能的用户数量。例如一个通讯系统,在线量一定程度上代表系统的并发用户数,比如腾讯QQ。

c.什么是大流量

大流量这个词,顾名思义表示很多流量,这个很多可以用一千万,一亿或者百亿等来衡量。

以流量来说,这个词有比较多的含义,如:

(1)它可以表示手机无线网数据;

(2)网店或网站的访问量;

(3)流体通过量,如水流量等;

在这里主要指网站的流量(包含网站访问量)。

d.那么网站流量指标有哪些呢

主要指标包括:

(1)独立访问者数量;

(2)重复访问者数量;

(3)页面浏览数;

(4)每个访问者的页面浏览数;

(5)用户在网站的停留时间;

(6)用户来源网站(又叫”引导网站”);

(7)用户所使用的搜索引擎及其关键字;

2.高可用:系统需要不间断提供服务

a.什么是高可用

高可用是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供正常服务的时间。

假设系统一直能够提供服务,我们说系统的可用性是100%。

如果系统每运行100个时间单位,会有1个时间单位无法提供服务,系统的年停机时间为8.76个小时。

b.如何保障系统的高可用

我们都知道,单点是系统高可用的大敌,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点挂了服务会受影响,如果有冗余备份,挂了还有其它backup能够顶上。

那么什么是单点呢?

你可以理解为所有的服务都在一个服务器上。

为什么要避免单点?

假定所有的服务在一个服务器上,如果该服务器因为某种原因挂掉了,那么所有的服务都会收到影响,从而会增长系统不能提供正常服务的时间。

3.海量数据(又称“大数据”)

什么是是海量数据?海量数据又称大数据。对于大数据,研究机构给出了这样的定义:大数据是需要新处理模式才能具有更强的决策力、洞察力和流程化能力的海量、高增长率和多样化的信息资产。

从技术上看,大数据与云计算的关系就像一昧硬币的正反面。大数据必然无法用单台计算机进行处理,必须采用分布式架构。其特色在于可对海量数据进行分布式数据挖掘,但必须依托云计算的分布式处理、分布式数据库以及云存储、虚拟化技术。

大数据的特点

(1)数据体量大,从TB级跃升到PB级别。

(2)数据类型繁多,比如网络日志、视频、图片、地理位置等。

(3)处理速度快。

(4)数据价值大。

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

许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别。在国内,还有各个运营商网络互通难的问题。
以在我老家的时候,联通的网络不好,移动的网络好,导致使用联通的用户使用软件受制于网络信号差而无法使用。

5.安全环境恶劣

由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击。以GitHub为例,无时无刻不在遭受到攻击。

6.需求快速变更,发布频繁

和传统软件的版本发布频率不一样,互联网产品为了快速适应市场,满足用户需求,其产品发布频率是极高的。

7.渐进式发展:几乎所有的大网站都是从一个小网站开始的

以最早期的淘宝来说,也是从单体应用来的。据说早期的架构是Linux+Apache+MySQL+PHP(LAMP)。
FaceBook是伯克扎克同学在哈佛大学的宿舍里开发的;Google的第一台服务器部署在斯坦福大学的实验室;阿里巴巴则是在马云家的客厅里诞生。
好的互联网产品都是慢慢运营出来的,不是一开始就开发好的,这也正好与网站架构的发展演化过程对应。

二、大型网站架构演化发展历程

1.初始阶段的网络架构:应用程序、数据库、文件等所有资源都在一台服务器上(单体应用)

2.应用服务和数据库分离:网站使用三台服务器:应用服务器、文件服务器、数据库服务器

一般情况下有这么几种形式?

(1)nginx+tomcat+ftp+mysql/oracle;

(2)nginx+tomcat+vsftp+mysql/oracle;

(3)apache+tomcat+ftp+mysql/oracle;

(4)nginx+tomcat;

(5)docker容器实践思路(又称容器化);

当然了,上述列出的仅仅是冰山一角,有部分公司拥有自己研发的DB或者应用服务器。

3.使用缓存改善网站性能:使用缓存后数据库访问压力得到有效缓解

a.那么在什么样的情况应该使用缓存?

(1)经常变化的数据,但是不需要立刻进行持久化的;

(2)经常被大量读取,很少进行更新操作;

(3)大量的数据库IO操作;

(4)通用的页面,如JS、CSS、图片等;

(5) 统计和计算需要暂存的信息,需要加快计算的;

b.Java常用的缓存框架有哪些呢?

一般情况下,用Redis或者Memcache,当然了,有的时候也会用ehcache,关于Java常用的缓存框架代码示例和介绍可参考该篇文章:https://www.cnblogs.com/chinway/p/5534636.html

4.使用服务器集群改善网站的并发处理能力:通过负载均衡调度器将请求分配到集群中的服务器上

这种方式又可以称作“中心化”,所有的请求全部经过Nginx,由Nginx分发请求到不同的应用服务器上面(根据权重进行分配)。

5.数据库读写分离:应用服务器在写数据的时候访问主数据库,主数据通过主从复制机制将数据更新同步到从数据库,这样当服务器读数据的时候就可以通过从数据库了

6.使用反向代理和CDN加速网络响应

关于CDN可以参考我的这篇文章:谈谈CDN

不过觉得还是要贴一下图,这样会有一个感性的认识。

什么是反向代理呢?

反向代理是指以代理服务器来接收internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

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

分布式文件系统有哪些?

主要有MFS、Ceph、GlusterFS、Lustre等

关于它们的区别可参考:

分布式文件系统MFS、Ceph、GlusterFS、Lustre的对比

8.使用NOSQL和搜索引擎

应用比较多的NoSQL,比如Memcache、Redis、MongoDB等。

搜索引擎,以solr和elasticsearch比较多。

9.业务拆分

关于业务拆分可参考我的这篇博文业务拆分的思考

10.分布式服务

可以去看看分布式服务架构这本书或是去看看国外相关专业人士的论文或文章。

分布式服务架构:原理、设计与实战电子书下载地址为:https://pan.baidu.com/s/1hK3vlIHX0SgbD4NNKx_zTg

三、大型网站演化的价值观

(1)大型网站架构核心价值是随网站所需灵活应付;

(2)驱动网站技术发展的主要力量是网站发展业务;

大型网站的核心价值不是从无到有二搭建一个大型网站,而是能够伴随小型网站业务逐步发展,慢慢演化成一个大型网站,网站的架构选择尽量满足网站用户增加需求。

四、网站架构设计误区

误区如下所示:

(1)一昧追随大公司方案;

(2)为了技术而技术;

(3)企图用技术解决所有问题;

参考资料如下:

什么是高并发:https://blog.csdn.net/DreamWeaver_zhou/article/details/78587580

什么是高可用:http://www.cnblogs.com/shizhiyi/p/7750530.html

什么是海量数据?它具有哪些特征?:http://www.znjj.tv/news/3322.html

在什么情况使用Java缓存:https://flychao88.iteye.com/blog/1532335

8张图读懂大型网站技术架构:https://github.com/Snailclimb/JavaGuide/blob/master/%E6%9E%B6%E6%9E%84/8%20%E5%BC%A0%E5%9B%BE%E8%AF%BB%E6%87%82%E5%A4%A7%E5%9E%8B%E7%BD%91%E7%AB%99%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84.md

《大型网站技术架构:核心原理与案例分析》第一章概述第一节大型网站架构演化

转载于:https://www.cnblogs.com/youcong/p/10503105.html

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

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

相关文章

搜索引擎排名都选乐云seo_seo网站优化百度排名首页360搜狗搜索引擎排名首页

最新活动:接网站排名首页,按照关键词计算,不接敏感词,不上首页不收费!seo的用途?1seo概念Seo就是搜索引擎优化的缩写,也叫网站优化,主要作用就是针对于网站在搜索引擎的排名的一门技…

php末尾友链,与php程序员的笔记网站交换友链的原则

很抱歉,由于本网站首页友链已满,目前停止交换首页友链,内页仍可交换友链!(2013年2月24日)随着本站友链的数量不断增多,本人不得不对本站的友链申请的原则进行郑重的申明一下,希望各位申请本站友链的站长们理…

C#队列Queue实现一个简单的电商网站秒杀程序

电商的秒杀和抢购,对程序员来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。 我们直接…

千万pv网站架构之RabbitMQ

千万pv网站架构之RabbitMQ 简介 什么是RabbitMQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用链接来…

ssm重新开发计科院新闻网站

本次的开发主要是套入SSM框架,并在前面的新闻网站的开发的基础上套入easyui的前段框架对新闻后台的增删改查的一个管理 但是实验完成过程中还有几个问题尚未解决 其一是上传新闻时,不能上传图片,这一问题在ueditor中可以进一步完善 其二在查看…

.NET使用ServerManager获取网站物理路径

最近因为工作需要,用wpf做了一个辅助小工具,如下图 为了获取网站的物理路径,我分析了通过ServerManager获取到的变量,也通过百度搜索了很多,但仍然没有找到方法。 后来使用必应,在国外网站找到了&#xff0…

Linux系统定时备份网站文件到七牛云存储脚本

1、七牛云账号注册。 有些朋友可能会问为什么要备份到七牛云?很简单,七牛云免费注册就能获取1G的存储空间,只要简单几步操作完成实名认证即可获取10G的存储空间,对于一般个人站点来说已经足够备份使用了。如果还没有七牛云存储空间…

WP的SEO工具汇总

Baidu Sitemap Generator 百度站点地图生成工具 https://wordpress.org/plugins/baidu-sitemap-generator/ This pulgin generates a Baidu XML-Sitemap for WordPress Blog. Also Build a real Static Sitemap-Page for all Search Engine. | 生成百度 Sitemap XML 文件。就相…

Mozilla Firefox 在用户访问被黑客攻击的网站时发出警告

开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> Mozilla 正致力于 优化 Firefox Monitor 功能,该功能推出于 2018 年,目的是让用户确认他们的账户信息是否泄漏。目前,Mozilla 已经为 Firefox 用…

大数据教程(14.2)网站数据分析(二)

2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章介绍了网站点击流数据分析项目业务背景;本篇博客博主将继续分享网站分析的相关知识。 一、整体技术流程及架构 1.1.数据处理流程 该项目是一个纯粹的数据分析项目,其整体流程基本上就是…

Java 爬虫遇到需要登录的网站,该怎么办?

在做爬虫时,遇到需要登陆的问题也比较常见,比如写脚本抢票之类的,但凡需要个人信息的都需要登陆,对于这类问题主要有两种解决方式:一种方式是手动设置 cookie ,就是先在网站上面登录,复制登陆后…

网站部署到Linux服务器上并添加https证书

用的是Nginx服务器 一、部署 将网站打包成war包 放到Linux的data/wwwroot/default目录 解压:jar -xvf novel.war 删除war包:rm novel.war 删除文件夹 :rm -rf novel 二、申请SSL证书 网站 :https://www.pianyissl.com/ 三、…

当网站遭遇DDOS攻击的解决方案及展望

当网站遭遇DDOS攻击的解决方案及展望一、事件发生春节长假刚过完,WEB就出现故障,下午1点吃完回来,立即将桌面解锁并习惯性的检查了Web服务器。通过Web服务器性能监视软件图像显示的向下滑行的红色曲线看到WEB出现问题了。根据上述的问题&…

基于WebSphere与Domino的电子商务网站构架分析

本文出自 “李晨光原创技术博客” 博客,谢绝转载! 转载于:https://www.cnblogs.com/chenguang/p/3742340.html

随时查看源码的网站---http://www.sooset.com/

由于工作需要经常要在Windows平台下参阅linux源码,以前都用http://lxr.linux.no/来浏览源码(如下图所示),最近发现sooset来浏览更方便,所以介绍给大家分享。导航栏用起来很方便,不是吗?呵呵更多详情请参考&…

大型网站架构之百万PV

一:百万PV架构概述PV(page view,页面浏览量)即点击量,通常是衡量一个网站受欢迎程度的主要指标。本案例采用四层模式实现,主要分为前端反向代理层、web层、数据库缓存层和数据库层。前端反向代理层采用主备模式,web层采…

网站及监控利器 Pandora FMS使用体验

Pandora FMS 是一个 开源的应用程序 ,用来监测网站的各种活动,它可以收到实时的监测报告,并发送到你指定的邮箱,也可以通过e-mail, SMS 发送。 更多Linux下的监控软件请关注《Linux企业应用案例精解》一书本文出自 “李晨光原创技…

layui导入模板数据_大气漂亮美观的三个网站后台数据管理模板 大大提升你的开发效率...

今天整理了三个我做项目经常使用的三个网站后台模板,这三个模板都是开源的,可以下载商用,可基于它们开发任何网站,做为后台管理数据。这样能为你开发后台功能节约大量的时间。一.ok-admin 一个很赞的,扁平化风格的&…

Silverlight SEO(搜索引擎优化)白皮书

概要这份文档描述了一些Silverlight程序的搜索引擎优化(SEO)技巧。这些技巧是用来帮助开发人员使得Silverlight内容能够在搜索引擎的结果页被发现,并为没有激活Silverlight的用户提供合意的体验。这份文档将包括以下的章节:*介绍 …

21绝对优秀的网站推荐,激发创意寻找灵感的好去处

世界上总有这么一些人乐于分享,下面挑出21个在设计方面绝对优秀的网站,里面有超酷的设计,时尚的咨询,成功的经验,uleadesign的很多内容就来自于这些网站,希望大家喜欢. 1. Deviantart 2. Behance 3. Abduze…