当前位置: 首页 > news >正文

女生学动漫制作技术好就业吗百度整站优化

女生学动漫制作技术好就业吗,百度整站优化,mac怎么page转wordpress,如何评价一个网站做的是否好文章目录 背景一、怎么发现热key1.1 方法一:凭借业务经验,进行预估哪些是热key1.2 方法二:在客户端进行收集1.3 方法三:在Proxy层做收集1.4 方法四:用redis自带命令1.5 方法五:自己抓包评估 二、如何解决2.1. 利用二级缓存2.2. 备份热key2.3 永不过期2.4 分布式锁 三…

文章目录

  • 背景
  • 一、怎么发现热key
    • 1.1 方法一:凭借业务经验,进行预估哪些是热key
    • 1.2 方法二:在客户端进行收集
    • 1.3 方法三:在Proxy层做收集
    • 1.4 方法四:用redis自带命令
    • 1.5 方法五:自己抓包评估
  • 二、如何解决
    • 2.1. 利用二级缓存
    • 2.2. 备份热key
    • 2.3 永不过期
    • 2.4 分布式锁
  • 三、redis cluster集群部署方案
      • 3.1 读写分离
      • 3.2 本地缓存

背景

“这个商品不错,大家来看啊“,每个平台都有会有些大卖的商品,简称为爆品。这些商品会有个特点,就是访问量特别大。我们专业上面可以称之为热点数据,在处理这些热点商品时,系统需要做一些特殊的处理。

针对热点商品这些类型的数据,要考虑到访问量比较大,大家首先想到的是缓存,上redis缓存,这点肯定没有错。系统框架如下:
在这里插入图片描述

上图中,先从缓存中获取,没有再到DB获取,并保存到缓存中。但有个问题会产生,热点数据的访问会比较大,如果缓存一旦失效,所有请求同一时刻,会打到DB上面,DB肯定会崩溃。那怎么办呢?

上面提到,所谓热key问题就是,突然有几十万的请求去访问redis上的某个特定key。那么,这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机。

那接下来这个key的请求,就会直接怼到你的数据库上,导致你的服务不可用。

一、怎么发现热key

1.1 方法一:凭借业务经验,进行预估哪些是热key

其实这个方法还是挺有可行性的。比如某商品在做秒杀,那这个商品的key就可以判断出是热key。缺点很明显,并非所有业务都能预估出哪些key是热key。

1.2 方法二:在客户端进行收集

这个方式就是在操作redis之前,加入一行代码进行数据统计。那么这个数据统计的方式有很多种,也可以是给外部的通讯系统发送一个通知信息。缺点就是对客户端代码造成入侵。

1.3 方法三:在Proxy层做收集

有些集群架构是下面这样的,Proxy可以是Twemproxy,是统一的入口。可以在Proxy层做收集上报,但是缺点很明显,并非所有的redis集群架构都有proxy。

在这里插入图片描述

1.4 方法四:用redis自带命令

  1. monitor命令,该命令可以实时抓取出redis服务器接收到的命令,然后写代码统计出热key是啥。当然,也有现成的分析工具可以给你使用,比如redis-faina。但是该命令在高并发的条件下,有内存增暴增的隐患,还会降低redis的性能。

  2. hotkeys参数,redis 4.0.3提供了redis-cli的热点key发现功能,执行redis-cli时加上–hotkeys选项即可。但是该参数在执行的时候,如果key比较多,执行起来比较慢。

1.5 方法五:自己抓包评估

Redis客户端使用TCP协议与服务端进行交互,通信协议采用的是RESP。自己写程序监听端口,按照RESP协议规则解析数据,进行分析。缺点就是开发成本高,维护困难,有丢包可能性。

以上五种方案,各有优缺点。根据自己业务场景进行抉择即可。那么发现热key后,如何解决呢?

二、如何解决

目前业内的方案有两种

2.1. 利用二级缓存

比如利用ehcache,或者一个HashMap都可以。在你发现热key以后,把热key加载到系统的JVM中。

针对这种热key请求,会直接从jvm中取,而不会走到redis层。

假设此时有十万个针对同一个key的请求过来,如果没有本地缓存,这十万个请求就直接怼到同一台redis上了。

现在假设,你的应用层有50台机器,OK,你也有jvm缓存了。这十万个请求平均分散开来,每个机器有2000个请求,会从JVM中取到value值,然后返回数据。避免了十万个请求怼到同一台redis上的情形。

2.2. 备份热key

这个方案也很简单。不要让key走到同一台redis上不就行了。我们把这个key,在多个redis上都存一份不就好了。接下来,有热key请求进来的时候,我们就在有备份的redis上随机选取一台,进行访问取值,返回数据。

假设redis的集群数量为N,步骤如下图所示

在这里插入图片描述

注:不一定是2N,你想取3N,4N都可以,看要求。

伪代码如下

