Java阶段五Day18

Java阶段五Day18

文章目录

  • Java阶段五Day18
    • 缓存方案
        • 面试题整理
    • 项目功能
      • 新增审核
        • 业务流程图
      • 账户
        • 账户表格和ER图
        • 账号服务功能
        • 账号的创建
        • 当前实现功能时序图(对应全景图)
    • 抢单相关时序图
      • 供应商和需求单
    • 附录
      • 布隆过滤器

缓存方案

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bFcLjafu-1691152268571)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801090222363.png)]

面试题整理

目标:

  • 整理相关问题的话术,碰到问题

思路: 概念 是什么 原因 为什么 解决方案 如何解决

  • 缓存雪崩

    • 概念: 缓存在长期应用的系统中,存储了大量的高并发访问数据,一旦这些数据突然批量消失,访问吞吐的并发,到达数据库,导致数据库崩溃
    • 原因:
      • 大量数据超时时间固定,相同的
      • redis分片宕机(数据分布式)短时间造成雪崩,但是不会持续,也不会总是交给代码处理,因为高并发高吞吐的redis架构是cluster,保证集群高可用,数据的高可靠性
    • 解决方案:
      • 超时时间不要固定
      • 第二种代码不提供解决方案,最多降级处理(不重要的数据降级)
  • 缓存穿透

    • 概念: 缓存没有命中数据,同时数据库也没有命中数据,缓存穿透就出现了
    • 原因:
      • 故意造成,高并发请求,携带无效数据
      • 错误,误差
    • 解决方案:
      • 错误误差: 通过日志,监控
      • 故意: 引入过滤器(布隆过滤器),拦截根本不存在的数据.或者对于数据库查询为null的(临时数据),也存储到缓存(redis可能会因为大量故意访问,出现大量null数据)
  • 缓存击穿

    • 概念: 对于cache-aside缓存方案中,命中返回缓存,没命中查询数据库.如果没命中的数据是热点数据(并发高,访问高)可能造成大量线程在缓存都没有命中数据,都到数据库查询数据
    • 原因: 高并发访问热点数据,缓存方案cache-aside 造成的逻辑问题
    • 解决方案: 分布式锁.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k66ymG52-1691152268572)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801092300545.png)]

    穿透和击穿的区别

    1. 穿透是缓存没有,数据库也没有,击穿缓存没有,但是数据库有
    2. 都是高并发造成的影响,穿透更多的情况是大量不同数据,击穿针对少量(相同)业务数据(热点)
  • 一致性

    • 批量一致性
      • 批量: 一次性处理大批数据
      • 解决方案: 预热同步.同步刷新
    • 增量一致性
      • 增量: 一次处理1条,几条数据,相比于批量百万,千万级别数据量,非常小的数据量
  • 增量一致性场景: redis存储200万数据,有一条数据存储了一个电脑的商品信息,后台对这个电脑数据做了变更,原价在数据库200元-500元.

    • redismysql同步改(写,先写谁,后写谁)
      • 先写redis(200-500) 再写数据库(200-500)——问题数据库写失败
      • 先写数据库(200-500)再写redis(200-500)——处理事务问题
    • redis先删,mysql
      • 造成高并发下的数据不一致问题(因为cache-aside缓存方案)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7OzfJkj7-1691152268572)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801093935104.png)]

    • 采用双删(延迟双删

    延迟双删和双删的区别,就是第二次删除redis的时候,是否要先等待1~3秒

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TsXtdYZM-1691152268573)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801094155129.png)]

项目功能

新增审核

业务流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tb7EQoQE-1691152268573)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801101639854.png)]

账户

账户表格和ER图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQQq0jPD-1691152268574)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801112055557.png)]

账号服务功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4O2cmEUc-1691152268574)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801112722398.png)]

账号的创建

  • 什么时候调用账号创建? 审核通过创建
  • 调用方式:dubbo
  • account provider角色 在account-server 有对外暴露的接口
  • adapter层 实现这个接口,并且server启动时,支持dubbo运行

账号dubbo远程调用,检查调整的内容

第一步: 确定角色 谁是provideradmin serveraccount-server 谁是consumer worker-admin

第二步: dubbo配置

  1. 依赖(当前在源代码基础上实现的配置,依赖一般不需要检查)
  2. applicationContext
    1. dubboreference dubboservice 代替原来自动配的注解 @DubboReference@DubboService
    2. 其他标签都对应的yaml文件配置
  3. provider 提供实现(accountRpcService 有没有添加@Service
  4. consumer 注入使用(@Autowired

当前实现功能时序图(对应全景图)

https://sparrowzoo.feishu.cn/docx/My4mdlLuMovmQixHko4c6qXbnYc?from=from_copylink

抢单相关时序图

供应商和需求单

https://sparrowzoo.feishu.cn/docx/My4mdlLuMovmQixHko4c6qXbnYc?from=from_copylink

需求单是供应商通过远程调用提供的接口推送过来的

现在没有这个流程,在数据库直接准备可以抢的需求单

数据request_order表格 修改grab_status 抢单状态0 还没人抢 1 已经被抢了,version 0 1 表示版本(防止抢单多线程并发,导致抢单 多个师傅抢到一个订单)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4nN7rMv-1691152268575)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801163439780.png)]

