《大型网站系统与Java中间件实践》试读后感
当下载了《大型网站系统与Java中间件实践》试读章节,看到其中唯一的一章第2章的标题,并简略地扫了一遍小节标题之后,我立马就想到——这绝对又是某位淘宝牛人写的书。
为什么这么肯定呢?因为前年我曾参加了公司组织的一场关于架构的系列讲座,请的讲师正是出身淘宝,以前做过架构后来转做讲师的。而在那场系列讲座中,一条重要的主线正是以淘宝网站发展历程为蓝本的“大型网站架构演变和知识体系”。
可以说,那是我有史以来听过的最过瘾的一场讲座,收益也颇大,从此也对阿里系架构和技术更加崇拜和着迷。所以当看到本书的试读章节时,有一种说不出的亲切感。然后在网上搜索了作者,果然是淘宝的大牛,原本就是大名鼎鼎的华黎。
好了,下面进入正题,谈谈对这一章试读后的感受。
古人说:冰冻三尺非一日之寒。事物的发展,往往都是一个演进的过程,而不是一蹴而就。大型网站的架构也是同等道理,都是随着网站规模的扩大、随着需求的提高,而不变演进发展的。一个网站,比如淘宝,其本身的规模,也同样是一个演进的过程,淘宝不是刚出来就成为大型网站的,也没有一个网站会是这样。随着淘宝规模的不断扩大,用户越来越多,日访问量越来越大,淘宝的架构也随之不断演进,能够承载更多的高并发的访问和处理海量的大数据。
那么,大型网站的架构是如何演进的呢?
创始之初——单个系统、单机部署
网站创始初期,很可能连代码都是买的,比如淘宝,从《淘宝技术这十年》上可以看到,淘宝网站最初是从国外买的一套代码,马云召集的一批人潜伏的一个别墅里加班加点修改后,淘宝就这样产生了。而那当然是一个现在看来很简单的一个小系统。这个时候还没有用户,一时半会也不会凭空冒出多少用户出来,所以那时候一台小服务器部署就可以了。
第一步——数据库与应用分离
当淘宝在强敌环伺之下,凭借一些购物网站模式创新,开始闯出一片天地并小有名气之后,用户访问量开始增大,单机环境开始难以承受持续增大的访问量了。
这个时候就要考虑优化方案了,这是第一次演进。这时候自然而然会想到,应用和数据库部署到同一台机器上,这台机器既要运行应用,又要运行数据库,CPU、内存要两部分抢着用,IO也是严重问题,那么将它们分开到两台机器不就好多了吗。所以第一步便是数据库与应用分离,由单机部署变成两台服务器:Web服务器+数据库服务器。如此,第一步演进就完成了。
第二步——Web服务器集群
当访问量进一步增大,由于用户访问和计算的工作全部集中在一台Web服务器进行,所以很快,Web服务器必将不堪重负。
这个时候,就要考虑增加Web服务器了,这便是我们说的集群。两台或多台Web服务器,部署同一个应用,它们之间没有交互,只是使用同一个数据库服务器。它们都可以同样地处理用户访问,但是每个用户该访问哪个Web服务器呢?这是使用集群以后必然要解决的问题。
一般有两种方案:
1、DNS分发
DNS分发多个IP地址,网站用户选择一个IP进行访问。这是最简单的方式,但是有一个问题,访问不均衡,有可能一台服务器用户访问太多已经爆满了,但是另一台服务器可能只承受着极少的访问基本处于闲置。所以一般会考虑下一个方案——负载均衡。
2、负载均衡
采用负载均衡的技术,网站用户永远只访问一个IP地址,所有用户访问会到达一个负载均衡器,然后具体由那台服务器处理,则由负载均衡器去分配,它可以平均分配,也可以根据服务器实际负载情况进行分配,这样各台服务器都可以充分发挥。
不过关于负载均衡的方案,试读章节中并未提及,主要有硬件负载均衡(花钱买设备,虽然很贵,但是很值得)、软件负载均衡(比如淘宝的LVS)等。
采用负载均衡之后会不可避免带来的一个问题是Session的问题。比如用户之前访问的是服务器A,Session保存在这个服务器A上面,再访问另一个页面的时候负载均衡器把请求分配到服务器B了,但是服务器B上并没有用户的Session,这样就导致问题了。
书中对此给给出了几种方案:
1、Session Sticky
负载均衡器能够根据每次请求的会话标识来进行请求转发,保证同一个会话的请求都在同一个Web服务器上处理。
这种方案的缺点是,负载均衡器开销大,可能成为瓶颈,另外如果一台Web服务器宕机,Session就丢失了,用户突然无缘无故就需要重新登录了。
2、Session Replication
也即Session复制,将Session同步复制每一个Web服务器上,保证所有Web服务器中都保存有所有的Session。
这种方案不适合集群机器很多的情况,集群机器越多,Session复制的开销就越大,内存和网络带宽都会有很大的消耗。
3、Session数据集中存储
Session集中存储在一个地方,所有Web服务器对Session进行访问都通过这个地方进行,而且存储Session数据的具体方式,可以使用数据库,也可以使用其他分布式存储系统。
相对于前一种方案,当集群机器数量比较大时优势就很明显了。
4、Cookie Based
作者还介绍了第四种方案,将Session数据存储在客户端的cookie中,但是这存在非常严重的问题:cookie长度限制、安全性等等,而且还有一点作者没有提到的,有些客户端可能会禁用cookie的,所以这种方案一般好像不会采用。
前面两步的演进,都是通过增加服务器,主要是部署的时候做的事情(除了解决Session问题需要程序实现),接着后面的演进就不是这么简单了,往往就需要修改程序了。
相关推荐
从古至今,无论是在政治舞台还是在民间讲坛,那些留下浓墨重彩一笔的演说家们,他们的故事几乎都是“冰冻三尺非一日之寒”道理的生动诠释。 以古希腊的德莫斯梯尼为例,他并非天生的演说家。他通过含石子练习、模拟...
git基本操作/*我们使用 git clone 从现有 Git 仓库中拷贝项目*/git clone "Git仓库" "本地目录" git clone git@github.com:hao-1172624289/thirteen.git//SSH协议(快速、安全)git clone git://github....
同理的还有"冰冻三尺非一日之寒",强调积累的重要性。 2. "早开的红梅——一枝独秀",意味着在众多事物中脱颖而出,表现出超群的能力或成就。可以用它来形容某人在某一领域特别出色。 3. "砌墙的石头——后来居上...
如“种瓜得瓜,种豆得豆”“冰冻三尺,非一日之寒”等谚语,既反映了自然规律,也表达了对人生态度的启迪。 歇后语,则是汉语中独树一帜的语言形式。它们由“引子”和“后文”组成,有时人们只说引子部分,听者则...
如果将开发程序的过程比喻为作战,我们码农便是指挥作战的将军,而我们所写的...冰冻三尺非一日之寒,需要我们平时不断的主动去学习积累。 通过几天的学习,我们希望让大家能理解其概念,掌握常用的数据结构和算法。
vb 入门初级教程 初学的不能急,冰冻三尺,非一日之寒
在中国广袤的乡村,有一种简单而又充满智慧的生活方式——搭石。搭石,是汛期过后村民们为了方便过河而做的准备。在人教四年级上册语文课中,"搭石"不仅是一篇课文的主题,也是学生们学习语言表达和传统美德的窗口。...
英语是一门依赖积累的学科,冰冻三尺非一日之寒。 2. 单词记忆策略: - 提高记忆频率:避免长时间间隔,多次重复记忆。 - 编顺口溜:用趣味方式帮助记忆,如goodmorning记为“狗摸你”。 - 结合阅读:边记单词边...
“冰冻三尺非一日之寒”则用来形容问题的形成是由长时间的累积导致的,让学生理解成语的含义和恰当使用情境。 4. 文学常识的考核,涉及曹操的《观沧海》、王安石的《读〈孟尝君传〉》、老舍的《骆驼祥子》以及都德的...
1. **积累习惯**:语文学习需要长时间的积累,如同冰冻三尺非一日之寒,聚沙成塔靠的是持之以恒。积累历史知识被提到,积累20XX年的历史卡片可以成为史学权威。具体而言,要培养科学的记忆习惯,比如联想法,将学习...
- 张伟的评语中,班主任强调了“冰冻三尺非一日之寒”,指出学习的进步需要时间和持续的努力。他提醒张伟认识到自己的不足,激发他积极改变,追求更高的学习效率。 6. **网络资源利用**: - 文档末尾提到的“范文...
19. **冰冻三尺,非一日之寒**:说明任何问题的形成都需要时间。 20. **兵来将挡,水来土掩**:面对不同情况,采取相应对策。 此外,还有许多其他成语,如“病急乱投医”、“不打不相识”等,都富含人生哲理,教导...
3. 成语与俗语的应用:题目中出现了"种瓜得瓜种豆得豆"、"冰冻三尺非一日之寒"、"尺有所短,寸有所长"、"青出于蓝而胜于蓝"等成语和俗语,这些都是中国传统文化中的智慧结晶,通过辨析这些成语的正确使用,可以训练...
如同古人所言,“冰冻三尺非一日之寒”,提升教学能力需要持续的努力和时间的积累。而“梅花香自苦寒来”,正是这种坚持和磨砺,使我在教育之路上不断成长。在这个暑假,我与众多同行共同进步,让我们的教学技能得到...
"冰冻三尺非一日之寒"强调了德育工作的艰巨性和持久性,教育工作者需要对当前社会风气的变化有深刻认识,并积极承担责任。 【建构合理的心智模式】 要重视德育在教育体系中的核心地位,认识到理想与现实之间的差距...
软件企业核心能力的建设 能力有一个培养的过程 认识自己的能力现状 确定相匹配的业务方向 培养未来所需的能力 持续的能力建设 一个新的领域的能力的积累至少需要三...冰冻三尺,非一日之寒 能力建设永远优先于生产任务
"冰冻三尺非一日之寒",安全意识的培养同样需要日积月累。对于技术行业,这意味着定期进行安全培训,熟悉并严格执行操作规程,及时更新安全策略,以应对日益复杂的网络安全威胁。 "不伤害自己、不伤害别人、不被...
例如,"冰冻三尺,非一日之寒",表明任何大的变化都是从小的积累开始的。同样,"不积跬步,无以至千里",强调了积累的重要性。在田忌赛马的例子中,通过调整马的出场顺序,实现了从败局到胜局的质变,这也是量变策略...
- **持续练习的意义**:“冰冻三尺非一日之寒”,这句话强调了持之以恒的重要性。无论是书法还是其他技能的学习,都需要长时间的坚持和练习才能达到较高水平。这对于培养职场所需的专业技能同样适用。 - **平衡工作...