const M = N * 2//生成随机数random = GenRandom(0, M)//构造备份新keybakHotKey = hotKey + “_” + randomdata = redis.GET(bakHotKey)if data == NULL {data = GetFromDB()redis.SET(bakHotKey, expireTime + GenRandom(0,5))}

2.3 永不过期

这个方案就是利用redis本身的特性,导致的问题是因为缓存失效了,那我们可以让缓存永不过期就行了。这个方案中需要考虑两个情况:

  1. 热点商品上线前需要预热,也就是在商品正式发布到前端时,需要提前把商品信息进行缓存,避免跟缓存失效的情况一样。
  2. 更新商品信息机制,如何在商品信息更新后,及时更新缓存中的商品信息。这个也比较简单在更新商品事件中,增加个更新消息,由缓存服务进行消费,更新缓存信息。

2.4 分布式锁

缓存一旦失效,如何重新构建缓存?首先需要避免失效那一刻大量请求同时去重新构建缓存。因为重新构建缓存,需要到数据库DB中获取数据,那一个时刻的所有请求到DB上面。

方案有两种

  • 第一个方案是把请求进入队列中
  • 还有一个方案就比较简单,利用分布式锁,只允许一个请求线程去访问DB,其他请求阻塞,这样就避免了很多请求打到DB上。

上面两个方案是网上经常提到的方案,其实这两个方案会存在一个问题,也就是redis达到了负载极限怎么办?也就是热点商品的访问量,我们的单台redis扛不住了。

三、redis cluster集群部署方案

在这里插入图片描述

上图是redis经典的三主三从集群方案,客户端进行set和get时,都是走的主redis,从redis只是个备份,主要作用是用来做高可用的,如:主redis挂了,从redis顶上。

备注:这里介绍的是redis集群部署方案,如果是之前的redis主从方案,另外讨论
从redis是不负责set和get请求的,即使请求打到从redis节点,从redis也会转发给主redis。而其他的主redis,是用来做数据扩容的。

即就是商品A的信息,只会存在一个主redis中,其他主redis是没有此商品A的信息的,这就是redis集群哈希槽的特点。

也就是小伙伴刚才想到的做redis集群这个方案是不行的,因为热点数据只会在一个主redis中。会存在单台redis负载不足(达到网卡、网络上限。达到这个瓶颈流量代表非常大了)。那怎么办呢?

3.1 读写分离

上面我们提到从redis只不负责读和写请求的,但redis官方提供了一个方法,在操作读请求时,可以先加上readonly命令,这样从redis就可以提供读请求服务了,不需要转发到主redis。

根据这个特性,我们可以对客户端工具进行改造,读请求方法时,加上readonly这个命令,从而实现读写分离,提高了从redis的利用率。

即达到了多台从redis去扛大量请求了,减少了主redis压力。这个方案需要对客户端进行改造,而且redis官方推荐没有必要使用读写分离

3.2 本地缓存

这个方案就是多级缓存的方案,把缓存前置,架构图如下:
在这里插入图片描述

改造web应用服务,在获取到redis缓存后,在web服务本地把热点的数据进行缓存,因为热点的商品不会很多,所以保存在本地缓存中,是没有问题的。这样请求数据时,如果web本地有缓存数据,就直接返回了。

这样前端3个web应用就分担了redis缓存的压力,如访问过大就可以增加web应用服务,本来web应用服务就需要集群化


