分布式(8)

目录

36.什么是TCC?

37.分布式系统中常用的缓存方案有哪些?

38.分布式系统缓存的更新模式?

39.分布式缓存的淘汰策略?

40.Java中定时任务有哪些?如何演化的?


36.什么是TCC?

TCC(Try  Confirm  Cancel)又被称补偿事务,TCC与2PC的思想很相似,事务处理流程也很相似,但2pc是应用在DB层面,TCC则可以理解为在应用层面的2PC,是需要我们编写业务逻辑来实现。

TCC他的核心思想是:针对每个操作都要注册一个与其对应的确认(Try)和补偿(Cancel)。

还拿下单扣库存解释他的三个操作:

Try阶段:下单时通过Try操作区扣库存预留资源。

Confirm阶段:确认执行业务操作,在只预留的资源基础上,发起购买请求。

Cancel阶段:只要涉及到相关业务中,有一个业务方预留资源未成功,则取消所有业务资源的预留请求。

TCC的缺点:

应用侵入性强:TCC由于基于在业务层面,至使每个操作都需要有try,Confirm,Cancel三个接口。

开发难度大:代码开发量很大,要保证数据一致性Confirm和cancel接口还必须实现幂等性。

37.分布式系统中常用的缓存方案有哪些?

客户端缓存:页面和浏览器缓存,APP缓存,H5缓存,localStorage和sessionStorage

CDN缓存:

内存存储:数据的缓存

内容分发:负载均衡

Nginx缓存:本地缓存,外部缓存

数据库缓存:持久层缓存(Mybatis,hibernate多级缓存),MySQL查询缓存

操作系统缓存:Page  Cache,Buffer   Cache

38.分布式系统缓存的更新模式?

Cache  Aside模式

1.读取失效:Cache数据没有命中,查询DB,成功后把数据写入缓存

2.读取命中:读取Cache数据

3.更新:把数据更新到DB,失效缓存

Read/Write  Througn模式

缓存代理了DB读取,写入的逻辑,可以把缓存看成唯一的存储

Write   Back模式

这种模式下所有的操作都走缓存,缓存里的数据再通过异步的方式同步到数据库里面。所以系统的写性能能够大大提升了。

分布式系统缓存淘汰策略

缓存淘汰,又成为缓存逐出,是指在存储空间不足的情况下,缓存系统主动释放一些缓存对象获取更多的存储空间。一般LRU用的比较多,可以重点了解一下。

FIFO  先进先出是一种简单的淘汰策略,缓存对象以队列的形式存在,如果空间不足,就是放队列头部的对象。一般是链表实现。

LRU  最近最久未使用,这种策略是根据访问的时间先后来进行淘汰的,如果空间不足,会释放最久没有访问的对象(上次访问时间最早的对象)。比较常见的是通过有线队列来实现。

LFU  最近最少使用,这种策略根据最近访问的频率来进行淘汰,如果空间不足,会释放最近访问频率最低的对象。这个算法也是用优先队列实现的比较常见。

更进一步的谈谈Redis缓存淘汰的8个模式,可以参考上文Redis问答部分。

39.分布式缓存的淘汰策略?

分布式系统缓存淘汰策略

缓存淘汰,又成为缓存逐出,是指在存储空间不足的情况下,缓存系统主动释放一些缓存对象获取更多的存储空间。一般LRU用的比较多,可以重点了解一下。

FIFO  先进先出是一种简单的淘汰策略,缓存对象以队列的形式存在,如果空间不足,就是放队列头部的对象。一般是链表实现。

LRU  最近最久未使用,这种策略是根据访问的时间先后来进行淘汰的,如果空间不足,会释放最久没有访问的对象(上次访问时间最早的对象)。比较常见的是通过有线队列来实现。

LFU  最近最少使用,这种策略根据最近访问的频率来进行淘汰,如果空间不足,会释放最近访问频率最低的对象。这个算法也是用优先队列实现的比较常见。

