联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

亿级流量下通用的高并发架构设HASH GAME - Online Skill Game ET 300计

发布时间:2025-01-28 12:54:38  点击量:

  HASH GAME - Online Skill Game GET 300

亿级流量下通用的高并发架构设HASH GAME - Online Skill Game GET 300计

  然而,平均值有明显的硬伤并在很多数据统计场景中为大家所调侃。假设你和传奇篮球巨星姚明被分到同一组,你的身高是4350px,姚明的身高是5650px,那么这组的平均身高是2m!这看起来非常不合理。假设在10000个请求中有9900个请求的响应时间分别是1ms,另外100个请求的响应时间分别是100ms,那么平均响应时间仅为1.99ms,完全掩盖了那100个请求的100ms响应时间的问题。平均值的主要缺点是易受极端值的影响,这里的极端值是指偏大值或偏小值——当出现偏大值时,平均值将会增大;当出现偏小值时,平均值将会减小。

  在业务服务和数据库服务器之间增加数据库Proxy代理节点(下文简称Proxy),业务服务对数据库的一切操作都需要经过Proxy转发。Proxy收到业务服务的数据库操作请求后,根据请求中的SQL语句进行归类,将属于写操作的请求(如insert/delete/update语句)转发到数据库Master,将属于读操作的请求(如select语句)转发到数据库任意一个Slave,完成读/写分离的路由。开源项目如中心化代理形式的MySQL-Proxy和MyCat,以及本地代理形式的MySQL-Router等都实现了读/写分离功能。

  不同的业务场景对主从延迟的容忍性不一样。例如,用户a刚刚发布了一条状态,他浏览个人主页时应该展示这条状态,这个场景不太能容忍主从延迟;而好友用户b此时浏览用户a的个人主页时,可以暂时看不到用户a最新发布的状态,这个场景可以容忍主从延迟。我们可以对业务场景按照主从延迟容忍性的高低进行划分,对于主从延迟容忍性高的场景,执行正常的读/写分离逻辑;而对于主从延迟容忍性低的场景,强制将读请求路由到数据库Master,即强制读主。

  ◎LRU(Least Recent Used)策略:优先淘汰缓存中最近最少使用的数据。此策略一般基于双向链表和哈希表配合实现。双向链表负责存储缓存数据,并总是将最近被访问的数据放置在尾部,使缓存数据在双向链表中按照最近访问时间由远及近排序,每次被淘汰的都是位于双向链表头部的数据。哈希表负责定位数据在双向链表中的位置,以便实现快速数据访问。此策略可以有效提高短期内热点数据的缓存命中率,但如果是偶发性地访问冷数据,或者批量访问数据,则会导致热点数据被淘汰,进而降低缓存命中率。

  虽然布隆过滤器对于“数据存在”有一定的误判,但是对于“数据不存在”的判定是准确的。布隆过滤器很适合用来防止缓存穿透:将数据库中的全部数据加入布隆过滤器中,当用户请求访问某数据但是在Redis缓存中找不到时,检查布隆过滤器中是否记录了此数据。如果布隆过滤器认为数据不存在,则用户请求不再访问数据库;如果布隆过滤器认为数据可能存在,则用户请求继续访问数据库;如果在数据库中找不到此数据,则在Redis缓存中设置空值。虽然布隆过滤器对“数据存在”有一定的误判,但是误判率较低。最后在Redis缓存中设置的空值也很少,不会影响Redis缓存命中率。

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: