如何设计缓存思路(缓存的实现原理设计缓存要注意什么)

如何设计缓存思路,缓存的实现原理设计缓存要注意什么内容导航:如何正确的设置缓存保险设计思路有哪些如何在高并发环境下设计出无锁的数据库操作L1缓存数据缓存设计有几种分类一、如何正确的设置缓存在选项-磁盘缓存中,最好把磁盘缓存的最小值和最大值设成一样,你内存较小,为给其他程序多留点内存,设成16M就够了,“减少缓存当

如何设计缓存思路,缓存的实现原理设计缓存要注意什么

内容导航:

  • 如何正确的设置缓存
  • 保险设计思路有哪些
  • 如何在高并发环境下设计出无锁的数据库操作
  • L1缓存数据缓存设计有几种分类
  • 一、如何正确的设置缓存

    在选项-磁盘缓存中,最好把磁盘缓存的最小值和最大值设成一样,你内存较小,为给其他程序多留点内存,设成16M就够了,“减少缓存当空闲物理内存低于多少”是为了在可用物理内存较少时,把分给磁盘缓存的内存拿出来给其他程序用,而不影响其他程序的运行。
    —————— 虚拟缓存的设置方法可以在中设置。下面就来介绍一下如何在
    中操作。首先在“开始”中“运行”。然后在文件中查找“[vcache]”,然后键入以下信息: MinFileCache=…
    MaxFileCache=… Chunksize=… NameCache=… DirectoryCache=…
    第1行和第2行是设置了最大的和最小的磁盘缓存的大小,它会直接影响到用于转换用途的内存。“Chunksize”设置的是块的大小,就好像是FAT16与FAT32一样,它是磁盘缓存的最小单位,如果设得过大就会浪费空间,而过小又会使占用的块过多,降低工作效率,所以最好取个适合的值一般推荐512。“NameCache”设定了一个Windows系统所能跟踪的文件数上限。“DirectoryCache”设定了一个Windows系统所能跟踪的目录数上限。

    二、保险设计思路有哪些

    答:1)意外保障:意外的风险是家庭保障之中最常见的,社保中的报销比例是有限的,尤其是门急诊的费用是不报销的。意外保障是家庭保单的第一必保的保险。→意外险均为消费型的,交一年保一年。费用不是很高。200元一年基本够了。若经常出差和开车,需要加大保障。2)住院医疗:是报销社保或公费医疗不报销的部分,包括自费药和住院前后门急诊费用。另外光大的住院医疗还能报销重疾之后的门诊费用。3)重大疾病保险:是给付型的,无需发票,医生一旦确诊,就可以赔付保险金额,一般这笔钱能解决好药和进口药的费用,用于救命。光大重疾的特点:保40种大病,癌症二次给付。每日增长型,重疾理赔金随着时间的延续,重疾金越来越多。到70岁若没有发生重疾理赔,可以转换成养老金领取。真正做到有病治病,无病养老。4)寿险:重疾保险中含有寿险,根据你家庭的具体情况,看是否有房贷,如有,可按需要增加定期寿险。5)宝宝的保险一般分3类:健康医疗,教育金,投资理财(养老金和转移资产)。6)整个家庭的保障,建议先健全健康医疗(意外,住院和重大疾病),而后在考虑宝宝的教育金。

    三、如何在高并发环境下设计出无锁的数据库操作

    一个在线2k的游戏,每秒钟并发都吓死人。传统的hibernate直接插库基本上是不可行的。我就一步步推导出一个无锁的数据库操作。 1.
    并发中如何无锁。一个很简单的思路,把并发转化成为单线程。Java的Disruptor就是一个很好的例子。如果用java的concurrentCollection类去做,原理就是启动一个线程,跑一个Queue,并发的时候,任务压入Queue,线程轮训读取这个Queue,然后一个个顺序执行。
    在这个设计模式下,任何并发都会变成了单线程操作,而且速度非常快。现在的,
    或者比较普通的ARPG服务端都是这个设计,“大循环”架构。这样,我们原来的系统就有了2个环境:并发环境 +
    ”大循环“环境并发环境就是我们传统的有锁环境,性能低下。”大循环“环境是我们使用Disruptor开辟出来的单线程无锁环境,性能强大。 2. ”大循环“环境
    中如何提升处理性能。一旦并发转成单线程,那么其中一个线程一旦出现性能问题,必然整个处理都会放慢。所以在单线程中的任何操作绝对不能涉及到IO处理。那数据库操作怎么办?增加缓存。这个思路很简单,直接从内存读取,必然会快。至于写、更新操作,采用类似的思路,把操作提交给一个Queue,然后单独跑一个Thread去一个个获取插库。这样保证了“大循环”中不涉及到IO操作。
    问题再次出现:如果我们的游戏只有个大循环还容易解决,因为里面提供了完美的同步无锁。但是实际上的游戏环境是并发和“大循环”并存的,即上文的2种环境。那么无论我们怎么设计,必然会发现在缓存这块上要出现锁。
    3.
    并发与“大循环”如何共处,消除锁?我们知道如果在“大循环”中要避免锁操作,那么就用“异步”,把操作交给线程处理。结合这2个特点,我稍微改下数据库架构。原本的缓存层,必然会存在着锁,例如:public
    TableCache{ private HashMap caches = new
    ConcurrentHashMap();}这个结构是必然的了,保证了在并发的环境下能够准确的操作缓存。但是”大循环“却不能直接操作这个缓存进行修改,所以必须启动一个线程去更新缓存,例如:private
    static final ExecutorService EXECUTOR = ThreadExecutor();(new
    LatencyProcessor(logs));class LatencyProcessor implements Runnable{ public
    void run() { // 这里可以任意的去修改内存数据。采用了异步。
    }}OK,看起来很漂亮。但是又有个问题出现了。在高速存取的过程中,非常有可能缓存还没有被更新,就被其他请求再次获取,得到了旧的数据。 4.
    如何保证并发环境下缓存数据的唯一正确?我们知道,如果只有读操作,没有写操作,那么这个行为是不需要加锁的。我使用这个技巧,在缓存的上层,再加一层缓存,成为”一级缓存“,原来的就自然成为”二级缓存“。有点像CPU了对不?一级缓存只能被”大循环“修改,但是可以被并发、”大循环“同时获取,所以是不需要锁的。当发生数据库变动,分2种情况:1)并发环境下的数据库变动,我们是允许有锁的存在,所以直接操作二级缓存,没有问题。2)”大循环“环境下数据库变动,首先我们把变动数据存储在一级缓存,然后交给异步修正二级缓存,修正后删除一级缓存。这样,无论在哪个环境下读取数据,首先判断一级缓存,没有再判断二级缓存。这个架构就保证了内存数据的绝对准确。而且重要的是:我们有了一个高效的无锁空间,去实现我们任意的业务逻辑。
    最后,还有一些小技巧提升性能。1.
    既然我们的数据库操作已经被异步处理,那么某个时间,需要插库的数据可能很多,通过对表、主键、操作类型的排序,我们可以删除一些无效操作。例如:a)同一个表同一个主键的多次UPdate,取最后一次。b)同一个表同一个主键,只要出现Delete,前面所有操作无效。2.
    既然我们要对操作排序,必然会存在一个根据时间排序,如何保证无锁呢?使用private final static AtomicLong _seq = new
    AtomicLong(0);即可保证无锁又全局唯一自增,作为时间序列。

    四、L1缓存数据缓存设计有几种分类

    答:L1缓存数据缓存设计编辑根据工作原理的不同,目前主流处理器所采用的一级数据缓存又可以分为实数据读写缓存和数据代码指令追踪缓存2种,它们分别被AMD和Intel所采用

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/118886.html

    (0)
    robot
    上一篇 2022-05-04
    下一篇 2022-05-04

    相关推荐

    • 新手小白怎么搭建幻兽帕鲁服务器

      搭建幻兽帕鲁服务器需要以下步骤:购买服务器:首先,你需要购买一个适合主机的服务器。你可以选择共享主机、虚拟私有服务器(VPS)或者云服务器等。安装操作系统:一般情况下,服务器会提供一些操作系统供你选择,如Linux、Windows等。选择一个你熟悉或者适合的操作系统,并进行安装。安装Web服务器软件:幻兽帕鲁是基于Web的游戏服务器,所以你需要安装Web服务器软件。常用的Web服务器软件有Apac

      2024-01-27
      0
    • 选择美国BGP主机有什么优势

      选择美国BGP主机的优势包括:稳定的网络连接:美国拥有先进的网络基础设施和技术,保证了主机的稳定性和可靠性。更高的网络速度:美国的网络速度通常较快,能够提供更好的用户体验。更好的网络安全性:美国拥有完善的网络安全措施和监管机构,能够更有效地保护主机和用户的数据安全。更多的网络选项:美国拥有丰富的网络运营商和数据中心选择,可以提供更多的网络选项和服务。更好的技术支持:美国的主机提供商通常拥有更专业的

      2024-04-15
      0
    • 网址域名是指什么(使用域名网站是什么意思)

      域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。常见的域名有com、top、cn等等。域名的作用有网站建设、企业邮箱、品牌保护、网络营销等等。域名一般由数字、字母、符号构成。

      2022-05-02
      0
    • java双亲委派机制有什么作用

      Java双亲委派机制是一种类加载机制,其作用主要有两个方面:避免类的重复加载:当一个类加载器需要加载一个类时,它会先委托给其父类加载器去加载,如果父类加载器能够加载成功,则直接返回,避免了重复加载同一个类的情况。加强安全性:通过双亲委派机制,可以保证核心的Java类库不会被自定义的类所替代,从而保证了Java核心库的安全性和稳定性。如果没有双亲委派机制,可能会导致自定义的类库覆盖了Java核心类库

      2024-03-27
      0
    • 七彩虹3070ti战斧值得买吗

      很多用户在购买显卡的时候,看中了七彩虹3070ti战斧这款,但是不知道它的性能怎么样,值不值得入手,其实这款显卡的性能是非常不错的,值得买。七彩虹3070ti战斧值得买吗:答:值得买。这款七彩虹3070ti战斧的价格是比较低的,性价比很高,适合一些喜欢尝鲜的游戏玩家,但是如果是重度游戏爱好者的话就得考虑别的问题。七彩虹3070ti战斧拓展介绍:1、这款显卡的表面采用类金属磨砂的工艺,质感非常好。2

      2024-02-01
      0
    • 闲鱼微信小程序下单流程

      许多用户不知道该怎么在闲鱼微信小程序上进行购买的操作,其实方法也就和APP端是差不多的,只不过卖家那边是需要打开一个微信支付,这样才可以正常交易。闲鱼微信小程序下单流程 答:小程序的操作方法和步骤其实和APP端的操作方法是一样的。1、首先找到并且打开小程序,然后点击登录上你的账号2、找到你想要购买的产品3、进入以后点击下面的我想要或者是立即购买就可以正常付款了。4、但是需要注意的是,小程序上买卖需

      2024-01-26 技术经验
      0