组件(lvs,keeplive,orm,mysql,分布式事务)

news2024/11/25 14:45:26

lvs  


      LVS 已经集成到Linux内核系统中,ipvsadm 是 LVS 的命令行管理工具。
    目前有三种 IP 负载均衡技术( VS/NAT 网络地址转换 、VS/TUN  IP 隧道技术实现虚拟服务器 和 VS/DR  直接路由);
    八种调度算法:轮询 round robin,加权轮询调度,最小连链接读,加权最少链接调度,目标地址散列,源地址散列。

 keeplive


keeplive c语言编写路由软件,基础linux 提供负载和高可用功能
    VRRP实现了高可用性 协议,VRRP是路由器故障转移的基础。是一个基于 VRRP 协议来实现的服务高可用方案,可以利用其来避免 IP 单点故障,一般与其它负载均衡技术(如 LVS 、HAProxy 、Nginx)一起工作来达到集群的高可用。
    Keepalived 工作在 TCP/IP 参考模型的第三、第四和第五层,也就是网络层、传输层和应用层
       在网络层,运行着四个重要的协议:互连网协议 IP、互连网控制报文协议 ICMP、地址转换协议 ARP 以及反向地址转换协议 RARP。
  Keepalived 在网络层采 用的最常见的工作方式是通过ICMP协议向服务器集群中的每个节点发送一个 ICMP 的数据包(类似于 ping 实现的功能),如果某个节点没有返回响应数据包,那么 就认为此节点发生了故障,Keepalived 将报告此节点失效,并从服务器集群中剔除故障节点。
在传输层,提供了两个主要的协议:传输控制协议 TCP 和用户数据协议 UDP。传输控制协议 TCP 可以提供可靠的数据传输服务,IP 地址和端口,代表一个 TCP 连接的 一个连接端。
要获得 TCP 服务,须在发送机的一个端口上和接收机的一个端口上建立连接,而 Keepalived 在传输层就是利用 TCP 协议的端口连接和扫描技术来 判断集群节点是否正常的。
比如,对于常见的 Web 服务默认的 80 端口、SSH 服务默认的 22 端口等,Keepalived 一旦在传输层探测到这些端口没有响应数据返回, 就认为这些端口发生异常,然后强制将此端口对应的节点从服务器集群组中移除。
 在应用层,可以运行 FTP、TELNET、SMTP、DNS 等各种不同类型的高层协议,Keepalived 的运行方式也更加全面化和复杂化,用户可以通过自定义 Keepalived 的工作方式,
例如用户可以通过编写程序来运行 Keepalived,而 Keepalived 将根据用户的设定检测各种程序或服务是否允许正常,如果 Keepalived 的检测结果 与用户设定不一致时,Keepalived 将把对应的服务从服务器中移除。

orm 


  jdbc    
1.加载驱动class.forname("com.mysql.jbdc.Drive");
2.通过驱动管理类获取数据库连接 Connect connect=       DriverManager.getConnect("jdbc:mysql://localhost:3306/test", "root", "123")
3.获取预处理的statement   preparedStatement = connection.prepareStatement(sql);
4.向数据库发出sql执行查询,查询出结果集  resultSet =  preparedStatement.executeQuery();


 Hibernate、mybits 
//1.加载classpath路径下的配置文件/hibernate.cfg.xml
    InputStram  in  =Resource.getResourceAsStram("mybits-config.xml");
//2. 根据加载配置文件产生的输入流穿件一个SqlsessionFactory
    SqlsessionFactory  sessionFactory=new SqlSessionFacotyBuilder().build(in);
//3.根据SqlSessionFactory创建Sqlsession
             SqlSession  session = sesssionFactory.openSesion();
//4.创建并启动事务Transation
//5.提交事务
//6.关闭session/sessionFactory


总结:通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出SqlSessionFactory,
然后,SqlSessionFactory的实例直接开启一个SqlSession,再通过SqlSession实例获得Mapper对象并运行Mapper映射的SQL语句,完成对数据库的CRUD和事务提交,之后关闭SqlSession。

mysql  架构


主从:读写分离;半同步复制,默认是异步复制,全同步复制
MHA( master High availabilty) 高可用;一主多从,至少三台,自动故障转移, 半同步复制
mgr集群;MySQL Group Replication(mysql 组复制),是MySQL官方于2016年推出的一个全新的高可用扩展解决方案。是一种基于paxos协议的状态机复制
    主主,一主多从,多主多从

分布式事务

