Vastiny

Jan 27, 2023

01012大型网站技术架构.txt

title:大型网站技术架构
date:2014-03-21 12:12
status:private

花了三天中午的时间,快速的看完了这本书,这本书以我的经验,可能有些小部分看不懂,其它的基本上都有所了解,比如最后讲到mapreduce的架构,Linux处理负载均衡的几种方法:
1 dns实现。
2 应用层实现,使用反向代理。
3 网络层实现 ip负载均衡,通过网关来修改目标ip。
4 数据链路层 改mac地址,如lvs。
负载均衡的策略主要有:
轮询 随机 最少连接 hash。

这本书用了很多的图来解释比如淘宝这个大型网站架构的从最开始LNMP架构到一个高可用高负载的服务器历程。这让我想起了吴军在《浪潮之巅》中讲的一个小故事,苹果创始人沃兹在花了几天不眠夜之后写好的程序放在了软盘里面了,睡前他想把程序备份一下,因为明天要拿这个程序参展,结果,他把空白的软盘拷贝到有内容的软盘,得到两张空白的软盘,他并没有先哭,然后晕倒,而是花了一个晚上把代码重新写了一遍,第二天顺利的进行了展示。而另外一个中国的程序员就这样,有天晚上,神智恍惚一下,结果删除了服务器游戏数据库所有玩家的所有资料,然后公司去查对服务器备份的数据库,结果数据商说两个月之前就停止了,可以想见,这个公司就此倒闭。
而这本书,正是讲了如何应对各种大型事故,包括入侵,用户量过大,可用性达99.99%的服务器,并且对可伸缩架构也讲得比较完善。

但是讲的技术内容就比较少,最后hash减少服务器压力的才深入。
一致性Hash算法
1、一致性Hash环数据结构实现Key到服务器的映射
-长度为0-2^32的整数环,将服务器节点置于Hash环上,然后Key的Hash值顺时针查找最近的服务器节点。(3台扩容到4台,只有25%不能命中)
-一致性Hash环通常用二叉查找树实现,查找过程实质是在二叉查找树上查找不小于查找数的最小值,且树的最右边叶子节点和最左边叶子节点相连,构成环
-负载不均衡问题:服务器的Hash值在Hash环上固定为某个位置,任2个服务器的位置间距不确定
2、通过增加虚拟层来解决一致性Hash环负载不均衡问题
-将每台物理缓存服务器虚拟为一组虚拟缓存服务器,将虚拟缓存服务器的Hash值放在Hash环上,Key在环上先找到虚拟服务器节点再得到物理服务器信息
-最终结果是新加入一台缓存服务器,将会较为均匀地影响(分摊)到原集群中已存在的所有服务器
-一台物理缓存服务器虚拟为几个虚拟缓存服务器节点合适:经验值为150

当然关于NoSql方面的知识也进一步了解了。
NoSql是不是用SQL语言,目的是强大应用的高可用和高扩展功能。
为了海量数据而生。
同时是对关系型数据一种补充。
目前比较热门的有HBase,mongodb,redis等。

一个高可用网站的软件生产工艺,要关注以下几个方面:发布策略、自动化测试、预发布验证、代码的管理、自动化发布、灰度发布等。另外运维也有:实时监控、数据的冗余灾备,基本保证了网站的高可用。

另外说一点,在决定买这本书之前,看豆瓣评论说这本书只用看看目录,查查资料就好了,当时也觉得这本书没什么内容,结果买下来,看完,这本书还是值他卖的这个价格的。

OLDER > < NEWER