高并发大型网站架构设计
负载均衡系统
反向代理系统
Web服务器系统
分布式存储系统
底层服务系统
数据库集群系统
为什么要做高并发系统设计?
事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应用中,能达到一万人的同时连接并能保证正常的数据交换已经是很不容易了,通常这个值都在2000到5000之间,能达到上万已经很不错了。目前的门户网站动辄几千万的访问量,所以,高并发的系统架构在所难免。
整体架构
真实中的网站架构也许并不如此也可以实现高性能。但是高性能的网站莫不过如此。如下图所示。
第一 负载均衡系统
负载均衡系统分为硬件和软件两种。
硬件负载均衡效率高,但是价格贵,比如F5等。
软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如lvs。
第二 反向代理系统
目前普遍使用Squid或者nginx,或者Lighttpd,Varish。
这四者又各自有很大的差异。
Squid:主要用来做反向代理,使用内存+硬盘
Nginx:可以反向代理+负载均衡+WWW解析
Lighttpd:反向代理能力一般,处理FastCGI比较好,消耗内存很小
Varish:主要做内存的反向代理,性能最优
第三 Web服务器系统
由Apache负责解析PHP内容,也可以用Nginx,或者Lighttpd,相对来说Apache比较稳定。
第四 分布式存储系统
存储量很大,经常会达到单台服务器无法提供的规模,比如相册、视频等应用。因此需要专业的大规模存储系统。
第五 底层服务系统
根据各自需要由C/C++开发设计供上层CGI调用。
第六 数据库系统
1)使用MySQL数据库,考虑到Web应用的数据库读多写少的特点,我们主要对读数据库做了优化,提供专用的读数据库和写数据库,在应用程序中实现读操作和写操作分别访问不同的数据库。
2)使用同步机制实现快速将主库(写库)的数据库复制到从库(读库)。一个主库对应多个从库,主库数据实时同步到从库。
3)写数据库有多台,每台都可以提供多个应用共同使用,这样可以解决写库的性能瓶颈问题和单点故障问题。
相关文章:

Tidio AI 趋势报告:约42%受访者能够接受机器人伴侣
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 文章内图源:Tidio 近日,波士顿动力发布了一段机器人跳舞的视频,有些人不敢相信他们所看到的,它看起来更像是皮克斯动画而不是真实的镜头。 有人说&#x…

微信公众平台对所有公众号开放自定义菜单
据统计,微信公众号已达1000多万了,但大多数没有微信认证,且没有开发能力,为此微信公众平台开放了自定义菜单功能给所有公众号,这是微信团队年前给广大自媒体送的大礼,期待微信越来越开放 公众帐号运营者点击…

SignalR网页实时推送
1.新建项目,选择mvc4 Wed应用程序,选择Internet,视图引擎:Razor 2.在控制器中添加 并添加上视图 3.引用(install-package Microsoft.AspNet.SignalR) 4.添加Startup 项目名 5.新建Hubs文件夹,添…

Hyper-V虚拟化测试05防火墙及证书配置
3.防火墙和证书3.1、防火墙配置打开Windows防火墙,并进入到高级配置入站规则,启用“Hyper-V副本HTTP侦听器(TCP入站)”和“Hyper-V副本HTTPS侦听器(TCP入站)”可以看到已经启用了如上两条规则允许入站流量3…

httpwatch的timechart 解析
从timeChart,我们可以一目了然的看到那些请求花费的时间较长,一般柱状的长短表示从请求到接受共花费的时间,我们重点需要优化那些柱状较长的部分,当然我们也可以点击time列,按请求时间排到序,直接找出请求时…

英特尔北京2022年冬奥会体验中心落成
2020年东京奥运会已圆满落幕,全社会进入到为北京2022年冬奥会紧锣密鼓筹备的倒计时模式。近日,“英特尔北京2022年冬奥会体验中心”在北京石景山区首钢园落成,并举办了媒体开放日活动。以体验中心为窗口,英特尔在近千平米的展厅中…

机器学习 LR getA()
机器学习 LR getA() 前面的几位回答都没有解决getA()是什么的问题,碰到同样的问题,解释如下:matrix.getA()Return self as an ndarray object.Equivalent to np.asarray(self).Parameters: None Returns: ret : ndarrayself as an ndarray 也…

memcache安装
转载自 http://zhaochen.blog.51cto.com/2029597/390037 一,memcache简单介绍: memcached是高性能的分布式内存缓存服务器,为了提高性能,memcached中的数据都保存在内存中,重启memcached及重启操作系统都会导致缓存中的…

算法小论——第三章 又把新桃换旧符
2019独角兽企业重金招聘Python工程师标准>>> 笔记 这一章主要是渐进记号和高中数学的回忆。 几个标记: Θ -- 上界和下界,绑定值,相当于f(n) ∈ [c1 * g(n), c2 * g(n)]Ω -- 闭区间下界,最好运行时间,相当…

来体验一把职场人的真实训练,检验你的工程化交付能力!
长沙软件人才实训基地是由政府引导,长沙软件园(大型国企)、万兴科技(A股上市公司)和CSDN(中国开发者社区)三方参与,强强联手,倾力打造的人才培育平台,旨在通过…

从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验。本篇主要开始介绍基于XCode进行IOS程序的开发,介绍使用FMDB…