前提

各系统的所有操作应当保证幂等。

两段提交(2PC)


               角色:协调者和参与者;协调者向参与者进行预提交,收到回应commit;

流程图

 

二阶段提交看似能够提供原子性的操作,但它存在着严重的缺陷

  • 网络抖动导致的数据不一致: 第二阶段中协调者参与者发送commit命令之后,一旦此时发生网络抖动,导致一部分参与者接收到了commit请求并执行,可其他未接到commit请求的参与者无法执行事务提交。进而导致整个分布式系统出现了数据不一致。

  • 超时导致的同步阻塞问题: 2PC中的所有的参与者节点都为事务阻塞型,当某一个参与者节点出现通信超时,其余参与者都会被动阻塞占用资源不能释放。

  • 单点故障的风险: 由于严重的依赖协调者,一旦协调者发生故障,而此时参与者还都处于锁定资源的状态,无法完成事务commit操作。虽然协调者出现故障后,会重新选举一个协调者,可无法解决因前一个协调者宕机导致的参与者处于阻塞状态的问题。

三段提交(3PC)


               3PC比2PC多了一个询问阶段,也就是准备、预提交、提交

三段提交(3PC)是对两段提交(2PC)的一种升级优化,3PC2PC的第一阶段和第二阶段中插入一个准备阶段。保证了在最后提交阶段之前,各参与者节点的状态都一致。同时在协调者和参与者中都引入超时机制,当参与者各种原因未收到协调者的commit请求后,会对本地事务进行commit,不会一直阻塞等待,解决了2PC的单点故障问题,但3PC 还是没能从根本上解决数据一致性的问题。

 

TCC(Try-Confirm-Cancel)又被称补偿事务

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

参考:https://www.cnblogs.com/chengxy-nds/p/12465423.html

Seata 是一款阿里开源的分布式事务解决方案

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

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

相关文章

解决ComposerStaticInit类重复加载问题

Tp5中composer安装phpoffice后报错 Cannot declare class Composer\Autoload\ComposerStaticInit6c9266e89aa536667bf36f59ad8e6e6b, because the name is already in use 错误原因: 使用ThinkPHP5框架的项目,在引用某些包的时候,可能会通过其它包&…

java判断字符串是否和空字符串(““)相等、是否和空引用(null)相等,比较顺序不同导致出现死代码(Dead code)

我在用Java实现需求的时候,用到了字符串跟空字符串(“”)比较,跟空引用null比较,两个比较语句的顺序不同,一个顺序出现了死代码(Dead code)。 下面这个代码片段,字符串li…

【Rust 日报】2023-07-30 Lemmy v0.18.3发布

Lemmy v0.18.3发布 Lemmy 与 Reddit、Lobste.rs 或 Hacker News 等网站类似:你可以订阅你感兴趣的论坛,发布链接和讨论,然后进行投票或评论。但在幕后,Lemmy 和他们不同 —— 任何人都可以很容易地运行一个服务器,所有…

数字化转型才是王道!零售行业的关键五大指标都在这里了,快收藏

新零售是指结合线上和线下的销售模式,利用数字化技术和数据分析手段,通过线上平台吸引消费者,在线下店铺提供更加个性化和便捷的购物体验。 新零售不再将线上和线下视为两个独立的销售渠道,而是将其整合为一个完整的销售生态系统…

RabbitMQ 教程 | 第4章 RabbitMQ 进阶

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

Navicat for Mysql8.xx 字段注释中文乱码解决方

问题摘要: Navicat 中表描述中文均正常,只有字段注释中文乱码,原因是系统本身编码(命令行chcp)中为936(GBK)而不是65001(UTF8)造成的 使用场景: Navicat for MySQL&am…

10分钟掌握seaborn绘制多子图

公众号:尤而小屋作者:Peter编辑:Peter 大家好,我是Peter~ 本文介绍如何使用seaborn绘制多子图 In [1]: import matplotlib.pyplot as plt %matplotlib inlineimport seaborn as sns import plotly_express as pximport warnin…

ELK高级搜索(一)

文章目录 ELK搜索1.简介1.1 内容1.2 面向 2.Elastic Stack2.1 简介2.2 特色2.3 组件介绍 3.Elasticsearch3.1 搜索是什么3.2 数据库搜索3.3 全文检索3.4 倒排索引3.5 Lucene3.6 Elasticsearch3.6.1 Elasticsearch的功能3.6.2 Elasticsearch使…

