pre-commit

分布式事务(1)---2PC和3PC原理

非 Y 不嫁゛ 提交于 2020-08-13 07:07:32
分布式事务(1)---2PC和3PC原理 分布式事物基本理论 :基本遵循CPA理论,采用柔性事物特征,软状态或者最终一致性特点保证分布式事物一致性问题。 分布式事物常见解决方案 : 2PC两段提交协议 3PC三段提交协议(弥补两端提交协议缺点) TCC或者GTS(阿里) 消息中间件最终一致性 使用LCN解决分布式事物,理念“LCN并不生产事务,LCN只是本地事务的搬运工”。 一、两阶段提交(2PC) 两阶段提交又称 2PC ,2PC是一个非常经典的 强一致、中心化的原子提交协议 。 这里所说的中心化是指协议中有两类节点:一个是中心化 协调者节点 (coordinator)和 N个参与者节点 (partcipant)。 两个阶段 :第一阶段: 投票阶段 和第二阶段: 提交/执行阶段 。 举例 订单服务A ,需要调用 支付服务B 去支付,支付成功则处理购物订单为待发货状态,否则就需要将购物订单处理为失败状态。 那么看2PC阶段是如何处理的 1、第一阶段:投票阶段 第一阶段主要分为3步 1) 事务询问 协调者 向所有的 参与者 发送 事务预处理请求 ,称之为 Prepare ,并开始等待各 参与者 的响应。 2) 执行本地事务 各个 参与者 节点执行本地事务操作,但在执行完成后并 不会真正提交数据库本地事务 ,而是先向 协调者 报告说:“我这边可以处理了/我这边不能处理”。. 3)

SVNServer常用HOOK

£可爱£侵袭症+ 提交于 2020-08-06 04:19:04
svn server 可通过hook的方式 来自定义SVN 行为控制,这里列几个常用的。 1.限制单个提交文件大小不超过100MB Pre-commit hook @echo off setlocal enabledelayedexpansion set REPOS=%1 set TXN=%2 rem MAX_SIZE value is byte set MAX_SIZE=104857600 for /f "delims=" %%a in ('svnlook changed -t %TXN% %REPOS%') do ( set var=%%a for /f %%i in ('svnlook filesize -t %TXN% %REPOS% !var:~4!') do ( if %%i gtr %MAX_SIZE% ( set /a size=%%i/1024 echo file size upto limit 100MB. File: !var:~4! Size: !size!KB 1>&2 exit 1 ) ) ) exit 0 2.可修改提交记录 Pre-revision property change hook SET REPOS="%1" SET REV="%2" SET USER="%3" SET PROPNAME="%4" SET ACTION="%5" IF

HotStuff共识算法详解

☆樱花仙子☆ 提交于 2020-08-04 21:05:20
1. 前言 HotStuff提出了一个三阶段投票的BFT类共识协议,该协议实现了safety、liveness、responsiveness特性。通过在投票过程中引入门限签名实现了 O ( n ) 的消息验证复杂度。Hotstuff总结出对比了目前主流的BFT共识协议,构建了基于经典BFT共识实现pipeline BFT共识的模式。 HotStuff是基于View的的共识协议,View表示一个共识单元,共识过程是由一个接一个的View组成。在一个View中,存在一个确定Leader来主导共识协议,并经过三阶段投票达成共识,然后切换到下一个View继续进行共识。假如遇到异常状况,某个View超时未能达成共识,也是切换到下一个View继续进行共识。 Basic hotStuff基础版本的共识协议,一个区块的确认需要三阶段投票达成后再进入下一个区块的共识。pipeline hotStuff是流水线的共识协议,提高了共识的效率。 2. 协议内容 2.1. 协议基础 2.1.1. 名词解释 BFT: 全称是Byzantine Fault tolerance, 表示系统可以容纳任意类型的错误,包括宕机、作恶等等 SMR: 全称是State Machine Replication, 一个状态机系统,系统的每个节点都有着相同的状态副本 BFT SMR protocol:

分布式事务

旧时模样 提交于 2020-07-29 09:37:13
   众所周知,数据库能实现 本地事务 ,也就是在 同一个数据库中 ,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了 本地事务 ,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求,这种事务即为“分布式事务”。那么在目前数据库不支持跨库事务的情况下,我们应该如何实现分布式事务呢?本文首先会为大家梳理分布式事务的基本概念和理论基础,然后介绍几种目前常用的分布式事务解决方案。废话不多说,那就开始吧~ 1 什么是事务?    事务由一组操作构成,我们希望这组操作能够全部正确执行,如果这一组操作中的任意一个步骤发生错误,那么就需要回滚之前已经完成的操作。也就是同一个事务中的所有操作,要么全都正确执行,要么全都不要执行。 2 事务的四大特性 ACID    说到事务,就不得不提一下事务著名的四大特性。 原子性   原子性要求,事务是一个不可分割的执行单元,事务中的所有操作要么全都执行,要么全都不执行。 一致性   一致性要求,事务在开始前和结束后,数据库的完整性约束没有被破坏。 隔离性   事务的执行是相互独立的,它们不会相互干扰,一个事务不会看到另一个正在运行过程中的事务的数据。 持久性   持久性要求,一个事务完成之后,事务的执行结果必须是持久化保存的。即使数据库发生崩溃

纯干货 | 细说分布式事务两阶段提交

