首页
学习
活动
专区
圈层
工具
发布

【Java面试】第一章:P5级面试

_廖志伟-CSDN博客_缓存双删策略 线程是什么,有几种实现方式,它们之间的区别是什么,线程池实现原理,JUC并发包,ThreadLocal与Lock和Synchronize区别 答案:理论:第八章:线程是什么...,有几种实现方式,它们之间的区别是什么,线程池实现原理,JUC并发包,ThreadLocal与Lock和Synchronize区别_廖志伟-CSDN博客 分布式事务(不同系统之间如何保证数据的一致性(A...系统写入数据,B系统因为某些原因没有写入成功,造成数据不一致)) 答案:保证分布式系统数据一致性的6种方案 – 左正 – 博客园 安全性问题(数据篡改(拿到别人的URL,篡改数据(金额)发送给系统))...例如:传入参数为(订单id)和(优惠券id),拿(订单id)查询该订单的用户id,拿来和登录的用户id进行对比,判断是否为本人操作。拿(优惠券id)查询用户表是否领取了该优惠券,该优惠券是否可用。...,我相信你是可以做到的,但你聊的真的足够深入吗?

16.2K10

数据迁移与一致性思考与实践

前言 在上一篇中我们讲了通用优惠券系统的设计,这篇主要是以优惠券重构后,我们现有系统接入到该通用优惠券系统过程中遇到的数据迁移与一致性问题相关的思考与实践。...我们早期的优惠券系统使用的是ckv的存储,后来为了统一,全部改为使用redis储存了,这里首先一个数据迁移点是 ckv----->redis的迁移,另一个数据迁移点是上海redis----->深圳redis...写了存储B成功之后,再写存储C就一定能写成功吗,如果不成功,那两边的数据就不一致,读到了不一致的数据,又该怎么办?...实战之我们的解决方案 前面我们说了,我们有两次的数据迁移,那我们的数据迁移是怎么一个过程呢?...但是这里的影响也仅仅是短暂的看到表现不一致而已,如果用户再次使用该优惠券,双写的时候写存储B就会失败,因为存储B里面的状态是已使用,不可能让已使用状态的优惠券再次使用。