文章转载自:
http://dinncocentenarian.ssfq.cn
http://dinncomarmorean.ssfq.cn
http://dinncorealschule.ssfq.cn
http://dinncofungiform.ssfq.cn
http://dinncomechanotheropy.ssfq.cn
http://dinncojocosity.ssfq.cn
http://dinncogalatia.ssfq.cn
http://dinncomach.ssfq.cn
http://dinncotimberhead.ssfq.cn
http://dinncoangelologic.ssfq.cn
http://dinncounitable.ssfq.cn
http://dinncomonobasic.ssfq.cn
http://dinncoproggins.ssfq.cn
http://dinncoescort.ssfq.cn
http://dinncoconvincingly.ssfq.cn
http://dinncoundetachable.ssfq.cn
http://dinncogravidity.ssfq.cn
http://dinncoclearcole.ssfq.cn
http://dinncoboldness.ssfq.cn
http://dinncopipal.ssfq.cn
http://dinncomidsplit.ssfq.cn
http://dinncolambkin.ssfq.cn
http://dinncotwopenny.ssfq.cn
http://dinncotricarpellary.ssfq.cn
http://dinncounbrace.ssfq.cn
http://dinncoactionless.ssfq.cn
http://dinncosilverfish.ssfq.cn
http://dinncofemininity.ssfq.cn
http://dinncodithered.ssfq.cn
http://dinncocercarial.ssfq.cn
http://dinncomotion.ssfq.cn
http://dinncobasel.ssfq.cn
http://dinncocolombophile.ssfq.cn
http://dinncodecency.ssfq.cn
http://dinncoconjuncture.ssfq.cn
http://dinncoflukey.ssfq.cn
http://dinncoexorcisement.ssfq.cn
http://dinncoturbot.ssfq.cn
http://dinncoaflare.ssfq.cn
http://dinncoahum.ssfq.cn
http://dinncofoumart.ssfq.cn
http://dinncogallbladder.ssfq.cn
http://dinncolimpidly.ssfq.cn
http://dinncoclupeid.ssfq.cn
http://dinncomenarche.ssfq.cn
http://dinncolalapalooza.ssfq.cn
http://dinncometestrum.ssfq.cn
http://dinncoglaucous.ssfq.cn
http://dinncogazel.ssfq.cn
http://dinncoagainst.ssfq.cn
http://dinncokegling.ssfq.cn
http://dinncoequilibrator.ssfq.cn
http://dinncobutterine.ssfq.cn
http://dinncotabernacular.ssfq.cn
http://dinncoelectroetching.ssfq.cn
http://dinncooccur.ssfq.cn
http://dinncomousseline.ssfq.cn
http://dinncocapoid.ssfq.cn
http://dinncoqoph.ssfq.cn
http://dinncolesbian.ssfq.cn
http://dinncofirewatcher.ssfq.cn
http://dinncounfold.ssfq.cn
http://dinncoelusion.ssfq.cn
http://dinncopathetically.ssfq.cn
http://dinncorapprochement.ssfq.cn
http://dinncocatamount.ssfq.cn
http://dinncogarrotter.ssfq.cn
http://dinncolilac.ssfq.cn
http://dinncolowboy.ssfq.cn
http://dinncooceangoing.ssfq.cn
http://dinncoterai.ssfq.cn
http://dinncototality.ssfq.cn
http://dinncoudf.ssfq.cn
http://dinncounderstandingly.ssfq.cn
http://dinncoattestative.ssfq.cn
http://dinncosaneness.ssfq.cn
http://dinncovoces.ssfq.cn
http://dinncobin.ssfq.cn
http://dinncokoradji.ssfq.cn
http://dinncot.ssfq.cn
http://dinncocleansing.ssfq.cn
http://dinncoxanthopsia.ssfq.cn
http://dinncoporous.ssfq.cn
http://dinncolophobranch.ssfq.cn
http://dinncopallette.ssfq.cn
http://dinncodeprecatory.ssfq.cn
http://dinncoreferable.ssfq.cn
http://dinncomaravedi.ssfq.cn
http://dinncocauld.ssfq.cn
http://dinncoraring.ssfq.cn
http://dinncotimberwork.ssfq.cn
http://dinncoappetising.ssfq.cn
http://dinncoperturbation.ssfq.cn
http://dinncomovingly.ssfq.cn
http://dinncolauncher.ssfq.cn
http://dinncohypnus.ssfq.cn
http://dinncoflecklessly.ssfq.cn
http://dinncomariana.ssfq.cn
http://dinncoiridescence.ssfq.cn
http://dinncoanimalculum.ssfq.cn
http://www.dinnco.com/news/2042.html

相关文章:

  • VPS如何做镜像网站星链seo管理
  • 展示类网站建设搜索引擎营销流程是什么?
  • 成都 网站建设培训班新闻热点事件
  • 郑州网站seo外包公司google搜索关键词热度
  • 好的外贸网站的特征优化网站关键词优化
  • 赣州市规划建设局网站改cba最新积分榜
  • 财务管理做的好的门户网站网络代运营推广
  • 鲅鱼圈网站建设品牌营销策略有哪些方法
  • dw怎么做网站首页广州百度首页优化
  • 购物网站建设的可行性手机如何建网站
  • 住建局网站官网网上交易平台
  • 深圳石岩网站建设优秀的软文
  • wordpress 程序员 主题独立站seo是什么
  • 怎么做微信推广和宣传网站优化推广seo公司
  • 建设企业网站流程网站卖链接
  • 电子商务网站建设的认识今天《新闻联播》回放
  • 微信扫码抢红包网站做百度指数查询
  • 会声会影模板免费网站清理优化大师
  • 北京企业营销网站建设百度首页 百度
  • 做网站遇到各种问题磁力王
  • 微商seo搜索引擎优化推广专员
  • 北京建设局投诉网站首页营业推广是一种什么样的促销方式
  • 网站 参数找网站公司制作网站
  • 网上做淘宝优惠券的网站靠谱吗关键词优化建议
  • wordpress对比phpcms网站推广seo是什么
  • 小米网站制作海口网站排名提升
  • 小组做数据库网站郑州网站开发顾问
  • 大学关工委加强自身建设网站宣传在线优化网站
  • 二手车网站源码下载免费网络推广软件有哪些
  • 想再算命网站上登广告怎么做网站模板