详解AMQP协议以及JAVA体系中的AMQP

目录 1.概述 1.1.简介 1.2.抽象模型 2.spring中的amqp 2.1.spring amqp 2.2.spring boot amqp 1.概述 1.1.简介 AMQP,Advanced Message Queuing Protocol,高级消息队列协议。 百度百科上的介绍: 一个提供统一消息服务的应用层标准高…

Vector - CAPL - 诊断模块函数(设置和获取)

目录 CanTpGetRxIdentifier CanTpGetTxIdentifier CanTpSetRxIdentifier CanTpSetTxIdentifier 代码示例 CanTpGetPadding & CanTpSetPadding 代码示例 CanTpGetAcceptOtherMode & CanTpSetAcceptOtherMode 代码示例 对于使用OSEK.dll文件调用发送诊断数据和接…

电子技术的发展

本资料仅用于学习和讨论如有侵权请反馈 1.1 第一台只能存储640M 什么是模拟信号: 2.1 把声波转化为电信号 2.2 微音器输出的某一段信号的波形 3、最简单有个蜂鸣器,再好一点有个喇叭 4、人说话的声音是个很复杂的声音 5、嵌入式实时操作系统: 6、结构到函数 6.1 学习环境…

【Java】快速入门JVM

文章目录 1. JVM简介2. 类加载简介3. 类加载的过程4. 双亲委派5. GC垃圾回收6. JVM的回收方式7. 分代回收 1. JVM简介 JVM(Java虚拟机)是一个名字为Java的进程,是用于执行Java程序的虚拟机。 JVM会从操作系统中申请一大块内存空间,又把这个内存空间划分…

我的会议(我的审批,会议签字附源码)

目录 前言: 3.我的审批: 3.1实现的特色功能: 3.2显示的效果 3.3思路: 3.4寻找相关的案例或者自己使用JavaScript去写一个类似的功能 3.5具体的步骤: 3.5.1添加静态的jsp代码(我的审批数据的显示&…

投稿注意!APA格式超全示例详解,原本28天能录用,可能要拖延2个月

为什么同一本期刊有论文28天录用,有论文10个月才录用?结合近期征稿的这本经管类SSCI期刊,小编(Unionpub学术)整理了部分影响录用的几个因素,准备提交此期刊的作者可自查参考下: (参…

【100天精通python】Day20:文件及目录操作_os模块和os.psth模块, 文件路径拼接,目录操作

目录 专栏导读 1 文件的目录操作 os模块的一些操作目录函数​编辑 os.path 模块的操作目录函数 2 相对路径和绝对路径 3 路径拼接 4 判断目录是否存在 5 创建目录、删除目录、遍历目录 专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12…

Segment Anything Model (SAM)

论文地址:https://arxiv.org/pdf/2304.02643.pdf 项目地址:Segment Anything | Meta AI (segment-anything.com) SAM贡献: 1.SA任务:提出了提示图像分割任务,在给定任何图像分割提示的情况下返回一个有效的分割掩码…

JS/node:Blob、ArrayBuffer和Buffer

前端较少涉及对二进制数据的处理,但即便如此,我们偶尔总能在角落里看见它们的身影,今天我们就来聊一聊JS的二进制家族:Blob、ArrayBuffer和Buffer(Buffer由Node.js提供) 概述 Blob: 前端的一个专门用于支…

el-checkbox设置溢出...隐藏后,选框和文字垂直方向不居中了

解决方式设置vertical-align:middle样式属性 ::v-deep .el-checkbox__label {font-size: 18px;margin-bottom: 5px;width: 100%;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;vertical-align: middle;//可以实现复选框和文字垂直方向居中}

2023.8.1号论文阅读

文章目录 MCPA: Multi-scale Cross Perceptron Attention Network for 2D Medical Image Segmentation摘要本文方法实验结果 SwinMM: Masked Multi-view with SwinTransformers for 3D Medical Image Segmentation摘要本文方法实验结果 MCPA: Multi-scale Cross Perceptron Att…

Redis 高可用:主从复制、哨兵模式、集群模式

文章目录 一、redis高可用性概述二、主从复制2.1 主从复制2.2 数据同步的方式2.2.1 全量数据同步2.2.2 增量数据同步 2.3 实现原理2.3.1 服务器 RUN ID2.3.2 复制偏移量 offset2.3.3 环形缓冲区 三、哨兵模式3.1 原理3.2 配置3.3 流程3.4 使用3.5 缺点 四、cluster集群4.1 原理…