注:作为一个搞IT的技术人员,技术书籍是不可缺少的,《大型网站技术架构:核心原理与案例分析》这本书是app后台开发群的群主推荐的书籍,书中提到的技术架构方法,不仅仅适用于网站,其他方面的开发都可以借鉴其中的思想,是不可多得的一本好书。由于本书是找一位同事借的,周末就需要读完还给他,再次验证一个道理,书还是借的读起来有效率。
阅读时间:2015年1月15日--2015年1月18日
本书主要讲述的是大型网站的技术架构,着重从五个方面阐述需要关心的核心架构元素:性能、可用性、伸缩性、扩展性和安全性。
一、性能
1、Web前端性能优化
2、应用服务器性能优化--分布式缓存、异步操作、使用集群、代码优化
3、存储性能优化
二、可用性
1、高可用的应用--负载均衡进行失效转移
2、高可用数据--数据备份、失效转移
3、运行监控--监控数据采集、监控管理
三、伸缩性
1、网站架构的伸缩性设计--不同功能进行物理分离实现伸缩、单一功能通过集群规模实现伸缩
2、应用服务器集群伸缩性设计--HTTP重定向负载均衡、DNS域名解析负载均衡、反向代理负载均衡、数据链路层负载均衡、负载均衡算法
3、数据存储服务器集群的伸缩性设计--关系数据库集群的伸缩性设计、NoSQL数据库的伸缩性设计
四、扩展性
1、利用分布式消息队列降低系统耦合性--事件驱动架构、分布式消息队列
2、可扩展的数据结构
五、安全性
此外,书中的最后部分列举了淘宝网、维基百科、秒杀网站的案例分析,将核心架构元素的各个部分带入实际项目中进行讲解,作者表达了一个重要的观点:业务的让出半步,技术前进一步。这个观点我非常赞同,考察任意一个国内外顶尖的大型网站发展历程,无一不是从小做起,真正等到业务完善,用户访问大量增加时,技术需要不断的创新提高,以应对海量的用户操作。但是,很明显有些产品只靠技术的增加是难以跟上用户的快速发展节奏的,比如12306,在初期即要面对每秒钟成百上千万次的并发,技术难度非常大,12306团队短期内很难解决这个级别的技术难题,如果修改一下业务方面的需求,如:以前全国车票都在一个时间点放出,现在用分时段放票的方式,早上8点,只开放全国10个城市作为首发站的车票,此时的访问量可能只有原来那种方式的百分之一,大大降低技术难度。因此,业务上的某些改善和妥协,带来的是用户体验的极大提高,对于此时的技术难度而言,也是可以在一个完全可控的范围。
由于作者的架构师身份,在文章末尾有完整的一篇内容来描述架构师这个角色,虽然目前我离这个角色还非常遥远,但是书中的很多观点还是可以学习的,摘抄部分我认为精彩的内容,以供学习。我个人认为,这部分阐述不仅仅是对架构师有用,对于创业者甚至普通工作的各行各业人员都可以通用。
1、领导的真谛:寻找一个值得共同奋斗的目标,营造一个让大家能最大限度发挥自我价值的工作氛围。一群优秀的人做一件他们热爱的事情,一定能取得成功。
2、是事情成就人,而不是人成就了事。指望优秀的人来帮自己成事,不如做成一件事情让自己和参与的人都变的优秀。发掘一个人的优秀比发掘一个优秀的人更有意义。
3、不要企图在项目中证明自己是正确的,你是来做软件的,不是来当老大的。所以不要企图去证明自己有多了不起,永远别干这种浪费时间、伤害感情的事。
一些职场建议:
1、把“我的问题”描述成“我们的问题”;
2、给上司提封闭式的问题,给下属提开放式的问题;
3、指出问题而不是批评人
4、用赞同的方式提出问题
5、在解决我的问题之前,先解决你的问题
6、适当的逃避问题