附录

布隆过滤器

布隆工作流程(filter

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HzgSLQh4-1691152268576)(E:/TeduWork/notes-2303/%25E8%25AF%25BE%25E5%25A0%2582%25E7%25AC%2594%25E8%25AE%25B0/Day18/assets/image-20230801090931138.png)]

布隆过滤器缺点

  • 批量新增到布隆,也可以增量新增,不能删除(重新清空预热)
  • 判断存在的概率,有可能误判的。比如100万条,判断100万条存在。200条实际是不存在的,即:误差0.02%

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/52948.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MS5182N/MS5189N——16bit、4/8 通道、200KSPS、 SAR 型 ADC

产品简述 MS5182N/MS5189N 是 4/8 通道、 16bit 、电荷再分配逐次 逼近型模数转换器。采用单电源供电。 MS5182N/MS5189N 内 部集成无失码的 16 位 SAR ADC 、低串扰多路复用器、内部低 漂移基准电压源 ( 可以选择 2.5 或 4.096 V) 、温度传感器、可选 择的单极…

Android 10 解决摄像头预览与实际方向不符问题

问题: 在Android 10中,旋转屏幕方向后,摄像头采集画面的方向,和我们预览的方向是不一致的,该怎么去解决? 当我们旋转屏幕默认为竖屏的时候,进行摄像头旋转采集的数据一般是横向的,而…

RTT(RT-Thread)线程管理(1.2W字详细讲解)

目录 RTT线程管理 线程管理特点 线程工作机制 线程控制块 线程属性 线程状态之间切换 线程相关操作 创建和删除线程 创建线程 删除线程 动态创建线程实例 启动线程 初始化和脱离线程 初始化线程 脱离线程 静态创建线程实例 线程辅助函数 获得当前线程 让出处…

骨传导耳机怎么样?盘点五款适合室外佩戴的骨传导耳机

不知道各位出去玩的时候,有没有觉得外面的世界太喧嚣,需要一副耳机开启自己的小天地,相信有很多人都有这种习惯,在路上戴着耳机享受属于自己的那一片天地,可是市面上种类这么多耳机,该如何选择呢&#xff0…

IDEWA项目实践——mybatis的一些基本原理以及案例

系列文章目录 IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍_intellij 创建scala IDEA项目实践——动态SQL、关系映射、注解开发 文章目录 系列文章目录 1.MyBatis …

制造型企业如何实现车间设备生产数据的实时采集?需要5G网络吗?

引言 在制造业数字化转型的浪潮下,实时采集车间设备生产数据变得尤为重要。工业边缘网关HiWoo Box作为一款专为工业应用而设计的智能设备,具备工业级设计和多种联网方式,为制造型企业提供了高性能的车间设备数据实时采集解决方案。本文将重点…

自定义el-slider 滑块的样式

最近用到了element组件中的滑块,翻看了官网和网上一些案例,感觉和我要的样式都不太一样,下面记录一下我用到的两种自定义滑块。 效果图 第一种自定义画过的间断点样式 起始样式 滑动的样式 第二种自定义拖动滑块的样式 起始样式 滑动的样…

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查 数据库操作 MySQL数据库pymysql Django开发操作数据库更简单,内部提供了ORM框架。 安装第三方模块 pip install mysqlclientORM可以做的事: 1、创建、修改、删除数据库中的…

用指定的字符将数组中各元素填充至指定长度(填充在左侧或右侧)numpy.char.ljust();numpy.char.rjust()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 用指定的字符将数组中各元素 填充至指定长度(填充在左侧或右侧) numpy.char.ljust();numpy.char.rjust() 下列代码最后输出的结果是? import numpy as np s np.array(…

【阵列信号处理】空间匹配滤波器、锥形/非锥形最佳波束成形器、样本矩阵反演 (SMI) 研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【LeetCode 75】第十九题(724)寻找数组的中心下标

目录 题目: 示例: ​分析: 代码运行结果: 题目: 示例: 分析: 给一个数组,让我们找出一个下标,在这个下标左边的元素总和等于这个下标右边的元素总和. 我们可以把整个数组的总和求出来,然后再从左往右遍历一次数组,遍历的同时将遍历过的数累加记录到一个变量中.若遍历到一…

【css】css设置表格样式-边框线合并

<style> table, td, th {border: 1px solid black;//设置边框线 }table {width: 100%; }td {text-align: center;//设置文本居中 } </style> </head> <body><table><tr><th>Firstname</th><th>Lastname</th><t…