首页
精选文章分布式事务查看全文分布式事务是解决分布式场景下数据一致性的问题。二阶段提交 两阶段提交(2PC)是分布式事务的一种实现方案。 两阶段提交协议把分布式事务分成两个过程,分别是准备阶段和提交阶段,准备阶段和提交阶段都是由事务管理器(协调者)发起,资管管理器(事务参与者)接收协调者的指令完成事务的执行动作。 两阶段具体分工如下: 准备阶段:协调者向参与者发起指令,参与者评估自己的状态,如果参与者评估指令可以完成,参与者会写redo或者undo日志(这也是前面提起的Write-Ahead Log的一种),然后锁定资源,执行操作,但是并不提交。 提交阶段:如果每个参与者明确返回准备成功,也就是预留资源和执行操作成功,协调者向参与者发起提交指令,参与者提交资源变更的事务,释放锁定的资源;如果任何一个参与者明确返回准备失败,也就是预留资源或者执行操作失败,协调者向参与者发起中止指令,参与者取消已经变更的事务,执行undo日志,释放锁定的资源。 三阶段提交 三阶段提交是分布式事务的一种实现方案,是两阶段提交的优化。 两阶段存在阻塞问题和一致性问题。 阻塞 两阶段提交中协调者发起的准备指令和提交指令必须收到所有参与者的返回才能决定后续的状态,否则将持续处于阻塞状态,此时占用的资源会被一直锁定,长期占据的资源会对性能有较大的影响。 协调者在执行事务的过程中如果发生故障,则所有的参与者都会陷入阻塞等待后续指令。 不一致 协调者发送提 交指令,部分参与者成功提交了事务,部分参与者未能接受提交指令,此时多个参与者的状态就出现了不一致的情况。 如果部分参与者在接收到提交指令之后发生宕机,而此时协调者也发生了宕机,后续选举出来的协调者的继任者无法确定所有参与者的状态…SPI【Java】查看全文SPI是Java语言中的一种扩展机制。面向的对象的设计里,基于接口编程是模块之间交互的标准方式,模块之间使用接口而不是特定的实现类可以更好的实现扩展型。在模块进行装配的时候才确定接口的真正类型。 为了避免模块装配时硬编码指定实现类,java spi提供了到接口实现的路由功能,将装配的控制权移到了程序之外,使用配置来进行实现。 SPI全称是 service provider interface,SPI的实现一般位于独立的 JAR 包,在程序调用时候,可以实现自动的路由。 在jdk6里面引进了新的特性ServiceLoader。ServiceLoader的主要作用是用来装载一系列的service provider。 ServiceLoader可以通过配置文件来装载指定的service provider。服务的提供者提供了服务接口的若干实现,只需要在jar包的META-INF/services/目录创建一个以服务接口命名的文件,文件配置了实现该服务接口的具体实现类。 外部程序装配模块的时候,通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。 SLF4J SLF4J(Simple logging Facade for Java)不是一个真正的日志实现,而是一个日志的抽象层( abstraction layer),该框架允许在实际使用的时候装配任意一个实现了抽象层的日志类库。 使用 SLF4J 的过程中上层应用只需要面向SLF4J接口编程,不需要关心具体的底层的日志框架,实现了上层应用和底层日志框架的解耦。 目前主流的日志框架例如log4j, logback都实现了…Percolator查看全文Percolator算法是Google发明的一种分布式事务处理算法,用于在大规模数据存储系统中实现实时更新和查询,具有高可用性和高性能的特点。Percolator算法的核心思想是将大规模数据集合拆分成多个子集,每个子集被存储在不同的节点上,每个节点只负责处理自己所拥有的数据子集,然后使用两阶段提交协议来保证所有节点的数据一致性。具体来说,Percolator算法分为两个阶段: 1.写阶段(Write Phase):客户端向Percolator系统提交一个事务请求,系统先在一个全局性的写缓存(Write Buffer)中记录该请求,然后将该请求转发到对应的数据分片节点上去处理。 2.提交阶段(Commit Phase):在所有分片节点上处理完毕之后,将写缓存中记录的所有写操作和其它数据变更操作通过Gossip协议(一种点对点信息交换协议)进行广播,以通知其它节点更新自己的本地数据副本。每个节点根据全局的日志来进行操作,并通过Paxos算法(一种分布式一致性算法)来保证数据一致性。如果所有节点都执行成功,则事务提交成功,否则回滚操作。 Percolator算法的优点在于其高效的事务处理方式和高可用性。相比传统的分布式事务处理方式,Percolator算法将大事务拆分成小事务进行处理,可以避免数据争用和死锁等问题,同时也具有高扩展性和高可用性的特点。 Percolator算法目前已经应用于Google的多个大型数据存储系统中,例如Google搜索、Google+、Google AdWords等。 Percolator的实现使用了Bigtable和Timestamp Oracle。其中Bigtable主要用于数据以及事务信息的存储… |
热门分类开源Golang消息队列JavaJavascriptLinuxMysqlNLPPHP事务内存管理分布式理论分类存储常用存储开源软件操作系统画图网络编程数据库算法虚拟化前端存储理论常用算法微服务数据结构算法应用计算机原理中间件共识算法分布式分治动态规划容器并发排序架构组件绘图工具网络协议编程语言理论算法思想树缓存架构C++字符串算法工程思想搜索
算法题库精选内容 |