标签:发送 lin 反向 stc cgi 调度 空间 linux cal
当用户请求到达时-----httpd服务请求-----动态的通过fastcgi转发到后端指定主机
存储可以通过文件或者数据库系统,基于mysql送达给后端的服务器
10000(C10K问题)个请求中只有20%是动态的请求,其中又有20%需要连接数据库的,所以更多的负载发生在httpd
对于httpd一方面要响应请求,另一方面要承载反向代理,容易成为性能瓶颈,2000个请求需要application server负载,而application server承载能力1000个左右
数据请求----在执行复杂查询的时候能100个并发就不错了
所以解决途径-----向上扩展scale up:狂买机器 然而性价比不高,钱花的翻倍,性能提升有限
向外扩展---加更多的主机,把请求分散到更多主机(问题:调度操作谁来实现,比如httpd的调度模块把需求分散到后端,http是stateless协议,势必要跟踪用户访问的足迹,胖cookie导致诸多用户敏感信息在浏览器上,例如购物车等数据会放在服务器的内存空间中----session,浏览器二次访问中会把cookie发送给session,从而唤醒历史访问信息,那么问题来了,购物车信息可能第一次分发到机器1,第二次分发到机器2,卧槽~悲剧了)
上述问题mysql也会遇到
所以有了主从复制,数据存储都找到一台主机,其他数据库服务器作为从服务器存在,复制一份,那么负责分发任务的服务器不仅要负责任务分发还要顾及负载均衡
而且解耦也变得困难
这就是中间件的价值所在!!解析请求并决定分发给哪个数据库服务器:是主写,还是负载均衡的选择一台数据库进行读操作
问题:静态文件无疑要复制一份到n份,更新站点时,后端内容会经常改,新程序会有bug;
不同用户调到不同服务器上,session的复制无疑是个大问题----这tm内存数据怎么迁移啊(用redis呗,用memocache的就该哭了)
如何做httpd的负载均衡?一个域名下有两个 做轮询
标签:发送 lin 反向 stc cgi 调度 空间 linux cal
原文地址:https://www.cnblogs.com/saintdingspage/p/9975213.html