更进一步的谈谈Redis缓存淘汰的8个模式,可以参考上文Redis问答部分。

40.Java中定时任务有哪些?如何演化的?

Timer

解释:1000ms是延迟启动时间,2000ms是定时任务周期,每2s执行一次

ScheduledExecutorService

解释:延迟1秒启动,每隔1秒执行一次,是前一个任务开始时就开始时间间隔,但是会等上一个任务结束再开始下一个

SpringTask

解释:

1.task1是隔5秒执行一次,{秒}{分}{时}{日期}{月}{星期}

2.task2是延迟1秒,每隔1秒执行一次

Quartz

quartz是一个开源的分布式调度库,他基于Java实现

1.Job表示一个任务,要执行的具体内容。

2.JobDetail表示一个具体的可执行的调度程序,Job是这个可执行调度程序索要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。

3.Trigger代表一个调度参数的配置,什么时候去调。

4.Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

低代码技术:颠覆数据孤岛的技术利器

在当今数据驱动的世界中,数据的价值无可忽视。然而,很多组织面临一个普遍的问题,即数据孤岛。数据孤岛指的是不同部门或系统之间无法有效共享和集成数据的情况。这限制了组织在数据驱动的决策和创新方面的能力。然而,低代码平台的…

雍禾植发成毛发行业标杆!雍禾医疗获“年度医疗大健康消费企业”

近期,以“新视野 新链接”为主题的2023 EDGE AWARDS全球创新评选榜单正式发布。该评选由钛媒体发起,聚焦大健康产业,由权威行业专家、王牌分析师、专业投资机构、用户代表共同评审,兼顾综合专业性、影响力、创新性三大维度评选而出…

2024 年加密货币领域需要注意的 5 大网络安全威胁

加密货币世界主要存在于数字领域,面临着众多不断变化的网络威胁,这些威胁所带来的风险,给个人和企业组织造成了重大损失。 本文将研究2023年年加密货币领域的一些关键网络安全趋势,这些趋势预计将持续到 2024 年,并对…

为什么大学c语言课不顺便教一下Linux,Makefile

为什么大学c语言课不顺便教一下Linux,Makefile,git,gdb等配套工具链呢? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「Linux的资料从专业入门到高级教程工具包」&…

kubeadm来快速搭建一个K8S集群

二进制搭建适合大集群,50台以下的主机 kubeadm更适合中下企业的业务集群 我们采用了二进制包搭建出的k8s集群,本次我们采用更为简单的kubeadm的方式来搭建k8s集群。 二进制的搭建更适合50台主机以上的大集群,kubeadm更适合中小型企业的集群…

Matplotlib基础

目录: 一、绘制函数图像:二、创建图形对象:三、绘制多子图: 一、绘制函数图像: from matplotlib import pyplot as plt import numpy as np #生成(-50,50)的数组 x np.arange(-50,50) #计算因…

SSM的校园二手交易平台----计算机毕业设计

项目介绍 本次设计的是一个校园二手交易平台(C2C),C2C指个人与个人之间的电子商务,买家可以查看所有卖家发布的商品,并且根据分类进行商品过滤,也可以根据站内搜索引擎进行商品的查询,并且与卖…

山海鲸可视化软件的优势:数据整合、可视化与个性化定制

随着科技的快速发展,企业数字化转型已成为必然趋势。而对于一些本身没有开发优势或非技术型企业,数字化产品的选择就成为重中之重。作为山海鲸可视化软件的开发者,我们深知这一点,对于企业来说,能选择一个产品一定要有…

【代数学作业5】理想的分解:高斯整数环中理想的结构,并根据其范数和素数的性质进行分解