18.6K4017
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    微服务应该这么搞,才能少踩坑!

    当然这样做价格有可能不是最新的,但毕竟这是降级方案,牺牲一些数据准确性,换来系统的可用性还是很有意义的!...大规模分布式系统如何降级? 在大规模分布式系统中,经常会有成百上千的服务。在大促前往往会根据业务的重要程度和业务间的关系批量降级。...基本步骤如下: 1,修改订单状态为“已支付” 2,扣减库存 3,扣减优惠券 4,通知WMS(仓储管理系统)捡货出库(异步消息) 我们先看扣减库存,更新订单状态和扣减优惠券这三步同步调用,通知WMS的异步消息会在后面的...那么有什么问题吗? 答案是肯定的。没法保证数据一致性,也就是说不能保证这几步操作全部成功或者全部失败!...这些关于流程的逻辑也要手动编码吗?这也太麻烦了吧! 实际上TCC分布式事务框架帮我们把这些事都干了。比如我们前面提到的Hmily,ByteTCC,TCC-transaction 这些框架。

    4.5K20

    分布式ID系列(1)——为什么需要分布式ID以及分布式ID的业务需求

    分布式id主要用到哪些地方 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。...如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一...同时除了对ID号码自身的要求,业务还对ID号生成系统的可用性要求极高,想象一下,如果ID生成系统瘫痪,整个美团点评支付、优惠券发券、骑手派单等关键动作都无法执行,这就会带来一场灾难。...的请求,那么你服务器给我创建一个分布式id的速度就要快 高QPS:这个就是用户一下子有10万个创建分布式id请求同时过去了,那么你服务器要顶的住,你要一下子给我成功创建10万个分布式id 原文链接 其他分布式...ID系列快捷键: 分布式ID系列(1)——为什么需要分布式ID以及分布式ID的业务需求 分布式ID系列(2)——UUID适合做分布式ID吗 分布式ID系列(3)——数据库自增ID机制适合做分布式ID吗

    1.7K10

    服务化带来的数据一致问题---分布式事务,事务型消息

    本文我们聊聊分布式事务和事务型消息的解决思路,通过阅读本文,可以理解分布式事务和事务型消息,并且能够应用到实际生产工作中。 服务化后单体系统被拆分成多个服务,各服务访问自己的数据库。...基本步骤如下: 1,修改订单状态为“已支付” 2,扣减库存 3,扣减优惠券 4,通知WMS(仓储管理系统)捡货出库(异步消息) 我们先看扣减库存,更新订单状态和扣减优惠券这三步同步调用,通知WMS的异步消息会在后面的...那么有什么问题吗? 答案是肯定的。没法保证数据一致性,也就是说不能保证这几步操作全部成功或者全部失败!...这些关于流程的逻辑也要手动编码吗?这也太麻烦了吧! 实际上TCC分布式事务框架帮我们把这些事都干了。比如我们前面提到的Hmily,ByteTCC,TCC-transaction 这些框架。...RocketMQ本身有ack机制,来保证消息能够被正常消费。如果消费失败(消息订阅方出错,宕机等原因),RocketMQ会把消息重发回Broker,在某个延迟时间点后(默认10秒后)重新投递消息。

    2.7K20

    分布式事务的隐形成本:别让协调拖垮你的系统

    作为一名10年Java老兵,他见过无数次系统崩溃,但这次不同。屏幕上显示:订单服务响应时间从200ms飙升到8秒,库存服务超时率47%,支付回调堆积了3000+条消息。...结果上线第三天,问题爆发:2.2血淋淋的真相老李用性能分析工具抓到了问题本质:参与节点数网络往返次数平均响应时间锁持有时间回滚概率2个服务6次350ms400ms3%4个服务14次1200ms1500ms12%...SaaS系统有个特点:租户隔离+高并发。...}异步补偿(优惠券+通知+等级):可靠消息+重试展开代码语言:JavaAI代码解释publicvoidcreateOrder(Orderorder){//...核心事务......2-3个,超过就要重新审视设计核心隔离:强一致性只保护核心业务数据(订单/库存/支付)最终一致:边缘功能(通知/日志/统计)全部异步化成本量化:每增加一个节点,问自己"边际价值>协调成本吗?"

    50311

    中间件MQ是什么?

    中间件 MQ(消息队列,Message Queue) 是一种分布式通信中间件,核心功能是异步传递消息,解决分布式系统中 “服务间解耦、流量削峰、可靠通信” 的问题。...系统解耦(最核心价值)场景:电商下单后,需要同步触发 “扣库存”“发优惠券”“发短信” 3 个操作。若直接调用,任何一个服务挂掉都会导致订单失败。...MQ 方案:订单服务只负责发一条 “订单创建成功” 的消息到 MQ,库存、优惠券、短信服务各自从 MQ 订阅消息,独立处理。...流量削峰(应对突发流量)场景:双 11 零点,10 万 /s 的抢购请求直接打数据库,瞬间压垮。...对比:无 MQ 时,数据库连接池被打爆,整个系统雪崩;有 MQ 时,流量波峰被 “削平”,系统平稳扛过峰值。3.

    1.9K10

    科大讯飞面经详解!

    再比如:微服务架构,那可能就需要引入分布式锁,既然提到分布式锁,面试官都会问你们项目用什么实现分布式锁?分布式锁实现方案有哪些?每个优缺点是什么。...延迟消息队列? 回答好你们项目的方案即可,不过,你可能说我们用的是延迟消息队列,面试官就会问:定时任务不行吗?延迟消息队列就完美了吗? 5.对数据结构了解的怎么样?...观察者模式 3年工作必备 装饰器模式 8.Java的juc包下的工具类有使用过吗?有看过源码吗?平常有阅读源码的习惯吗?...11.hashmap和hashtable有什么区别? 同上 12.怎么理解阻塞和非阻塞的概念?...13.项目中用到了异步的方法吗?有了解过吗?

    1.2K10

    RocketMQ实战—9.营销系统代码初版

    、缺陷和削峰12.XXLJob驱动定时推送模式的运行原理13.不活跃用户领取优惠券流程14.热门商品根据用户画像定时推送以及MQ削峰15.营销的四大业务场景MQ削峰方案经验总结接下来实现营销系统四大促销场景的代码初版...当营销系统有了一个促销活动后,而且该促销活动的状态还是启用的,那么就要立即触发对用户的推送。也就是说,创建一个促销活动就推送给所有的用户。..."); } } ...}12.XXLJob驱动定时推送模式的运行原理(1)XXLJob运行原理(2)推送系统首先进行XXLJob的配置(3)在推送系统编写执行任务的Spring...三.热门商品定时推送的业务挑战XXLJob实现的分布式定时调度。(2)详细总结一.优惠活动场景(全量用户推送促销活动)运营开启的优惠活动,可能包括满减活动、积分活动、双⼗⼀活动、会员⽇活动等。...⽐如每⽇的热⻔商品推送、双⼗⼀活动通知、在双⼗⼀开始前每隔3⽇推送⼀份⼉双⼗⼀活动通知等。解决方案:即时推送使用MQ对瞬时高并发调用第三方接口进行削峰填谷,定时推送使用XXLJob实现分布式调度。

    1K00

    一文了解分布式系统ID生成策略

    在分布式系统中,经常需要对大量的数据、消息、http请求等进行唯一标识,例如链路追踪traceId、身份标识号、订单流水号、操作记录流水号、优惠券id等等。...这个时候数据库自增主键已经不能满足需求,需要一个能够生成分布式ID的系统。 分布式ID的特性 全局唯一。不能出现重复的ID,这是最基本的要求。 递增。递增有利于关系数据库索引性能。...ID严格连续自增,可以实现一些对ID有特殊要求的业务。 缺点: 有重复发号的风险,例如MySQL数据库主从切换的场景。 发号性能限制于数据库性能。 强依赖数据库,当数据库异常时整个系统不可用。...6.Tinyid Tinyid是滴滴开源的分布式ID生成方案,开源地址见于参考文档1,只提供基于号段模式来生成ID(加入了双Buffer机制)。...借用未来时间和双Buffer来解决时间回拨与生成性能等问题,同时结合MySQL进行ID分配。 8.Leaf Leaf是美团开源的分布式ID生成方案,开源地址见于参考文档3。

    1.8K10

    RocketMQ实战—8.营销系统业务和方案介绍

    8.XXLJob分布式调度运行原理9.电商营销系统的工程结构10.电商营销系统的营销技术挑战11.少量数据测试版技术方案说明12.第一版全量推送方案的缺陷13.第一版全量发优惠券方案的缺陷14.推送异步化以及千万用户分片...11.少量数据测试版技术方案说明下面先按用户量比较少来设计营销系统,如下所示:12.第一版全量推送方案的缺陷一.直接查询全量用户数据会压垮数据库二.每页查询少则耗时每页查询多则耗内存三.全量遍历用户一用户一消息既耗时又耗网络一...说明三:营销系统会持有一个RocketMQ消费者,专门消费RocketMQ中用户已登录的消息。说明四:当营销系统消费到用户已登录的消息时,会到Redis缓存里查询当前是否有优惠券需要对该用户发券。...也就是判断当前是否有优惠券需要发放 + 该用户还没发放该优惠券 + 优惠券还在有效期范围内。...营销系统会从RocketMQ中消费某用户已经登录的消息,去Redis分布式缓存集群里查询是否有该用户的发券记录。如果有就不需要再发券了,如果没有就需要向该用户发券。

    95400

    【架构实战】延迟任务调度:从定时轮询到时间轮的演进

    一、30万条过期订单的处理事故2020年,我们的优惠券系统上线了一个新功能:限时优惠券,24小时后自动过期。...那天晚上,30万张过期优惠券堆积在系统里,用户拿着"已过期"的优惠券下单,系统没有拦截,导致大量资损。从那以后,我开始认真研究延迟任务的实现方案。...││RedisKeyspace│秒级│高│中│分布式││RocketMQ延迟消息│秒级│高│高│分布式││时间轮│毫秒级│极高│中│高性能││XXL-JOB│分钟级│高│高│分布式│││└───────...解决:使用Redis分布式锁,保证同一任务只被一个实例执行。坑5:延迟时间漂移RedisZSET方案中,系统时钟不同步导致延迟时间偏差。解决:使用NTP同步时钟,或在任务中携带预期执行时间。...七、总结延迟任务方案选型:场景推荐方案简单、低频数据库轮询中等规模、分布式RedisZSET高可靠、分布式RocketMQ延迟消息高性能、单机时间轮综合需求XXL-JOB最佳实践:根据业务规模选择方案做好任务持久化和恢复防止重复执行监控任务执行情况设置合理的重试策略血的教训

    20510

    vivo 全球商城:优惠券系统架构设计与实践

    系统迁移有两种方案:停机迁移和不停机迁移。 我们采用的是不停机迁移方案: 迁移前,运营停止与优惠券相关的后台操作,避免产生优惠券静态数据。 静态数据:优惠券后台生成的数据,与用户无关。...配置当前数据库开关为双写,即线上数据同时写入商城库和优惠券新库。此时服务提供的数据源依旧是商城库。 迁移动态数据。迁完后,验证动态数据迁移准确性。 切换数据源,服务提供的数据源切换到新库。...关闭双写,优惠券系统迁移完成。 迁移后优惠券系统请求拓扑图如下: 三、系统设计 3.1 优惠券分库分表 随着优惠券发放量越来越大,单表已经达到瓶颈。...比如单次发券数量,单次读库数量,发给消息中心的消息体包含的用户数量等,可以控制定向发券的峰值速度和平均速度。 3.2.3 券码兑换 站外营销券的发放方式与其他券不同,通过券码进行兑换。...优惠券的精准触达: 3.4 券和商品之间的关系 优惠券的使用需要和商品关联,可关联所有商品,也可以关联部分商品。为了灵活性地满足运营对于券关联商品的配置,优惠券系统有两种关联方式: a. 黑名单。

    3.3K41

    vivo 全球商城:优惠券系统架构设计与实践

    系统迁移有两种方案:停机迁移和不停机迁移。 我们采用的是不停机迁移方案: 迁移前,运营停止与优惠券相关的后台操作,避免产生优惠券静态数据。 静态数据:优惠券后台生成的数据,与用户无关。...关闭双写,优惠券系统迁移完成。...为了解决这个问题,优惠券采用的是分布式锁方案,分布式锁的实现依赖于Redis。在校验用户领券数量前先尝试获取分布式锁,优惠券发放成功后释放锁,保证用户领取同一张券时不会出现超领。...比如单次发券数量,单次读库数量,发给消息中心的消息体包含的用户数量等,可以控制定向发券的峰值速度和平均速度。 3.2.3 券码兑换 站外营销券的发放方式与其他券不同,通过券码进行兑换。...为了灵活性地满足运营对于券关联商品的配置,优惠券系统有两种关联方式: a. 黑名单。可用商品 = 全部商品 - 黑名单商品。

    2.4K12

    同城外卖 O2O 平台开发:小程序 + APP 业务一体化实践

    从表面上看,用户只是在手机上完成了一次下单操作,但在系统背后,却涉及订单管理、商家管理、骑手调度、支付结算以及实时消息推送等多个服务协同工作。...从用户体验层面来看,用户小程序下单、APP查看订单,常会出现进度不同步、优惠券权益不互通、收货记录丢失等问题;从研发运维层面来讲,双端独立开发会大幅增加代码维护成本,迭代功能需要重复适配两端;从系统性能层面...多端数据实时同步机制基于Redis分布式缓存搭建全局数据同步体系,用户登录状态、收货地址、优惠券、订单进度、收藏商户等数据实时双向同步。...用户在小程序加入购物车、领取优惠券,切换APP可直接复用;APP下单后,小程序可实时查看骑手配送轨迹、订单状态,实现全场景无缝衔接。同时通过分布式锁机制,杜绝多端同时操作引发的重复下单、重复支付问题。...系统通过消息队列异步处理订单创建、支付回调、状态变更等高频请求,配合Redis预扣库存、接口限流策略,有效防止超卖与重复请求。同时依托云端弹性算力,流量峰值自动扩容节点,保障多端用户下单流畅不卡顿。

    21210

    万级QPS背后的秘密:腾讯云文本内容安全高性能架构设计揭秘

    腾讯云文本内容安全产品介绍:点击了解详情 限时优惠活动:立即查看促销价格 一、内容审核的性能挑战有多大? 内容审核不是一个"能跑就行"的服务。...它面临着互联网业务中最苛刻的性能要求: 挑战 说明 超高并发 大型平台峰值QPS可达数万甚至数十万 超低延迟 用户发消息到消息展示之间不能有明显延迟 零容忍的可用性 审核服务一旦宕机,违规内容就会"裸奔..." 突发流量 热点事件或大促活动可导致流量瞬间暴涨数倍 如果审核系统扛不住,要么违规内容趁机漏网,要么正常内容被积压——两者都是灾难。...二、腾讯云TMS高性能架构核心设计 2.1 多集群部署——分布式容灾 腾讯云TMS采用多集群、多地域的分布式部署架构: 每个集群独立运行,互为备份 请求自动就近路由到最近的集群 单集群故障时,流量无感知切换到其他集群...五、数千家企业验证的可靠性 "双11大促期间,我们的评论审核QPS飙升到平时的8倍。腾讯云TMS自动扩容,全程零超时,让我们非常放心。"

    34910

    双11的第14年:进化与回归

    尽管资生堂旗舰店回复称,这是系统故障,为异常订单,但“最低价”的标签已经不再是李佳琦背后主体美ONE公司的杀手锏。...消费者还需要双12吗双十一京东、淘宝未公布GMV,但并不影响双12的备战热情。双11刚刚结束,淘宝就开始紧锣密鼓地筹备双12购物节商家招募工作。...对于消费者来说,消费者还需要双12接力吗?...对于是否需要类似双12等其他购物节,她表示其实满足生活需求就可以,因为已经不再计划囤货了。三口之家的女主人刘靓(化名),平时按需购物,不会特意在双11、12这样的购物节来集中购买。...写在最后:历经14年的发展,中国的双11在世界范围内也已经与美国黑色星期五有齐名之势。美国的黑五起源于1924年,至今有98年的历史,黑五最大的特点是商品价格相当优惠,折扣简单直接。

    39.2K30

    推荐13个牛逼的SpringBoot项目

    系统架构图: 部分页面截图: 扫描下方二维码即可加入星球(今天前20名有优惠): 原价159,今天券后仅需129,后面会逐步涨到299。 只有 20 张优惠券,数量有限,先到先得。...扫描下方二维码即可加入星球(今天前20名有优惠): 原价159,今天券后仅需129,后面会逐步涨到299。 只有 20 张优惠券,数量有限,先到先得。 如果不满意3天内包退。...扫描下方二维码即可加入星球(今天前20名有优惠): 原价159,今天券后仅需129,后面会逐步涨到299。 只有 20 张优惠券,数量有限,先到先得。 如果不满意3天内包退。...ID生成器、分布式限流、手写Mybatis插件、两级缓存提升性能、MQ消息通信、ES商品搜索、OSS服务对接、失败自动重试机制、接口幂等性处理、百万数据excel导出、WebSocket消息推送、用户异地登录检测...扫描下方二维码即可加入星球(今天前20名有优惠): 原价159,今天券后仅需129,后面会逐步涨到299。 只有 20 张优惠券,数量有限,先到先得。 如果不满意3天内包退。

    27910

    中间件之消息队列篇

    中间件之消息队列篇概览 常用消息队列有哪些,引入队列的优缺点 消息队列的发送方式有哪几种,使用场景分别是怎样的?...Kafka是⼀种高吞吐量的分布式发布订阅消息系统,它可以处理大规模的网站中的所有动作流数据(网页浏览,搜索和其他用户的行动),副本集机制,实现数据冗余,保障数据尽量不丢失;支持多个生产者和消费者 缺点...、Ruby、.NET、Java、JMS、C、用于在分布式系统中存储转发消息,在易用性、扩展性、⾼可用性等方面表现不错 缺点:使用Erlang开发,阅读和修改源码难度大 RocketMQ:官方地址,点击即可查看更多...阿里开源的⼀款的消息中间件, 纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应⽤的特点, 性能强劲(零拷⻉技术),支持海量堆积, 支持指定次数和时间间隔的失败消息重发,⽀持consumer...,比如注册成功后通知优惠卷系统发放优惠券 ONEWAY 无需要等待响应 应用场景:主要是⽇志收集,适用于某些耗时非常短,但对可靠性要求并不高的场景, 也就是LogServer, 只负责发送消息,不等待服务器回应且没有回调函数触发

    62110
    领券