打开网易新闻 查看更多图片

一、客户端缓存优化

1、添加CDN缓存

CDN 缓存也叫做网络访问的“第一跳”,用户请求先到达的是互联网网络服务商的机房。在机房里面部署 CDN 服务器,提供缓存服务。缓存了一些静态资源。如果存在用户请求的内容,直接通过CDN进行返回;没有的话继续向下请求

2、正向代理缓存

正向代理缓存保存在客户端,代理客户端访问互联网,比如访问谷歌,直接访问不到,我们就可以使用一个代理服务器,将请求转发给代理服务器,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们。

打开网易新闻 查看更多图片

既然正向代理服务器可以取得谷歌的数据,他就可以缓存这些数据同时记录下客户端身份,当下次请求的时候通过客户端身份验证,就可以直接找到这些缓存的数据了。

3、反向代理缓存

反向代理是在服务器这一端的,用户通过互联网连接到数据中心的时候,连接的通常是一个反向代理服务器,反向代理服务器根据用户的请求,在本地的反向代理缓存中查找是否有用户请求的数据,如果有就直接返回这个数据,如果没有再把这个请求向下继续转发。

二、服务端优化

1、应用程序分布式部署

分布式部署的意思是同一个应用程序分布在不同的服务器上,一块对外提供服务。他们之间的等位相等。

(1)负载均衡算法访问不同应用程序,避免单一应用程序的压力

客户端通过反向代理执行负载均衡算法去访问不同的应用程序

①随机均衡算法 ②多权重负载 ③session 粘连

(2)不同的应用程序其实是同一个,如何解决session问题

注意,不同功能的应用程序也要解决session功能,

第一种:粘性session

原理:粘性Session是指将用户锁定到某一个服务器上,比如,用户第一次请求时,负载均衡器将用户的请求转发到了A服务器上,第二次访问时,反向代理根据sessionID通过hash算法,转发到A服务器上。

缺点:缺乏容错性,如果当前访问的服务器发生故障,用户被转移到第二个服务器上时,他的session信息都将失效。

第二种:session同步

原理:任何一个服务器上的session发生改变(增删改),会广播给所有其它节点,不管其他服务器需不需要session,以此来保证Session同步。

打开网易新闻 查看更多图片

缺点:会对网络负荷造成一定压力,如果session量大的话可能会造成网络堵塞,拖慢服务器性能。

第三种:持久化到缓存数据库

原理:拿出一个缓存数据库,存储session信息,并设置相应的失效时间。每次访问的时候不管是负载到了哪一个服务器都会先从缓存数据库里面查询session

2、应用程序拆分成微服务