大流量缓冲

在电商大促时,系统流量会高于正常流量的几倍甚至几十倍,解决方式之一,是牺牲强一致性,保证最终一致性,如:直接在Redis中扣减,然后几率下扣减日志,然后通过worker同步到DB。

在使用了消息异步机制的场景下,可能存在消息的丢失,需要考虑进行数据校对和修正来保证数据的一致性和完整性。可以通过worker定期去扫描原始表,通过对业务数据进行校对,有问题的要进行补偿,扫描周期根据实际场景进行定义。

业务涉及原则

防重设计:比如,结算页考虑重复提交,还有下单扣减库存是需房子重复扣减库存。

解决方案可以考虑防重key、防重表。因为有的电商同事支持微信、支付宝支付,因为渠道不一样,是无法防止重复支付的。可以在系统设计时,将支付的每笔情况记录,然后退款。

幂等性设计:现有消息中间件基本不保证发生重复消息的消费。因此需要业务系统在消费时进行幂等处理。还有在第三方支付时,第三方支付会进行一步回调,也要考虑好回调的幂等处理。

等等其他。

对于读热点比这一般用多级缓存搞定。对于写热点我们一般通过缓存+队列模式削峰。

缓存的目的是提高系统访问速度和增大系统处理能力,是抗高并发流量的银弹。而降级是当服务出现问题或者影响到核心流程的性能,需要暂时屏蔽掉,带高峰过去或者问题解决后再打开的场景。有些场景如稀缺资源(秒杀、抢购)写服务(;评论、下单)、频繁的复杂查询(评论的最后几页)等。因此需要限流手段,限制这种场景下的并发/请求量。

限流算法有:令牌同、漏桶、计数器。

如果应用不设置超时,可能会导致请求 响应慢,甚至造成应用雪崩。读服务适合重试,但写服务大多不能重试(如写订单,如果写服务是幂等性的,则允许重试)次数太多。

多级缓存

指在整个系统框架的不同系统层级进行数据缓存,以提升访问效率。

大value缓存,尤其是使用Redis(单线程)时。遇到这种情况可以考虑使用多线程实现的缓存memcached,来缓存大value;或者对value进行压缩;或者将value拆分为多个小value。客户端在进行查询、聚合。

线程池的目的类似与数据库连接池,通过减少频繁创建和销毁线程来降低性能损耗。

每个线程都需要一个内存栈,用于存储如局部变量、操作栈等信息,可以通过-Xss参数来调整每个线程大小(64位系统默认1024KB)。线程池一般配合队列一起工作,使用线程池可以限制并发处理的线程数。然后设置队列的大小,当任务超过队列大小时,通过一定的拒绝策略来处理,可保护系统免受大流量而导致崩溃。

异步并发实战

在java中Tomcat给每一个请求分配一个线程,并一直占阻塞用次线程,直到返回数据。

我们希望在调用依赖的服务响应比较慢时,应该让出线程和cpu来处理下一个请求,当依赖的服务器返回后在分配相应的线程继续处理。解决方案:异步/协程。

