大并发服务器架构 大型网站架构演变

news/2024/5/22 10:14:00/文章来源:https://blog.csdn.net/NK_test/article/details/50611000

服务器的三条要求:

高性能:对于大量请求,及时快速的响应

高可用:7*24 不间断,出现故障自动转移,这叫fail over(故障转移)

伸缩性:使用跨机器的通信(TCP

另外任何网络系统结构都可以抽象成C/S架构,我们常说的B/S模式本质上也是C/S架构(浏览器看作客户端)。

一个典型的服务器架构:


注: epoll是linux下最高效的网络I/O

由于服务器需要高效处理大并发连接,因此多个位置均可能出现性能瓶颈,下面我们分析不同位置产生瓶颈的原因及其处理方法:

(一)数据库瓶颈

【1】超过数据库的连接数的解决方法:加上一层DAL,使用队列等待(队列等待--数据访问层),也可以再使用连接池DAL队列服务+连接池)这样不需要重新连接,直接从池中找资源。

【2】超出时限的解决方法:

1)将业务逻辑放置应用服务器(操作系统业务处理),数据库逻辑不要太复杂,只是进行一定的辅助业务处理。

(2)缓存数据,但是面临缓存的更新和同步的问题,如下:

1. 缓存的时效性,if timeout then 重新去数据库查询,(将热点数据放至缓存)这种方法实时性较差。

2. 一旦数据库更新,立即通知前端缓存更新。Update之后修改更新缓存,实时性较好。可能实现起来较难。

如果内存不够用,那么就放到外部磁盘,使用缓存换页机制(类似OS中的内存换页)。

