《大型网站系统与Java中间件实践》第2章读后感
本章作者介绍了大型网及其架构演进过程:
本章开篇介绍了,什么大型网站,从而引出大型网站的三个基本形态,海量数据、高并发访问和分布式架构。
之后,作者描述了一个使用java构建一个单机交易网站需要使用的技术和方式,并以一个交易的流程说明了其具备的业务规则。
进而以此为雏形,引导读者如何从开篇提到的三个形态对该网站进行一步步的扩展最终成为一个大型网站,能够满足业务需要。
首先,作者介绍了当该网站访问量增高,单机预警首先应考虑将数据库和应用分割的方式,将应用和数据库分别放置在不同的物理机。进而介绍了随着访问增高应用已经无法满足高并发的时候,需要将应用实现集群的问题。并着重介绍了由此而导致的一个关键问题:Session,并介绍了如何应对集群导致的session问题的四种办法,并对比了他们实现的区别。
接下来,作者以数据库数据增多、压力变大,引导读者如何进行数据库的分布式扩展。首先,介绍了数据库读写分离主从方案,即一个库写多个库读的方式,并介绍了使用MySql所提供的实现这种方式的技术。同时引出了实际搜索引擎其实也是一个读库的方案,这点这如作者所说,大大超出了外的意料,但仔细想来,作者所叙千真万确。同时,作者介绍了为了提高数据的读取效率如何使用缓存和分布式存储系统的方案,并进一步介绍了如何对数据库进行了垂直拆分(业务规则划分)、水平拆分的。
最后,作者讲解了当应用在使用集群后随访问量上涨,所面临的新挑战,并介绍了如何进行垂直划分和引入服务化,以及引入服务化所带来的好处和整个架构的变化,并介绍使用消息中间件使得应用解耦。
总体而言,本章作者以一个java构建的单机网站为例讲解了如何将其扩展为一个大型网站的方方面面的问题和技术方案,并以图为例,形象深刻,虽然较短,但是内容的确很多,需要反复阅读体会。文中的内容读者也需平时多多少少有些了解,但是通过作者的整体介绍,有总揽全局,醍醐灌顶,如登山顶的感觉。深切体会到作者的确是有着相当深厚的技术积淀并且是花了很大的功夫完成的本书。作为大型网站、java的开发者和面临这些问题的开发人员而言,本书的确是很有价值,值得一读。