大型网站架构体系的演变

news/2024/5/11 13:27:03/文章来源:https://blog.csdn.net/weixin_34270865/article/details/85728749
文章出处来源摘自 微信--IT搬运工
地址:http://mp.weixin.qq.com/s?__biz=MzAxNTI4NDAzNA==&mid=205960169&idx=1&sn=765e64eef36e5d459d69bbc11dd0c11d&key=c468684b929d2be2dea6dd3defba65255295bcd81d2374e6ab6b07547319d2760635b2617d8ccd8dcb448b446f3bd89e&ascene=0&uin=MTg0NTcyMzIwMQ%3D%3D&devicetype=iMac+MacBookPro9%2C2+OSX+OSX+10.10.3+build(14D136)&version=11020012&pass_ticket=45gjHSy1JOgwVtPykwOGsVqBsD%2BucYl70CCFFCz0kTPASf%2BxYsdrvHw83SEwGjfr

 

  互联网上有很多关于网站架构的各种分享,有些主要是从运维和基础架构的角度去分析的(堆机器,做集群),太关注技术细节实现,普通的开发人员基本看不太懂。

本文上篇将主要介绍大型网站基础架构的扩展,下篇则重点从应用程序的角度去介绍网站架构的扩展和演变。

  草根时期,快速开发网站并上线。当然,通常只是先试水,用户规模也没有形成,经济能力和投入也非常有限。


有一定的业务量和用户规模了,想提升网站速度,于是,缓存出场了。

市场反响还不错,用户量每天在增长,数据库疯狂读写,逐渐发现一台服务器快撑不住了。于是,决定把DB和APP做分离。

单台数据库也感觉快撑不住了,一般都会尝试做“读写分离”。由于大部分互联网“读多写少”的特性所决定的。Salve的台数,取决于按业务评估的读写比例。

 

数据库层面是缓解了,但是应用程序层面也出现了瓶颈,由于访问量增大,加上早期程序员水平有限写的代码也很烂,人员流动性也大,很难去维护和优化。所以,很常用的办法还是“堆机器”。


 

加机器谁都会加,关键是加完之后得有效果,加完之后可能会引发一些问题。例如非常常见的:页面输出缓存和本地缓存的问题,Session保存的问题......

到这里,已经基本做到了DB层面和应用层面的横向扩展了,可以开始关注一些其它方面,例如:站内搜索的精准度,对DB的依赖,开始引入全文索引。

Java领域用的较多的是Lucene、Solr等,而php领域用的比较多的是sphinx/coreseek。

到目前为止,一个能够承载日均百万级访问量的中型网站架构基本介绍完了。当然,每一步扩展里面都会有很多技术实现的细节,后续有时间会写文章单独去剖析那些细节。

 

在做扩展满足了基本的性能需求后,我们会逐渐关注“可用性”(也就是我们通常听别人吹牛时说的SLA、几个9)。如何保证真正“高可用”,也是个难题。

 

几乎主流的大中型互联网公司,都会有用到类似的架构,只是节点数不同而已。

 

还有一招用的比较多的,那就是动静分离。可以需要开发人员配合(把静态资源放独立站点下),也可以不需要开发人员配合(利用7层反向代理来处理,根据后缀名等信息来判断资源类型)。有了单独的静态文件服务器之后,存储也是个问题,也需要扩展。多台服务器的文件怎么保持一致,买不起共享存储怎么办?分布式文件系统也派上用场了。

还有一项目前国内外用的非常普遍的技术CDN加速。目前该领域竞争激烈,也已经比较便宜了。国内南北互联网问题比较严重,使用CDN可以有效解决这个问题。

CDN的基本原理并不复杂,可以理解为智能DNS+Squid反向代理缓存 ,然后需要有很多机房节点提供访问。

 


截止目前为止,都没有怎么去改动应用程序的架构,或者说通俗点,都不怎么需要大面积的修改代码。