上面提到的这些都可以使用开源产品实现:Nosql ---> (反sql 

主要存放非关系的数据,key/value

还有Redis memached 缓存等分布式开源软件。这些软件是可以跨服务器的,但是如果部署在应用服务器上,则是局部的,其他同级服务器访问很麻烦。

但是如果单独布置机器,使用分布式缓存,这些就是全局的,所有的应用服务器都可以访问,方便快捷。

【3】数据库读写分离

 数据库的查询操作一般比写操作频繁,我们可以对数据库进行负载均衡,使用主服务器进行写操作,从服务器进行读操作,DAL进行读写分离,通过replication机制进行主从服务器间的同步。

【4】数据分区(分库、分表)

 分库:数据库可以按照一定的逻辑把表分散到不同的数据库--->垂直分区(用户表,业务表)

 更加常用的分表--水平分区:将表中的记录分至不同的数据库,10条记录分至10个数据库,类似这样,这种方式很容易扩展水平结构。

(二)应用服务器瓶颈

添加任务服务器对应用服务器的任务分配进行负载均衡,其中又分为主动和被动两种方案:

(1)应用服务器被动接受方案:

使用任务服务器实现负载均衡,暴露一个接口,任务服务器可以当作一个客户端,应用服务器看作http服务器

任务服务器可以监视应用服务器的负载,CPU/IO/并发/内存换页高,查询到信息后,选取负载最低(算法确定)的服务器来分配任务.

2应用服务器主动到任务服务器接受任务进行处理

应用服务器处理完自己的任务后主动向任务服务器申请求任务。

(1)的方式可能会造成不公平,(2)的缺点是如果应用服务器处理不同的业务,那么可能任务服务器的编程逻辑会很复杂。

 其中任务服务器可以设置多台,彼此之间通过心跳联系------>满足 高可用性(fail over机制)。

如此一来(数据库,缓存,应用服务器,任务服务器)任何位置出现瓶颈就只需要增加服务器好了。

为了高效的进行服务端的编程,我们也需要知道服务器性能四大杀手:

(1)数据拷贝 ----> 缓存来解决

(2)环境切换 -----> 理性创建线程:是否需要多线程,哪个好?单核服务器(采用状态机的编程效率最佳,类似OS中的进程切换)

多线程能够充分发挥多核服务器的性能,也要注意线程间切换的开销

(3)内存分配 ------> 内存池,减少向操作系统申请内存

(4)锁竞争 -------> 通过逻辑尽量减少锁的使用

以上的信息可以归纳为下面的这张图:


我们接下来介绍实际中的大型网站架构的演变过程,和我们上面的问题处理流程基本一致:

[Step1]web server与数据库分离



Apache/Nginx处理静态(前端服务器)  JBoss/Tomat处理动态 (后端服务器)

[Step2]缓存处理


1.浏览器缓存减少对网站的访问

2.前端服务器静态页面缓存减少对web服务器的请求

3.动态中相对静态的部分使用ESI

4.本地缓存减少对数据库的查询

[Step3]web server集群+读写分离


负载均衡:
前端负载均衡
DNS负载均衡
在DNS服务器中,可以为多个不同的地址配置同一个名字,对于不同的客户机访问同一个名字,得到不同的地址。
反向代理
使用代理服务器将请求发给内部服务器,让代理服务器将请求均匀转发给多台内部web服务器之一,从而达到负载均衡的目的。标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
基于NAT的负载均衡技术
LVS
F5硬件负载均衡
应用服务器负载均衡
数据库负载均衡
[Step4]CDN、分布式缓存、分库分表


目前流行分布式缓存方案:memcached、membase、redis等,基本上当前的NoSQL方案都可以用来做分布式缓存方案

[Step5]多数据中心+分布式存储与计算


技术点:分布式文件系统(DFS


Map/Reduce: 

文件太大,无法加载至内存,分割得到key-value数据,这个是map过程(多个机器完成)

将其合并的过程称为reduce。Map-->combine-->reduce,这就是所谓的分布式计算。


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

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

相关文章

如何让网站打开更快第四弹--管好你的HTTP头第一篇

为什么要讲HTTP头? 1、非常简单的通过HTTP头,可以让你的用户打开速度快10倍2、网上讲HTTP头的文章,都讲的太玄乎和专业,实际价值不大3、太多人看了太多乱七八糟的文章,加了很多自己也不知道干嘛用的HTTP头4、HTTP头过大…

最佳45个带给你灵感的 HTML5 网站设计作品

HTML5 新增了许多重要的特性,像 video、audio 和 canvas 等等,这些特性使得能够很容易的网页中包含多媒体内容,而不需要任何的插件或者 API。而其它的新元素,例如 section、article、header 和 nav 等,则是用来丰富网页…

mysql搭建网站怎么填_从零搭建网站之MySQL篇

前言今天心血来潮又购买了三年服务器,自己也喜欢在服务器上乱搞,面试的时候要用到,自己测试什么东西也可以用到,建议大家都买一个自己的服务器,我的服务器是centos8.0的版本。下面就让我们开始吧!&#xff…

30个设计精美的户外体育运动网站制作案例

体育网站分为几个不同的类别:体育新闻,俱乐部,运动服装和著名运动员的个人网站。体育俱乐部和新闻网站主要包含大量的信息,这使得它页面布局很难达到清洁。对于运动服装网站来说,其主要任务用一个有说服力的方式呈现产…

网站php.ini,利用php.ini的另类后门

最近在看完了一个程序的代码后又重新温习了PHP中文手册, 在看的过程中突然想到了一个隐藏后门的方法,拿来给大家分享下 嘿嘿:) 在入侵服务器后如何能将后门做到不被管理员大叔发现这是很重要的。因此就出现了各种隐藏的方法,对于php来说大多是…

html网站实现站内搜索功能_如何快速搭建站内搜索,站内搜索常见问题与解答 - 站内搜索系列...

今天我们一起来看一个app站内搜索搭建与优化的案例。某兼职招聘app,公司已有些体量,但搜索后台还一直使用MySQL搜索。数据量和日活到目前这个量级,站内搜索已经成为整个业务的瓶颈。在后台统计的无结果搜索词中,我们可以观察到&am…

成功案例_营销型网站成功案例 营销型网络

我总结了多年的网络营销推广方法,现在决定把这些干货技术免费分享给大家,大家一起交个朋友,一起进步共同成长。营销型网站成功案例 营销型网络 它必须是一款成功的在线游戏,一种具有玩家凝聚力的游戏。1“ FF14”。当版本0关闭…

我记录网站综合系统 -- 技术原理解析[0:简介(代序) 1.7Beta源代码下载开始]...

看到了路过秋天的博客系统受到了大家的好评,我也来介绍一个好的开源的CMS系统。我记录网站综合系统 是 掷鸡蛋者 的作品,这个家伙将大量的时间和精力放在这个项目上了,可以算一个创业项目。对于这样的同志,我只有敬佩他和全力支持…

30个免费下载高质量精美照片素材的网站

在设计中使用免费的照片素材可以节省大量的时间。网络有有很多分享照片资源的网站,有些是免费的,有些则需要付费,当你在设计中使用网上的照片素材的时候要注意使用协议以免带来麻烦。今天这篇文章向大家推荐30个国外的免费下载高质量精美图片…

自我感觉不错的五个响应式网站设计工具

2019独角兽企业重金招聘Python工程师标准>>> 响应式Web设计(Responsive Web Design)是2013年最流行的界面设计趋势之一。那么你知道有哪些好用的支持响应式设计的工具吗?下面推荐5个用起来不错的响应式Web设计工具,希望你能喜欢: …

今天发现的一些优秀的资源网站

为什么80%的码农都做不了架构师?>>> http://www.trinea.cn 一些开源项目 http://www.trinea.cn/android/android-open-source-projects-view/ android的一些工具 https://github.com/Trinea/android-common 转载于:https://my.oschina.net/quanke/blog/…

开源网站统计程序 oracle,开源网站访问统计系统Piwik

Piwik是一个PHP和MySQL的开放源代码的Web统计软件. 它给你一些关于你的网站的实用统计报告,比如网页浏览人数, 访问最多的页面,搜索引擎关键词等等…Piwik拥有众多不同功能的插件,你可以添加新的功能或是移除你不需要的功能,Piwik同样可以安装…

织梦之路——织梦自由列表页分页链接绝对路径化(SEO)

回家半个月,回来思路全无,看来IT工作者禁不起安逸啊~~~~ 先看看哪里需要完善的吧,于是先看了自由列表页的分页链接——相当不爽!! 都是相对路径,“据说”对SEO不利,于是改!&#xff…

让Safari中收藏的个人网站显示Logo

让Safari中收藏的个人网站显示Logo touch-icon Safari中要显示网站的Logo需要特意设置一下&#xff0c;并不是通常的写法&#xff1a; <link rel"shortcut icon" type"image/png" href"pics/favicon.png">而是有它自己的一套写法&#x…

当SaveBinaryDirect遇到网站配额模版

根据某个“众所周知”的原因&#xff0c;当我们使用SharePoint的CSOM&#xff08;客户端对象模型&#xff09;上载文件的时候&#xff0c;推荐使用SaveBinaryDirect取代FileCollection.Add的方法&#xff08;详细原因可以参考&#xff1a;Uploading files using Client Object …

博客 笔记 网站小计

为什么80%的码农都做不了架构师&#xff1f;>>> FarBox 理念不错……可服务器在国外…… LeaNote 个人备案的 哪天成公司了再说吧…… 不过开源的程序还不错……GoMongoDB…… Github、GitCafe都有Pages服务。可惜GitCafe容量太小……但是毕竟是国内的…… paperwo…

关于meta: description HTML 标签的解释 ,SEO

关于meta: description HTML 标签的解释 &#xff0c;SEO 参阅链接 Meta Description 了解一下 meta: description <meta namedescription content"Kyle 自己的个人站点&#xff0c;存放一些自己的项目和好用的 web 小工具"><head> 标签中的 meta: desc…

关注电子商务网站开发-《简单易用的JQUERY插件--图片延时加载插件(lazyload)》

图片延时加载(lazyload)是网站常用的一种手段&#xff0c;目的是为了减少页面加载时向服务器的请求数&#xff0c;这里分享一款支持大部分情况下&#xff08;如IPAD浏览、异步加载、某个范围加载&#xff09;的图片延时加载插件。 代码及效果 先贴代码&#xff1a; $.extend({i…

易维信(EVTrust)支招五大技巧识别钓鱼网站

网上购物和网上银行凭借其便捷性和通达性&#xff0c;在互联网上日渐流行。在互联网上&#xff0c;你可以随时进行转账汇款或进行交易。据艾瑞咨询发布《2008&#xff0d;2009年中国网上支付行业发展报告》显示&#xff1a;中国互联网支付市场交易规模2008年同比增长181%&#…

前端开发人员需要具备哪些SEO优化技巧

前端开发工程师不仅需要要跟视觉设计师、交互式设计师配合&#xff0c;完美还原设计图稿&#xff0c;编写兼容各大浏览器、加载速度快、用户体验好的页面。现在还需要跟SEO人员配合&#xff0c;调整页面的代码结构和标签。一些成熟的平台&#xff0c;在开发初期并没有考虑优化问…