nginx做方向代理不显示图片的问题
在nginx的配置文件中加上 location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$ { access_log off; expires 30d; root /www/htdocs/market; break; }

Linux系统挂载ntfs分区
Linux系统挂载ntfs分区 http://www.2cto.com/os/201404/297079.htmlposted on 2015-02-21 22:20 雪山看雪 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/zker/p/4297223.html

谷歌新深度学习系统可以促进放射科医生的发展
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 谷歌人工智能研究人员团队在《自然》上发表了一篇新论文,深度学习可以检测出异常胸部 X 光片,其准确度可与专业放射科医生相媲美。 深度学习系统可以帮助放射科医师优先考虑胸部…

【AngularJS】—— 12 独立作用域
独立作用域的作用 为了便于理解,先看一下下面这个例子: <!doctype html> <html ng-app"myApp"><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><script src"…

nginx虚拟目录设置 alias 和 root
nginx貌似没有虚拟目录的说法,因为它本来就是完完全全根据目录来设计并工作的。 如果非要给nginx安上一个虚拟目录的说法,那就只有alias标签比较“像”,干脆来说说alias标签和root标签的区别吧。 最基本的区别:alias指定的目录是…

避免死锁的一些注意事项
1. 避免嵌套锁, 如果每个线程都只占有一个锁, 则可以很大程度上避免死锁。其死锁的情况是, 线程 1 依次获得 A 对象和 B 对象的锁, 然后决定等另一个线程的信号再继续, 从而先释放了 B 对象的的锁。可是线程 2 需要同时…

这是一个好问题:既然机器可以学习,它们能忘掉吗?
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 很多公司都使用机器学习来分析人们的欲望、厌恶或面孔。研究人员提出了一个不同的问题:我们如何让机器忘记学习? 机器学习正在寻找如何在人工智能软件中诱发选择性失忆的方法。目…

python tar.gz格式压缩、解压
压缩 代码 import tarfile import os def tar(fname):t tarfile.open(fname ".tar.gz", "w:gz")for root, dir, files in os.walk(fname):print root, dir, filesfor file in files:fullpath os.path.join(root, file)t.add(fullpath)t.close()if __nam…

bzoj1251: 序列终结者 (splay)
splay可以用于维护序列,比如noi的维修序列,比如这道 发现当时splay没写总结,也没题解 然后重新写splay竟然耗了一个晚上 结果是因为max【0】没有附最小值!!血一样的教训 最后祭出inline大法才过,我的splay真…

模型神器组合,yyds!
作者 | 东哥起飞来源 | Python数据科学最近在kaggle上有一个调参神器非常热门,在top方案中频频出现,它就是OPTUNA。知道很多小伙伴苦恼于漫长的调参时间里,这次结合一些自己的经验,给大家带来一个LGBM模型OPTUNA调参的使用教程&am…

理解http响应头中的Date和Age
Date:Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date: Mon, 04 Jul 2011 05:53:36 GMT。 Age:当代理服务器用自己缓存的实体去响应请求时,用该头部表明该实体从产生到现在经过多长时间了。 比如访…

linux 保留内核中sas驱动的加载导致crash问题
[rootlocalhost ~]# uname -a Linux localhost.localdomain 3.10.0-693.5.2.el7.x86_64 问题描述,在crash的时候,小内核因为分配中断号失败而触发panic,打印如下:(备注:本文大内核就是指正常运行的内核&am…

四层和七层负载均衡的区别
负载均衡设备也常被称为"四到七层交换机",那补充:所谓四层就是基于IP端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。换句换说&…

关于数据库,你可能最想知道的几件事
【CSDN 编者按】随着技术不断更新,数据库的发展可谓全面开花,也吸引了越来越多人的关注,但大家真的都足够了解数据库吗?作者 | 易璜珵 责编 | 侯淼淼出品 | 《新程序员》互联网飞速发展的时代里,数据库、中间件和…

Visual C++ 2012/2013的内存溢出检測工具
在过去,每次编写C/C程序的时候,VLD差点儿是我的标配。有了它,就能够放心地敲代码,随时发现内存溢出。 VLD最高可支持到Visual Studio 2012。不知道以后会不会支持Visual Studio 2013,但反正眼下是不支持的。 相关的讨论…

.NetCore Docker
转载于:https://blog.51cto.com/linhongquan/2047736

集生态之力跨城市数字化之难题,英特尔交上了一份完美答卷
随着数字孪生、人工智能、大数据、云计算、区块链等新兴技术的发展成熟,社会正加大步伐向数字化时代迈进。城市,作为社会民生与经济发展的重要载体,自然站在了数字化建设历程的第一线。当然,数字化城市建设并不是搭建“空中楼阁”…

设置Squid Cache_mem大小
squid代理服务器一般的Unix,Linux都自带。我使用的是CentOS 5.3,Squid是自已编译的。 Squid 默认 cache_mem 100 16 256 打开/etc/squid/squid.conf 配置 $vi /etc/squid/squid.conf #http_port ,是代理的端口,如果没有其他的http服务占用80端口或8080…

centos iptables关于ping
配置iptables策略后,一般来说INPUT都是DROP然后配置需要通过的 当执行: iptables -P INPUT DROP 后,机器就不能被ping通了! 因为icmp没有添加到规则中! 于是我执行如下代码: iptables -A INPUT -p icmp -j …