应用服务器就是处理网站业务的服务器,网站的业务代码都部署在这里,是网站开发最复杂,变化最多的地方,优化手段主要有缓存、集群、异步等。
一、分布式缓存
回顾网站架构演化历程,当网站遇到性能瓶颈时,第一个想到的解决方案就是使用缓存。在整个网站应用中,缓存几乎无所不在,既存在于浏览器,也存在于应用服务器和数据库服务器;既可以对数据缓存,也可以对文件缓存,还可以对页面片段缓存。合理使用缓存,对网站性能优化意义重大。
网站性能优化第一定律:优先考虑使用缓存优化性能。
1.1 缓存的基本原理
缓存指将数据存储在相对较高访问速度的存储介质中,以供系统处理。一方面缓存访问速度快,可以减少数据访问的时间,另一方面如果缓存的数据是经过计算处理得到的那么被缓存的数据无需重复计算即可直接使用,因此缓存还起到减少计算时间的作用。
缓存的本质是一个内存Hash表,网站应用中,数据缓存以一对Key、ale的形式存储在内存Hash表中。Hash表数据读写的时间复杂度为o(1),图Hash表存储例子为一对KV在Hash表中的存储。
计算KV对中Key的 Hash Code对应的Hash表索引,可快速访问Hash表中的数据。许多语言支持获得任意对象的 Hash Code,可以把 Hash Code理解为对象的唯一标示符,Java语言中 Hashcode方法包含在根对象 Object中,其返回值是一个Int。然后通过 Hashcode计算Hash表的索引下标,最简单的是余数法,使用Hash表数组长度对 Hashcode求余,余数即为Hash表索引,使用该索引可直接访问得到Hash表中存储的KV对。Hash表是软件开发中常用到的一种数据结构,其设计思想在很多场景下都可以应用。
缓存主要用来存放那些读写比很高、很少变化的数据,如商品的类目信息,热门词的搜索列表信息,热门商品信息等。应用程序读取数据时,先到缓存中读取,如果读取不到或数据已失效,再访问数据库,并将数据写入缓存,如图使用缓存存取数据示例所示。
参考资料:大型网站技术架构核心原理与案例分析第四章
完结!