【简记】大规模Web开发技术(第一章)
来源:互联网 发布:java设置pdf打印格式 编辑:程序博客网 时间:2024/05/29 07:56
小规模服务和大规模服务的区别:
1.保证可扩展性、负载均衡的必要性
横向扩展:通过增加服务器数量来提高系统整体的处理能力并分担负载。
纵向扩展:通过提高硬件性能来提高处理能力的方法。
硬件的性能和价格不是成比例的。越是大批量生产的通用硬件,其价格就越便宜,而横向扩展策略就是通过横摆放廉价硬件来确保可扩展性。采用横向扩展策略能降低成本,
但会产生各种各样的问题。例如:用户请求如何分配?(负载均衡器),采用分布式数据库如何保持数据同步?网络延迟怎么处理?
2.保证冗余性
系统的冗余性是必要的,也就是说,不论哪台服务器出现故障或不正常,服务必须能继续运行。
3.低成本运维的重要性
4.开发人数和开发方法的变化
应对大规模数据量:
运行大规模Web 应用程序时,绝大部分的精力都用在大规模数据处理方面。
计算机要从磁盘(硬盘)上读出数据并存储到内存上,然后CPU 会从内存上取得数据进行处理。而且,从内存上取得的指令会缓存到更高速的CPU 缓存中。所以,数据要经过磁盘→内存→缓存→CPU 多层才能被处理。
为减小这种速度差,操作系统使用了各种各样的手段,例如从磁盘加载数据后先放进内存中缓存等,从整体上使得设备间的速度差异减少到感觉不到的程度。数据库等中间件的数据结构和实现基本上也考虑了速度差异。
即使操作系统和中间件再努力,也是有极限的。数据量增大,就会经常发生缓存不命中,结果就要多次访问低速磁盘。进入磁盘I/O ( 输入输出〉等待队列的程序在等待读取完成之时,即使其他资源空闲,也无法进行下一步处理。这就会导致系统整体的速度下降。
大规模化的壁垒会突然出现在眼前。例如,数据规模增大引起的I/O负载上升并不是平滑增加的。从缓存不命中开始只需片刻,问题就会急剧显露出来,引起人们注意时,系统速度就已经开始下降了一一这种事情是极其常见的。
- 【简记】大规模Web开发技术(第一章)
- 【简记】大规模Web开发技术(第二章)
- 【简记】大规模Web开发技术(第四章)
- 【简记】大规模Web开发技术(第五章)
- 【简记】大规模Web开发技术(第六章)
- 【简记】大规模Web开发技术(第七章)
- 【简记】大规模Web开发技术(第八章)
- 【简记】大规模Web开发技术(第九章)
- 【简记】大规模Web开发技术(第十章)
- 【简记】大规模Web开发技术(第十一章)
- 【简记】大规模Web开发技术(第十二章)
- 【简记】大规模Web开发技术(第十三章)
- 【简记】大规模Web开发技术(第十四章)
- 【简记】大规模Web开发技术(第十五章)
- 【读书笔记】大规模Web开发技术(前言)
- 大规模Web服务开发技术
- 大规模Web服务开发技术
- 大规模web服务开发技术
- Caffe学习笔记—Caffe反向传播计算
- eclipse中jetty插件安装
- 二、基于BIO、伪异步IO、NIO的Java代码实例
- 802.11
- 发光二极管压降, 也就是最小导通电压
- 【简记】大规模Web开发技术(第一章)
- Android:res之selector背景选择器
- 如何将最短时间将Github上的开源项目导入到android studio中
- java中方法是否属于类成员?面试题
- 向Unreal编辑器关卡中拖入自定义类型
- centos7下tomcat7 或tomcat8启动超慢原因
- HUST 1625 Chessboard 并查集
- React组件生命周期过程说明
- python基础之文件操作