本小妞迷上赌 提交于 2020-07-28 18:27:18
事务的概念在 这篇文章 中描述过,在分布式系统中,读写位于多个节点的数据,如果依旧想保证ACID特性,就必须实现分布式事务。而其实现关键则是适当的提交协议,目前最简洁,且使用最广泛的无疑是两阶段提交协议(2PC)。 1.实现分布式事务关键组件 单机系统通过 事务管理器(transaction manager,TM) 实现本地事务。分布式系统中,需要协调多个节点的事务管理器,共同提交成功或失败,因此需要 事务协调者(transaction coordinator,TC) 。一个分布式事务管理器,可以粗略地划分为这两个子系统。这两个子系统根据自己在事务执行中扮演的角色,也可称之为 参与者 与 协调者 。 本地事务管理器负责本机事务并发控制和异常恢复等功能,事务协调者负责开启事务,将事务划分为多个子事务分发到相应的节点执行,并协调事务完成(一起提交成功或失败)。在实现中,TM和TC可以实现在同一个进程中,也可以部署在不同的节点。 2.经典两阶段提交协议 两阶段提交的流程比较简单。当分布式事务T执行完成,即事务执行的各节点都告知协调者TC,事务已经执行完成,TC便开启两阶段提交流程。 Phase 1 Prepare: 1.TC写本地日志,并持久化。TC向所有参与者发送Prepare T消息。 2.各参与者TM收到Prepare T消息,根据自身情况,决定是否提交事务。 如果决定提交

分布式理论,架构设计(一)---- 分布式理论

喜夏-厌秋 提交于 2020-07-27 22:40:18
文章内容输出来源:拉勾教育Java高薪训练营。 本篇文章是 分布式理论 学习课程中的一部分笔记。 分布式系统架构回顾 概念:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,这些服务器可能放在不同的机柜中,也可能在不同的机房中,甚至分布在不同的城市。 特点 (1)分布性(2)对等性(3)并发性(4)缺乏全局时钟(5)故障总是会发生 分布式架构发展大致过程 https://mp.weixin.qq.com/s/bFMObUDJI1zwChirDK6RKQ 面临的问题 通信异常 网络本身的不可靠性,因此每次网络通信都会伴随着网络不可用的风险(光纤、路由、DNS等硬件设备或系统的不 可用),都会导致最终分布式系统无法顺利进行一次网络通信,另外,即使分布式系统各节点之间的网络通信能够 正常执行,其延时也会大于单机操作,存在巨大的延时差别,也会影响消息的收发过程,因此消息丢失和消息延迟 变的非常普遍。 网络分区 网络之间出现了网络不连通,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干个 孤立的区域,分布式系统就会出现局部小集群,在极端情况下

Commit git hook to repo

為{幸葍}努か 提交于 2020-06-16 04:58:11
问题 I have a problem with configuration tslint and pre-commit hook. The point is that i created tsconfig file which work's well. And added bash script which not allow me to commit if tslint return any bugs. Problme is that i need commit this hook file for other people in my team. This should automatly replace pre-commit hook from .git folder. I just found a bash script which check my hooks in 'hooks' folder and replace them in .git folder. How can I commit this and make this 'automatically' for

各模块常用BAPI与TCODE对应关系

白昼怎懂夜的黑 提交于 2020-05-06 08:21:25
以下摘自微博 共产主义: https://www. cnblogs.com/communist/p /7941060.html 有些订单SAP提供了Function和BAPI两种方式创建、修改订单,我们建议使用BAPI方式,BAPI会有一些逻辑的检查。 MM模块 MM01、MM02 BAPI_MATERIAL_SAVEDATA 创建物料主数据 BAPI_MATERIAL_SAVEREPLICA 物料视图的扩充 BAPI_GOODSMVT_CREATE 创建物料凭证 GOODSMVT_CODE货物移动代码表:T158G 01 MB01 02 MB31 03 MB1A 04 MB1B 05 MB1C 06 MB11 07 MB04 BAPI_GOODSMVT_CANCEL 冲销物料凭证 BAPI_GOODSMVT_GETDETAIL 显示物料异动明细 BAPI_GOODSMVT_GETITEMS 显示物料文件的明细清单 WS_REVERSE_GOODS_ISSUE 冲销交货单的过账发货 BAPI_RESERVATION_CREATE1 创建预留 BAPI_RESERVATION_CHANGE 修改和删除预留 BAPI_CLASS_CREATE 建立类别 BAPI_CLASS_CHANGE 变更类别 BAPI_CLASS_DELETE 删除类别 BAPI_CLASS_GETDETAIL

An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)

橙三吉。 提交于 2020-04-29 18:10:28
01 Mar 2018 Piotr Nowojski ( @PiotrNowojski ) & Mike Winters ( @wints ) This post is an adaptation of Piotr Nowojski’s presentation from Flink Forward Berlin 2017 . You can find the slides and a recording of the presentation on the Flink Forward Berlin website. Apache Flink 1.4.0, released in December 2017, introduced a significant milestone for stream processing with Flink: a new feature called TwoPhaseCommitSinkFunction ( relevant Jira here ) that extracts the common logic of the two-phase commit protocol and makes it possible to build end-to-end exactly-once applications with Flink and a

git代码规范检测工具

隐身守侯 提交于 2020-04-24 19:43:50
cd /path/to/project/.git/hooks mv pre-commit.sample pre-commit vim pre-commit 删除原有的东西,将下面脚本复制进去 #!/bin/sh file=$(git diff --name-only HEAD) bin/phpcs --config-set default_standard PSR2 for i in $file;do bin/phpcs -n $i done; 保存 来源: oschina 链接: https://my.oschina.net/owenzhang24/blog/3827211