1、为什么要掌握大型网站开发技术
- 对于开发人员,可以仿照“京东网”,开发出一个类似京东网功能的网站。但就能让多少人访问的问题而言,也许超不过100人访问就瘫痪、卡死。
- “京东网”能承受几千万、上亿的访问量,差别就在于细节技术上。
- 比方:钢铁厂造出的钢材可能用来造卫星的,铁匠铺造出来的钢材可能只能做个锄头。从事的人,在以后的行业发展,肯定也不一样。
- 比方:百度要是用like查询做搜索的话,早就不知道死过多少回。
- 一个程序员看一个网站,能不能看出门道来,能不能看到系统复杂到什么程度。这是初级程序员跟高级程序员的区别。
- “1号店”搜索“纸巾”,能查出“纸手帕”,涉及到搜索引擎、搜索词猜测技术。 查询界面产品非常多,肯定不是一次性把所有的搜索结果都查询出来,这里面涉及到页面查询展示的优化技术。 购物车的实现技术,在书上学的放到cookie或session里面,在真正的电商项目里面都是错的。 点击商品详情页面,地址栏的地址即不是静态地址又不是动态地址,内容显示也不是一条条从数据库中查询出来再显示,要不然数据库早卡死了。
- 外行看热闹,内行看门道。
- 懂大型网站开发技术的人更有竞争力、更值钱。
- 在公司做简单的增删改查的技术人员,应该反思,你的技术有任何的长进吗?你用到了复杂的技术了吗?有没有考虑再写几年的增删改查,人是不是就废掉了啊?什么时候才能拿到高工资?怎样才有机会进入大型的公司?挣更多的钱,掌握更高深的技术,从而能够在技术这个行业里面长盛不衰?增删改查的技术,来个应届生学习学习都会,那你的核心竞争能力在哪呢?
2、降低服务器压力的云存储
- 网站开发必须知道的三个环节:请求、处理、响应。
- 网站优化三个环节:浏览器端优化、网络端优化、服务器端优化。
- 示例:打开一个网页,按F2,看到浏览器跟服务器请求很多次,要html、要js、要css、要图片等等。如果所有请求都从一台服务器上获取,过程会很慢。(注:浏览器本身也有限制同时最多能向同一台服务器发起多少个请求)。
- 示例:如果打开一个网页,请求1个html、30张图片、5个js、5个css,即一个用户访问需要请求41次。如果是10万个用户访问,则要410万次请求。如果1个html大小为100k,其他大小为900k,则要承受10万兆的流量。总结,即服务器将同时承受连接数很多、流量也很大。一台服务器承受的连接数、流量肯定是有限的,但承受这么多的时候,肯定会卡。
- 优化1:把不同的文件放到不同的服务器上,最大的好处:将请求分流给不同的服务器;小的好处:不用传多余的cookie信息,减少部分流量;最终目的:节省流量、提高加载速度。
- 打开cmd,ping网站域名,可以查看到服务器ip,区别服务器是否同一台。
- 示例:如鹏网的广告图片存放在专门的图片服务器上,静态文件js、css存放在cdn服务上。
- 访问主站服务器时,request请求中的header带cookie,假如cookie大小1k,一个页面请求40次,10万个用户访问,1K*40*10W=40000000=4G流量
- cookie是不跨域的。
3、让数据库成废物:页面静态化
- 示例:假如查看一个新闻页面,需要1次数据库查询,如果1秒钟有1万用户访问,即要查询1万次数据库,则会对数据库造成非常大的压力。
- 优化2:页面静态化,即服务器上先生成静态页面,用户查询的时候直接给,不需要查数据库。目的:减少数据库服务器压力。另外,有利于cdn技术的应用。
- shtml技术,ServerSideInclude(SSI),如鹏网、新浪网都采用该技术。
4、为什么大网站访问那么快:CDN
- 示例:一台中心服务器,多台放在各个地方的CDN服务器。中心服务器把网页分发到各个CDN服务器。用户访问离网络(DNS解析技术)最近的CDN服务器。
- 一般中小型公司购买第三方的CDN服务。
- CDN只会对静态地址进行处理,不会对动态地址进行处理。
- 一般服务器缓存5分钟,CDN提供手动刷新(全网刷新)或API通知服务器刷新。
- CDN缓存的是静态内容。
5、JS压缩和css sprite
- JS压缩的最终效果:减小文件体积
- JS压缩的好处:服务器压力小、网页加载速度快、节省流量
- JS压缩可使用工具,以命令行的方式,对某路径下的所有js、css进行批量压缩
- css sprite技术是只将很多小图标放在一个图片上,利用css做位移,展示某个指定图标。
- css sprite技术好处:提高网站加载速度。
6、大型网站服务器架构
- 示例:1台负载均衡服务器、3台Web服务器、一台数据库实现简单负载均衡。如果数据库压力大,数据库也可以做集群。
- 负载均衡服务器做的工作就是把请求分发给不同的设备。
- 使用redis服务器存放session管理,以解决session共享问题。如果redis服务器压力大,redis也可以做集群。
- 反向代理服务器的优点:避免慢速Internet占用Web服务器的连接数(降低web服务器压力)、负载均衡、安全
- 连接数,如果用户网速慢,访问反向代理服务器,占用了一个连接,反向代理服务器等待用户请求完全到达的时候,才调web服务器。
- 反向代理服务器有商业的、免费的。
7、服务器优化的固定套路:分离
- 上传下载分离。
- 示例:上传涉及到服务器网络的上行带宽。如果用户的网速很快,可能在上传过程中,其他人的下载就很慢。
- “浏览器-->上传-->web服务器-->上传-->云存储”改为“浏览器-->上传-->上传服务器-->上传-->云存储”,web服务器只负责动态请求处理。
- 有时候做网站就是拼服务器。
- 文件服务器跟web服务器分离
- 耗资源处理(图片加水印、视频处理等)跟web服务器分离
- 上传视频,涉及转码,很消耗服务器CPU
- 数据库读写分离
- 数据库分库、分表
8、数据库压力降低一万倍:缓存
- 用户第一次请求,向数据库查询数据,并且缓存结果。当下一个用户访问时,直接把缓存结果给用户即可。如果设置缓存时长,当用户请求时,缓存失效的时候,再查一次数据库,再缓存结果。减少频繁数据库查询。
- 可通过缓存技术,降低数据库服务器压力,提供性能。
9、搜索引擎技术:全文检索
- 数据库like查询,效率性能很低。因为like '%***%',全表扫描。
- 全文检索的需求:高效率、模糊匹配。
- lucene开发效率低,需要处理很多底层细节。
- solr服务器,基于java开发,把lucene封装起来。
10、高并发场景1:抢单和秒杀如何实现
- 方法1:锁。缺点:效率低,慢。
- 示例:并发下的影响,i=0;i=i+1,10次并发,可能i的结果为6,而不为10。
- 方法2:两阶段处理:自由抢,然后排队裁判。
11、高并发场景2:文章阅读数
- 方法1:锁
- 方法2:每条阅读单独记录到数据库,然后定时汇总更新阅读数
- 方法3:redis实现方法2
12、云计算
- 12306春运跟平时所需服务器、淘宝双11与平时所需服务器,自己承担服务器,可能造成投入巨大、资源浪费。
- 云服务:专门的公司提供服务,按需付费。如阿里云、又拍云存储等。
- 云服务可以减少网管、dba、使用cdn、防范黑客的投入。
相关推荐
阿里中间件技术揭秘 阿里巴巴中间件与稳定性平台团队专注于为业务应用团队提供弹性互联网系统解决方案。该团队源自7年前的淘宝平台架构部,随着阿里巴巴集团业务扩展,特别是性能和稳定性技术领域的突破,已经发展...
本文将深入剖析阿里云CDN的核心技术,并针对性能优化、安全防御等方面进行揭秘。 首先,CDN技术的基本原理是通过在全球各地建立多个节点,将用户的请求定向到最近的节点,以此来实现快速的内容分发。阿里云CDN作为...
《木马技术揭秘与防御源码》是一份深入探讨木马技术及其防御策略的重要资源,旨在帮助研究人员和安全从业者理解木马的工作原理,并通过源代码分析掌握如何在汇编层面对注册表进行操作,从而提升系统安全防护能力。...
综上所述,《腾云_云计算和大数据时代网络技术揭秘》这本书旨在深入探讨在当前信息技术快速发展的背景下,云计算、大数据及其相关网络技术的重要性和发展趋势。通过对上述知识点的介绍,我们不仅可以了解到这些技术...
随着互联网技术的快速发展,前端开发技术日新月异,JavaScript作为前端开发的核心语言,其重要性不言而喻。在一线互联网企业中,JavaScript高级面试成为了筛选优秀前端开发者的必备环节。本文将深入探讨前端...
总的来说,这个“揭秘一线互联网企业 前端JavaScript高级面试视频课程”的学习内容涵盖了JavaScript从基础到高级的各个方面,不仅包括语言本身,还有与之相关的Web技术和实践技巧。通过深入学习和理解这些知识点,你...
### 九年双11:互联网技术超级工程 #### 阿里巴巴双11作为互联网技术的超级工程 阿里巴巴的双11不仅是全球最大的购物狂欢节,也是一个世界级的技术盛宴。自2009年首次举办以来,每年的双11都见证了阿里巴巴技术...
书籍的出版得到了人民邮电出版社的支持,该出版社是中国计算机和互联网技术领域的重要出版机构,出版过多部技术领域的经典图书。出版信息显示,本书的印刷质量优良,采用了标准开本,并有精美的装帧设计。 版权声明...
综上所述,《首席AI架构师揭秘:AI互联网五大热门趋势》一文中揭示的趋势涵盖了AI技术的多个方面,从宏观的行业发展方向到具体的商业实践路径,都具有重要的参考价值。随着AI技术的不断演进和完善,我们有理由相信它...
【NGFW】构建高效、安全的_CDN——阿里CDN核心技术揭秘 在互联网时代,内容分发网络(CDN)已经成为提升网站性能和保障服务稳定性的关键基础设施。阿里云CDN作为业界领先的服务提供商,其核心技术涉及多个层面,...
1. **市场需求**:随着互联网技术的发展,SIP已经成为构建现代通信系统不可或缺的一部分,掌握SIP能够提升个人在通信行业的竞争力。 2. **技术深度**:深入理解SIP可以帮助工程师解决复杂的技术问题,提高系统的...
学习如何识别假冒网站、避免点击未知链接、定期更新软件和系统以防止病毒侵入,是保护自己网络安全的关键。 2. **电话诈骗**:骗子通过电话进行欺诈,如假冒公检法人员,要求受害者转账或提供个人信息。了解公检法...
5. 智能风控技术在金融科技领域的应用:本书讨论了智能风控技术在金融科技领域的应用,包括机器学习和人工智能算法在信贷风控领域的应用。 本书的特点是系统全面、多维度地呈现了当前互联网金融行业是如何做智能...
通过以上内容的介绍,《TCP/IP揭秘第三版》不仅是一本深入浅出的技术书籍,也是一本非常适合网络工程师、系统管理员以及对网络技术感兴趣的读者学习的资源。书中涵盖了丰富的实例和案例研究,有助于读者更好地理解和...
本书《Android应用开发揭秘》深入探讨了Android系统在移动互联网时代的地位和其对PC时代的影响力,强调了其作为移动设备操作系统的优势,包括开放性和免费的特性,以及它在全球开发者社区和一流手机厂商中的广泛支持...
搜索引擎技术是现代互联网应用中不可或缺的核心技术之一,它能够帮助用户快速定位到自己需要的信息。Lucene是一个非常受欢迎的开源搜索引擎库,它由Apache软件基金会支持。它提供了创建自己的全文搜索引擎的强大工具...