如果上面那些手段都用光了,还是支撑不住怎么办?不停的加机器也不是办法啊?

随着业务越来越复杂,网站的功能越来越多,虽然部署层面是采用的集群,但是应用程序架构层面还是“集中式”的,这样会导致很多耦合,不便于开发、维护,而且容易“一荣俱损”。所以,通常会把网站拆分出不同的子站点来单独宿主。

 


应用都拆了,由于单个数据库的连接,QPS,TPS,I/O处理能力都非常有限,DB层面也可以去做垂直分库操作

拆分应用和DB之后,其实还是会有很多问题。不同的站点,里面可能会有相同逻辑和功能的代码。当然,对于一些基础的功能我们可以封装DLL或者Jar包去到处提供引用,但是这种强依赖也很容易造成一些问题(版本问题、依赖关系等处理起来非常麻烦)。这样,传说中的SOA的价值就得到体现了。

 


应用、服务之间还是会出现一些依赖问题,这时候,高吞吐量的解耦利器出现了

 

 

最后,还介绍一个大型互联网公司都用的绝技--分库分表。个人经验,不是业务发站和各方面非常迫切,不要轻易走这一步。

因为分库分表谁都会干,关键是拆完之后怎么办。目前,市面上还没有完全开源免费的方案,能让你一劳永逸地解决数据库拆分问题。

 

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

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

相关文章

python如何爬取图片到指定文件夹_抓取某网站一分类下所有的图片(python小白登天日记)...

废话先不多说,先上代码:import requests from bs4 import BeautifulSoup import os,re import sys reload(sys) sys.setdefaultencoding(utf8) url http://www.bfpgf.com/yld user_agent Mozilla/4.0 (compatible; MSIE 5.5; Windows NT) headers { U…

网站三层架构学习之一 分层式结构

去年参加中软的面试,戴老师就说让好好研究一下petshop。可是今年来了以后,老师让做即墨公司的语音项目,一直进行的是windows编程,没有接触网站方面的。现在项目基本做完了,开始ASP.NET的学习了。 现在petshop的最新版本…

网站三层架构学习之二 整体架构

在上一篇中,我只是对微软的三层架构做了一下介绍,以后将主要结合两个项目:一个是ASP.NET网站模板中的个人网站初学者工具包和petshop 4.0. 因为昨天看的是petshop的,今天就主要说说petshop 4.0的整体架构。 根据三层架构&#xff…

18个优秀的在线图片编辑服务网站

说起编辑图片,可能大多数人都会马上想起强大的Photoshop。事实上,除了购买或下载盗版的PS之外,你还可以使用很多优秀在线图片编辑服务,这些网站大多数都是免费的。对于大部分的人来说,它们提供的功能已经足够强大了。在…

.NET开发人员必知的八个网站

当前全球有数百万的开发人员在使用微软的.NET技术。如果你是其中之一,或者想要成为其中之一的话,我下面将要列出的每一个站点都应该是你的最爱,都应该收藏到书签中去。 对于不熟悉.NET技术的朋友,需要说明一下,.NET提…

乐天酷网站用户体验

万众瞩目的电子商务平台--乐天酷上线了,怀着无比崇敬的心情,我浏览了网站的页面。 乐酷天-中国最大搜索引擎百度和日本最大购物网站乐天联手打造的超大型网络购物商城 看着这口号,两个最大产生出这么大的一个网站,整体色调以大红色…

手机网站重构经验分享(S60V3篇)

前言 做WEB重构的同学都应该知道,我们一般需要在一个操作系统 (Windows XP)和4种以上的浏览器(IE678,Firefox,Chrome,Opera等)上测试页面的兼容性。 相对而言,手机上的页面兼容性测试,相当痛苦!手机光操作系统都有S60V3,S60V5,MTK,Android,Windows Mobile等等,每个操作系统上除…

各位觉得哪个电子商务网站上的购物车做得好?

