大数据高并发学习笔记(3)

对于一个系统中,数据库层面做了优化之后,那么我们就算是做了最后的努力了。如果系统仍然撑不住,那么,就应该考虑缓存了。(一个系统性能提升的最快路径,就是使用缓存。这个可以处在数据库优化之前)

一个系统中,可以用作缓存的节点很多。

 系统的缓存节点可以分为 客户端缓存,CDN缓存,反省代理缓存,服务端本地缓存(内存缓存,IO缓存),分布式缓存(Redis,MemberCache)。

这些节点都是可用来作为缓存节点的,目的是为了,减少DB查询,减少网络跳转。

客户端缓存在我们的Respose头部增加标签说明,我们应该都是用的很多了,就不多做介绍了。

CDN缓存:CDN缓存的读取过程

                   用户提交域名------浏览器对域名进行解析------->

                   CND域名服务器返回指定域名的CNAME记录------>

                   对CNAME记录进行再解释-------->得到CDN缓存服务器的地址-------->

                   根据IP地址发出访问请求----->缓存服务器通过内部DNS得到真实主机地址------>

                   向真实主机发出请求,并把请求返回客户端------->客户端浏览器得到请求数据,并且返回。

通过以上说明,就知道了    DNS在解析域名以后,会根据域名的CName再解析到对应的CDN缓存服务器,在CDN缓存服务器上面找对应数据,如果没有,则会直接请求服务器。

反向代理:

反向代理就是在我们的服务端的前面增加一层保护措施,所有的请求都将经过这里,那么这里就可以做很多东西,请求过滤、缓存,动静分离(部分)。使用Nginx作为反向代理服务器是一个很好的选择。

反向代理服务器在我们的开发过程中影响不大,偏向于运维层面。

本地缓存/分布式缓存:

这个缓存也是我们经常使用的,包括了Redis等流行的NoSql数据库充当缓存,服务器内存,IO文件等做缓存

分布式文件系统

一般来说,分布式文件系统都是采用软件来对集群中的多个网络硬盘进行管理,就像使用一台机器的硬盘一样。

流行的分布式系统:NFS,TFS,GFS,AFS

    专项突破:

     1. 全文检索 

          在做搜索功能时,可能会出现非规范性搜索。     比如:我爱你----->搜成了:我爱您。

          对于搜索功能来讲,关系型数据而是能够做到的。但是它是不能够太过人性化。

      全文检索框架:Lucene,Solr,ES(使用较多)

       全文检索技术,分词建索引,拆3个词存储起来,搜索时也分词,4个词进行搜索,能匹配不要求完全匹配,就能达到最大程度上搜索出相关结果。 

    2.高并发情况下,库存不够问题(秒杀超卖问题)

         1.基于数据库的解决方式------悲观锁/排他锁-----无法满足高并发

         2.乐观锁    ------基于Version更新的方式,保证不会出现脏数据(不会超卖),多个并发只有一个能够成功------但是压力还是在数据库,高并发下不太可行。

         3.采用能够持久化,高性能的的 队列 来进行削峰/限流等。进而降低数据库压力,保证数据的正确性。

         

猜你喜欢

转载自www.cnblogs.com/zhangrgLearning/p/13366775.html
今日推荐