大型网站系统与JAVA中间件试读感悟
试读了第二章,让人感触颇深的是大型网站的建立不是一蹴而就的,而是一步步的随着业务的发展而成长起来的。期间会遇到各种各样的问题,包括技术和非技术的,只有解决了这些问题,网站的才有进一步发展的保证。对于这些问题中的典型难题,比如session问题,数据库问题等,作者在本章中使用通俗易懂的语言结合自己的实践经验阐述了该问题各种解决方案的的适用场景和对应的优缺点。
其中比较典型当属会话保持问题,这是一个系统随着业务发展从单机扩展到集群必然会面对的问题。随着系统的并发量的增长,单机的处理性能下降,响应时间延长,最后到达无法响应的程度。为了解决这个问题,目前最好的方式是集群,利用负载均衡技术把访问量分摊到多台机器上,起到减轻服务器压力,提高响应时间的效果。此时用户的多次访问可能落在不同的服务器上,各个服务器的会话数据的不同步就会引起一些问题,比如重复要求用户登录的问题。这个时候采用文中提到的解决方案就可以很好的解决问题,比如session ticky,session replication等。记得前不久就遇到这样的一个问题,客户端调用服务器的API接口时需要提交token进行身份验证,令人意料不到的情况是经常发生重复验证,严重影响系统性能。后来由一个同事解决了,他告诉我是session问题,当时也是一知半解,也没有细究。直到现在仔细的读了这个章节,才恍然大悟,问题原来是这样产生的。文中的提到的解决会话问题的方式都有很好的针对性,在不同的场景下可以很好的指导我们的开发实践。
数据库性能也是大型系统发展过程中不可忽视的问题。单台数据库的并发连接数是一定的,超过这个数值就会面临崩溃的风险。所以在业务发展到一定阶段后,和应用系统一样,对数据库建立集群是必要的方式。其中典型的代表就如文中提到的主从分离,主库负责写,多个从库负责读,可以有效分担负荷,提高数据库处理性能。采用这种结构,面临的一个主要问题是数据复制延迟,导致应用系统不能及时获取更新的数据。对于这个问题,文中只是做了简略的介绍,期待后续章节可以结合作者的实际经验做一些详尽的介绍和提供一些合理的优化建议。
和数据库作为数据的源头一样,搜索引擎,缓存和分布式文件系统可以作为数据库的补充,为应用系统提供另一种数据获取的源头。两者的共同点是都涉及到数据复制的问题,在不同的场合具有各自的适用性,合理使用可以起到很好的效果。文中通过比较各种技术特点启示我们需要打破思维定式,在不同的发展阶段采用合适的技术,业务才能更好的发展。
总之,这是一本理论和实际结合的好书,语言通俗易懂,能够为有志于开发大型系统的程序员提供切中肯絮的指导。