各位觉得哪个电子商务网站上的购物车做得好? 国内或者国外的都行,现在购物车设计感觉越来越同质化了。添加评论 分享 查看全部 2 个回答 段炼,交互设计 知乎用户 赞同 1. 购物车在首页上的界面和交互设计天猫 亚马逊京东淘宝 1号店 布 局…

我也要谈谈大型网站架构之系列(1)——纵观历史演变(上)

我们知道一个网站都是随着业务的发展,逐渐演变成几万服务器,几亿用户数的大型网站,经历了若干年,甚至上十年的 发展成为大型网站,然而真正亲身经历这个发展过程的人已经不多了,这种人也是拿着公司股票&…

网站性能优化-将Script放到HTML文件中尽量靠近尾部原理

在Yahoo的网站性能优化准则里,其中有一条是将Script放在页面底部, Put Scripts at the Bottom tag: javascript The problem caused by scripts is that they block parallel downloads. The HTTP/1.1 specification suggests that browsers download no…

Centos7下修改mysql5.6编码方式 解决网站中文显示问号

解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码。 具体操作: 1、进入MySQL控制台 mysql -u root -p 输入密码 查看当前mysql运行状态 mysql>status 后面四个编码是我在修改之后…

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么…

移动电子商务网站建设之概述

题外话 想做这次总结有一段时间了,但是总是这样那样的事情给耽搁。妈妈常说“不怕慢,就怕站”,我决定回来以后一定要把自己在手机当当网一年多以来的积累总结一下。 首先要感谢小白,放手让我处理占手机当当网60%的站点&#xff…

网站的活跃用户与流失用户见解分析

网站用户管理的目标是发掘新用户,保留老用户。但仅仅吸引新用户还不错,还需要保持新用户的活跃度,使其能持久地为网站创造价值;而一旦用户的活跃度下降,很可能用户就会渐渐地远离网站,进而流失。所以基于此…

使用cookie-free domains的方法优化网站性能

YSlow给如何提高网页效率和优化网站性能提供了22条建议,其中有一条是关于域名的:Use cookie-free domains。 使用 cookie-free domains 有什么好处呢?当用户浏览器发送一个静态文件,如图片image、CSS样式表文件时会同时发送同一个…

为何各大网站启用HTTPS?运营商做了“好事”

真的是好事,不加引号的好事。 你可能没有注意到,用百度搜索时,浏览器地址栏里的 http 已经成为永远的过去时,接棒的是更安全的 https。这家中国最大的搜索引擎,于2015年3月份做出了一个重要的决定——全站强制启用 htt…

外贸网站租用香港服务器有哪些好处

外贸网站租用香港服务器有哪些好处 互联网迅猛发展极大地加速经济全球化趋势,贸易、投资自由化己成为当代世界经济发展的潮流,国内外贸企业进军海外市场,由内销转出口已成为企业营销的潮流之举。对中小外贸企业来说,借助香港服务器…

专访 HackerOne COO 王宁:尊重规则是漏洞平台成功的秘诀,欢迎更多成人网站进驻 | 宅客...

本文作者史中,雷锋网主笔。关注网络安全,希望用简单地语言解释科技的一切。 HackerOne是美国著名的漏洞众测公司,它最早开创了一种模式:汇集众多的黑客,一起为企业找漏洞。 目前,全球致命的互联网公司 Yaho…

基于MyEclipse+JSP+Mysql+Tomcat开发得塞北村镇旅游网站设计

塞北村镇旅游网站设计主要用于实现旅游景点信息管理,基本功能包括:主界面模块设计,用户注册模块,旅游景点模块,酒店预订模块,后台管理模块等。本系统结构如下: (1)主界模…

基于MyEclipse+SSH+Mysql+Tomcat开发得爱宠物网站设计与实现

系统主要分为前台和后台两大模块 前台主要由用户体验使用: 用户登录 注册 查找商品 商品类别等功能导航; 后台主要由系统管理员操作使用 维护系统 管理员主要实现了 订单管理 商品管理 …