《亿级流量网站架构核心技术》读后感相关推荐

  1. GC13:XO独占游戏《神鬼寓言传奇》公布

    作者: 来源: www.bts668.com 微软日前公布了<神鬼寓言传奇>(Fable Legends),该游戏是此系列作品的新作,将作为Xbox One游戏出现. 这款由狮子头工作室开 ...

  2. Facebook 重金挖不到,ASP.NET 之父,微软大神“红衣教主”传奇

    作者 | 伍杏玲 出品 | CSDN (ID:CSDNnews) 2018 年底,微软"王者归来",时隔 16 年市值重返全球第一.人们纷纷用"力挽狂澜"&qu ...

  3. 乔布斯去世衍生多种周边产品(支持乔布斯请顶)

    各种乔布斯肖像 乔布斯公仔 乔布斯立体纸人 不管你是不是狂热的苹果粉丝,是不是拥有n多的苹果产品,苹果帮主乔布斯都应该值得我们纪念. "为什么说乔布斯改变了世界?没有 iPhone,就不会有 ...

  4. 一战封神!“中国飞人”苏炳添跑出9秒83到底有多牛?

    公众号后台回复"图书",了解更多号主新书内容作者:CDA数据分析师来源:CDA数据分析师 [导读] 在刚刚结束的东京奥运会百米飞人大战上,中国选手苏炳添在半决赛跑出9秒83,刷新了 ...

  5. 乔布斯导演的最后一幕

    连作者也说,他仅仅是这本书的写作者,真正的作者是乔布斯."中信出版社总编辑潘岳近日分享了<史蒂夫·乔布斯传>幕后的故事.这本传记预定期已达100万册,预估最终销量将达到500万册 ...

  6. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全

    史上最牛的Linux内核学习方法论   点击下载 我的arm_linux移植笔记   点击下载 S3C2440完全开发流程   点击下载 Linux系统命令及其使用详解完整版   点击下载 Linux ...

  7. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全...

    史上最牛的Linux内核学习方法论 点击下载 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击下载 Linux主要shell命 ...

  8. 养成励志的习惯,一生励志——文指星终极励志

    语言的突破全集 卡耐基 --励志经典     点击下载 人性的优点--卡耐基名著--励志经典     点击下载 人生格言精华总集     点击下载 人生定律与原则--励志经典     点击下载 厚黑学 ...

  9. 养成励志的习惯,一生励志

    语言的突破全集 卡耐基 --励志经典     点击下载 人性的优点--卡耐基名著--励志经典     点击下载 人生格言精华总集     点击下载 人生定律与原则--励志经典     点击下载 厚黑学 ...

  10. 【转】乔布斯经典语录

    2011年8月25日消息,乔布斯辞去了苹果公司CEO的职务.10月6日,传来了他去世的消息.在此缅怀乔帮主的同时,与大家分享乔布斯在世时的经典语录.(来自于<乔布斯传>--神一样的传奇的附 ...

最新文章

  1. Chroot’ing users with openssh[强文推荐]
  2. 苹果免费Mac OS X和办公软件动了谁的奶酪
  3. Android Git 客户端
  4. 剑与远征英雄兑换码如此少见,新玩家连抽获得数位英雄
  5. spring加载ApplicationContext.xml的四种方式
  6. python的内存机制_python中的内存机制
  7. Python学习week4-set集合
  8. cocos2dx 简单血量条实现
  9. 桌面版docker操作_10分钟快速掌握Docker必备基础知识
  10. Uber宣布停止无人卡车项目,研发重心将转向无人小汽车
  11. 问题-delphi无法编辑oracle表
  12. 基于核极限学习机(KELM)分类 -附代码
  13. android 连接魅族调试,魅族 PRO6 开启USB调试模式
  14. web前端开发实训报告,HTML表单标签
  15. java验证用户名和密码_Java验证用户名和密码
  16. mysql中的事务和锁_MySQL中的事务和锁
  17. 如何根本上解决屎山代码的问题
  18. JavaWeb jQuery
  19. 消费者运营-阿里系三大模型
  20. 【生信】初探基因定位和全基因组关联分析

热门文章

  1. EXCEL中单元格斜杠数值相加统计
  2. Redis 6.2 执行hset 操作(源码)
  3. Android View 通过平移、旋转、缩放后,顶点映射
  4. AEAI HR V1.5.1升级说明,开源人力资源管理系统
  5. 【Python】“大润发”、“沃尔玛”、“好德”和“农工商”四个超市都卖苹果、梨、香蕉、橘子和芒果五种水果。使用NumPy的ndarray实现以下功能。
  6. 块设备驱动介绍(浅析)
  7. python可视化stackplot函数用法-绘制堆积面积图。
  8. 谢雨欣最欣专辑《欣天地》
  9. vue项目:大屏自适应解决方案(两种)
  10. ESP8266-Arduino编程实例-OLED显示电容式土壤湿度传感器数据