读《大型网站技术架构:核心原理与案例分析》有感
对于大型网站的架构特别是网站在从小变大不断成长过程中遇到的各种问题,尤其是对于高并发访问、海量数据的处理(存储、读、写)、高可靠等问题是每一个程序员所关心的话题。对于这些问题,每一个大型的互联网公司都会有相应的解决方案,以实现网站的高性能、高可用、易伸缩和可扩展。而所有的这些解决方案中被提炼处理的精华或者是被多个大型互联网公司使用的就可以说是大型网站的架构模式。
《大型网站技术架构》这本书从网站架构的各个方面来阐述了一个大型网站应该从何处着手去做,如何去做才能让网站更给力。这本书通过梳理大型网站的技术发展历程,来剖析大型网站的技术架构模式,深入讲述大型互联网设计的原理,最最重要的是作者列举了一组典型互联网网站的技术架构设计案例,为我们呈现出了一幅包括技术选型、架构设计、性能优化、web安全、系统发布、运维监控等在内的大型网站开发的全景视图。有些范例还是比较有意思的,简单列举几点,大家可以关注一下:
1. wiki的实现中就是业务退一小步,技术进一大步。这个他们能够那么省钱的原因啊。
2. 秒杀从根本上来讲并不是很难,首先是页面的静态化,开始秒杀的按钮通过js来实现,js不缓存,js尽量小。开始秒杀的时候使用可以秒杀的js。秒杀很少能达数据层,因为就那么几个能成功。主要的压力在应用服务器,但是用一个记数服务器,收到请求更新这个数字,大于数字的直接返回秒杀失败。所以大部分都会进入失败的逻辑,整个也很简单。只要业务服务器能抗住这些访问压力就基本ok了,如果业务服务器不够,可以直接在负载均衡那边随机失败一部分。
3. 负载均衡的实现:
<1> dns实现
<2> 应用层实现,使用反向代理
<3> 网络层实现 ip负载均衡,通过网关来修改目标ip
<4> 数据链路层 改mac地址,如lvs。 负载均衡的策略主要有 轮询 随机 最少连接 hash
4. 一致性hash的时候,用多个虚拟节点对应一台实际的服务器,如150:1 这样会大大减少负载波动。
从试读章节的目录和书的页数来看,作者给出了大型网站应该关注的各个点,但是点的粒度比较大,对于每个点的介绍我们还是需要在实际工作中去体会。作者只是给出了每个点的精华所在。尤其是一些观点我个人非常赞同:
1. 先成就他人,再成就自己
2. 刚开始加入的时候不要急于证明自己,要先融入。
3. 最好的奖励就是目标的达成,最大的惩罚就是目标没实现
4. 技术是要解决问题,但是我们要关心的是解决问题的人。
5. 学会妥协
6. 越激烈的争辩代表越关心这个问题
这本书还是值得一读的!