【代数学作业5】理想的分解 写在最前面题目1相关概念题解分析1. ( 1 3 ) ( 1 − 3 ) (1 \sqrt{3}) (1 - \sqrt{3}) (13 ​)(1−3 ​)2. ( 4 3 ) ≠ ( 4 − 3 ) (4 \sqrt{3}) \neq (4 - \sqrt{3}) (43 ​)​(4−3 ​)3. ( 33 , 7 − 3 3 ) ( 4 3 3 ) (33, 7 - 3\sq…

开源大模型应用开发

1.大语言模型初探 ChatGLM3简介 ChatGLM3-6B 是一个基于 Transformer 的预训练语言模型,由清华大学 KEG 实验室和智谱 AI 公司于 2023 年共同训练发布。该模型的基本原理是将大量无标签文本数据进行预训练,然后将其用于各种下游任务,例如文…

边坡安全监测预警系统——高效率

安装边坡安全监测预警系统的原因是多方面的,涉及到社会效益、经济效益和环境效益。随着国家基础设施建设的快速发展,边坡安全监测预警系统的需求越来越迫切。 边坡安全监测预警系统对于保障人民生命财产安全具有重要意义。在山区、丘陵地带,边…

1.C++语言的编译器及编译流程

1.C编译器 编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。以下是一些主流的C编译器及其简要用法: GNU Compiler Collection (GCC):’ GCC原名GNU C Compiler,后来逐渐支持更多的语言编译(C、Fortran、…

js文件上传 分片上传/断点续传/极速秒传

(极速秒传)利用md5判断上传的文件是否存在 MD5信息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。 每一个文件都会生成…

电磁波的信号加载说明

电磁波的信号加载电磁波(Electromagnetic wave)是由同相振荡 且互相垂直的电场与磁场在空间中衍生发射的振荡粒子波,是以波动的形式传播的电磁场,具有波粒二象性,其粒子形态称为光子,电磁波与光子不是非黑即白的关系,而…

Kubernetes 核心实战之一(精华篇 1/2)

文章目录 1,资源创建方式1.1 yaml1.2 命令行 2,NameSpace命名空间2.1 命令行创建ns2.2 yaml 创建ns 3,Pod3.1 命令行 创建pod3.2 yaml 创建pod3.3 可视化界面 创建3.3.1 Pod nginx3.3.2 Pod nginx tomcat3.3.3 Pod 2ngnix 1,资源…

日文游戏翻译 ,如何做好本地化翻译?

相关调查显示,日本游戏占据全球游戏市场约20%的份额,其销量一直都不错。市场上对于日语游戏翻译的需求也很大。那么,针对日文游戏翻译,如何做好本地化翻译? 首先、做好语言和文化上的本地化。这要求译员从翻译的文本到…

一篇关于大模型在信息抽取(实体识别、关系抽取、事件抽取)的研究进展综述

信息提取(IE)旨在从普通自然语言文本中提取结构化知识(如实体、关系和事件)。最近,生成式大型语言模型(LLMs)展现了在文本理解和生成方面的卓越能力,使得它们能够广泛应用于各种领域…

VINS-MONO拓展1----手写后端求解器,LM3种阻尼因子策略,DogLeg,构建Hessian矩阵

文章目录 0. 目标及思路1. 非线性优化求解器2. 基于VINS-MONO的Marginalization框架构建Hessian矩阵2.1 estimator.cpp移植2.2 solve.cpp/preMakeHessian()2.3 solve.cpp/makeHessian() 3. solve.cpp/solveLinearSystem()求解正规方程4. 更新状态5. 迭代求解6. EVO评估结果7. 待…

Certum ev多域名证书的优势

多域名证书作为一种能够为多个域名提供安全保护的证书类型,越来越受到企业的青睐。Certum作为一个成立了二十几年的CA认证机构,旗下的EV多域名SSL证书产品已经保护了多家企业的网站。Certum旗下的EV多域名证书作为一种能够为多个域名提供安全保护的证书类…

《Linux C编程实战》笔记:实现自己的myshell

ok,考完试成功复活 这次是自己的shell命令程序的示例 流程图: 关键函数 1.void print_prompt() 函数说明:这个函数打印myshell提示符,即“myshell$$”. 2.void get_input(char *buf) 函数说明:获得一条指令&#…