Java阶段五Day18

news2024/9/29 9:32:29

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.coloradmin.cn/o/837582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity3D应用案例系列】Unity3D中实现文字转语音的工具开发

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在开发中,会遇到将文字转语音输出的需求&#xff0…

[每周一更]-(第57期):用Docker、Docker-compose部署一个完整的前后端go+vue分离项目

文章目录 1.参考项目2.技能点3.GO的Dockerfile配置后端的结构如图Dockerfile先手动docker调试服务是否可以启动报错 4.Vue的Dockerfile配置前端的结构如图nginx_docker.confDockerfile构建 5.docker-compose 整合前后端docker-compose.yml错误记录(1)ip端…

宇树Unitree Z1机械臂使用教程

宇树Unitree Z1机械臂使用教程 作者:Herman Ye Galbot Auromix Auromix是一个机器人爱好者组织,欢迎参与我们Github上的开源项目 更新日期:2023/08/04 注意:此文档在该日期下测试有效。 以下内容参考宇树官方的Z1 Docs。 由宇树…

idea调节文字大小、日志颜色、git改动信息、单击打开代码覆盖原标签问题

idea调节菜单栏文字大小: 调节代码文字大小: 按住ctrl滚动滑轮可以调节代码文字大小: ctrl单击打开代码覆盖原标签问题: idea在控制台对不同级别的日志打印不同颜色 : “grep console”插件 点击某一行的时候&#x…

docker-compose --version报错

在部署docker-compose后,查看版本时有如下报错: 解决方法: 解决方法: 直接在release中下载对应的linux发行版【docker-compose-linux-x86_64】 https://github.com/docker/compose/releases/tag/v2.18.1 下载完后将软件上传至 Linux的【/usr/local/bin】…

高忆管理:教你一招短线选股法?

投资者在进行短线买卖时,需求把握一些可行的股票战略,以进步成功率。本文将从商场状况、技能剖析、基本面剖析和资金流向四个视点,教你一招短线选股法。 一、商场状况 在短线买卖中,行情是至关重要的。商场上有“牛市”和“熊市”…

【前端实习生备战秋招】—HTML面试题汇总,建议收藏

【前端实习生备战秋招】—HTML面试题汇总,建议收藏 文章目录 【前端实习生备战秋招】—HTML面试题汇总,建议收藏1. src和href的区别2. 对HTML语义化的理解3. DOCTYPE(⽂档类型) 的作⽤4. script标签中defer和async的区别5. 常⽤的meta标签有哪些6. HTML5…

14-3_Qt 5.9 C++开发指南_QUdpSocket实现 UDP 通信_UDP 单播和广播

文章目录 1.UDP通信概述2. UDP 单播和广播2.1 UDP 通信实例程序功能2.2 主窗口类定义和构造函数2.3 UDP通信的实现2.4 源码2.4.1 可视化UI设计2.4.2 mainwindow.h2.4.3 mainwindow.cpp 1.UDP通信概述 UDP(User Datagram Protocol,用户数据报协议)是轻量的、不可靠的…

hcip的mgre和ospf实验

题目 拓扑图 一、配置环回和IP地址 R1 < Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]sysname r1 [r1]int g0/0/1 [r1-GigabitEthernet0/0/1]ip add 64.1.1.1 24 Aug 4 2023 18:56:07-08:00 r1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol…

python 常见数据类型和方法

不可变数据类型 不支持直接增删改 只能查 str 字符串 int 整型 bool 布尔值 None None型特殊常量 tuple 元组(,,,)回到顶部 可变数据类型&#xff0c;支持增删改查 list 列表[,,,] dic 字典{"":"","": ,} set 集合("",""…

mysql函数及用法

目录 一、前言 二、函数 2.1五大聚合函数 2.2 日期函数 3.字符串函数 三. 总结&#xff1a; 一、前言 mySQL 是一种常见的关系型数据库管理系统&#xff0c;提供了大量的函数可以帮助开发者有效地操作和管理数据库。mySQL根据这些函数将数据更好的进行操作&#xff0c;从…

局域网部署,用WorkPlus视频会议保密又安全

用户采用私有化部署视频会议软件的情况主要有以下几种因素&#xff1a; 1. 针对机密性高的会议&#xff1a;如果有涉及高度机密的商业谈判或敏感信息交流等重要会议&#xff0c;政府、军工、企业等用户会选择局域网内部署视频会议软件&#xff0c;以保证信息安全。 2. 频繁进…

【云原生】k8s中Contrainer 生命周期回调/策略/指针学习

个人主页&#xff1a;征服bug-CSDN博客 kubernetes专栏&#xff1a;kubernetes_征服bug的博客-CSDN博客 目录 1 容器生命周期 2 容器生命周期回调/事件/钩子 3 容器重启策略 4 自定义容器启动命令 5 容器探针 1 容器生命周期 Kubernetes 会跟踪 Pod 中每个容器的状态&am…

【大数据】LPG日志采集方案(官网入门案例)

文章目录 1. LPG简介2. 安装3. 测试日志方案的效果3.1. 测试1&#xff1a;Promtail监控/var/log目录的变化3.2. 测试2&#xff1a;Grafana可视化查看日志3.3. 测试3&#xff1a;可以预见部署Spring Boot程序的日志也可以被Grafana查看3.4. 踩坑记录 4. 官方入门案例介绍4.1. 获…

收藏!9款好用的前端可视化工具推荐

“可视化开发”是上个世纪90年代软件界最大的热点之一。 当初&#xff0c;可视化开发主要专注于用户界面的构建&#xff0c;让开发者通过简单的拖拽操作&#xff0c;快速搭建用户界面&#xff0c;一些成熟产品更是实现了“所见即所得”。在与当时最先进的高级编程语言相比较时&…

基于freertos的温湿度蓝牙系统

前言&#xff1a;本项目主要是基于freertos的小项目&#xff0c;目的是为了巩固近期学习的知识&#xff0c;功能较简单&#xff0c;可自行扩充。 一、项目基本架构 项目基本功能&#xff1a;通过STM32单片机的freertos操作系统&#xff0c;将温湿度数据显示在oled屏幕上&#…

单片机复位电路分析

来分析一下这个电路&#xff1a; 首先这里面有电容&#xff0c;所以是一个动态电路。哈哈哈 假设左上角的电压源是5V的代号为VOLT。 可以知道电容capacitor C1左边的电压也是5V&#xff0c;电容中间隔着一个绝缘体&#xff0c;所以不导电&#xff0c; 这个时候电流无法通过…

【深度学习_TensorFlow】激活函数

写在前面 上篇文章我们了解到感知机使用的阶跃函数和符号函数&#xff0c;它们都是非连续&#xff0c;导数为0的函数&#xff1a; 建议回顾上篇文章&#xff0c;本篇文章将介绍神经网络中的常见激活函数&#xff0c;这些函数都是平滑可导的&#xff0c;适合于梯度下降算法。 写…

【Spring Boot】Thymeleaf模板引擎 — 表达式的语法

表达式的语法 模板的主要作用是将后台返回的数据渲染到HTML中。那么Thymeleaf是如何解析后台数据的呢&#xff1f;接下来从变量、方法、条件判断、循环、运算&#xff08;逻辑运算、布尔运算、比较运算、条件运算&#xff09;方面学习Thymeleaf表达式支持的语法。 1.赋值和拼…

eclipse Java Editor Templates

​ Window - Preferences - Java - Editor - Templates ​ date ${currentDate:date(yyyy.MM.dd)}