一.Actor介绍 Actor是一种并发模型,是共享内存并发模型的替代方案. 共享内存模型的缺点: 共享内存模型使用各种各样的锁来解决状态竞争问题,性能低下且让编码变得复杂和容易出错. 共享内存受限于单节点的服务器资源限制. Actor模型的优点: 线程之间以消息进行通信,消息按顺序单线程处理,不存在状态竞争. 以消息方式通信,可以方便的组建集群. 把State和Behavior绑定,能更好的控制状态. 名词解释: Mailbox:可以理解为先入先出队列,负责接收和缓存送达的消息. State:…
一.Event(事件) Event是Actor产生的记录状态变化的日志,由StateId(状态Id),UID(幂等性控制),TypeCode(事件类型),Data(事件数据),Version(事件版本),Timestamp(时间戳)组成. 持久化:Ray提供Mongodb.Postgresql.Sqlserver.Mysql的拓展支持,可以单独使用其中一个,也可以混合使用. EventBus:当Event持久化之后进行分发以驱动后续业务流程.同步到读库以及自定义消费者,目前支持RabbitMQ和…
Ray是UC Berkeley AMP实验室新推出的高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,具有比Spark更优异的计算性能. Ray目前还处于实验室阶段,最新版本为0.2.2版本.虽然Ray自称是面向AI应用的分布式计算框架,但是它的架构具有通用的分布式计算抽象.本文对Ray进行简单的介绍,帮助大家更快地了解Ray是什么,如有描述不当的地方,欢迎不吝指正. 一.简单开始 首先来看一下最简单的Ray程序是如何编写的. # 导入ray,并初始化执行环…
高性能最终一致性框架Ray之基本概念原理 一.Actor介绍 Actor是一种并发模型,是共享内存并发模型的替代方案. 共享内存模型的缺点: 共享内存模型使用各种各样的锁来解决状态竞争问题,性能低下且让编码变得复杂和容易出错. 共享内存受限于单节点的服务器资源限制. Actor模型的优点: 线程之间以消息进行通信,消息按顺序单线程处理,不存在状态竞争. 以消息方式通信,可以方便的组建集群. 把State和Behavior绑定,能更好的控制状态. 名词解释: Mailbox:可以理解为先入先出队列…
高性能环形队列框架 Disruptor Disruptor 是英国外汇交易公司LMAX开发的一款高吞吐低延迟内存队列框架,其充分考虑了底层CPU等运行模式来进行数据结构设计 (mechanical sympathy) ,能比传统队列方法延迟低三个数量级,吞吐量提高八倍.其中很多设计思想值得借鉴学习,本篇将核心介绍该队列的高性能设计方法,并对核心源码进行解读. Disruptor 性能基准测试 以下是一组官方提供的与ArrayBlockQueue对比的性能基准测试   Nehalem 2.8Ghz…
前言 对于分布式事务,常用的解决方案根据一致性的程度可以进行如下划分: 强一致性(2PC.3PC):数据库层面的实现,通过锁定资源,牺牲可用性,保证数据的强一致性,效率相对比较低. 弱一致性(TCC):业务层面的实现,通过预留或锁定部分资源,最后通过确认或取消操作完成事务的处理.比如A向B转款500元,A账号会冻结500元,其他操作正常,B接收转款时,也不能直接入账,而是将500元放到预留空间,只有经过确认之后,A才正式扣钱,B才正式入账: 如果取消把A的500块解冻,B也不会入账. 最终一致性…
CAP,BASE和最终一致性是NoSQL数据库存在的三大基石.而五分钟法则是内存数据存储了理论依据.这个是一切的源头. CAP C: Consistency 一致性 A: Availability 可用性(指的是快速获取数据) P: Tolerance of network Partition 分区容忍性(分布式) 10年前,Eric Brewer教授指出了著名的CAP理论,后来Seth Gilbert 和 Nancy lynch两人证明了CAP理论的正确性.CAP理论告诉我们,一个分布式系统不…
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.预备知识:数据一致性 关于数据一致性的文章,园子里已经有很多了,如果你还不了解,那么可以通过以下的几篇文章去快速地了解了解,有个感性认识即可. (1)左正,<保证分布式系统数据一致性的6种方案> (2)成金之路,<分布式系统的数据一致性解决方案> (3)E_Star,<分布式环境下数据一致性的设计总结> (4)Itegel,<分布式事务?No,最终一致性> 必须要了解的点:ACID.CAP.B…
各种形态的分布式事务 分布式事务有多种主流形态,包括: 基于消息实现的分布式事务 基于补偿实现的分布式事务(gts/fescar自动补偿的形式) 基于TCC实现的分布式事务 基于SAGA实现的分布式事务 基于2PC实现的分布式事务 之所以有这么多形态,是因为任何事情都没有银弹,只有最合适当前场景的解决方案. 这些形态的原理已经在很多文章中进行了剖析,用"分布式事务"关键字就能搜到对应的文章,本文不再赘述这些形态的原理,并将重点放在如何根据业务选择对应的分布式事务形态上. 何时选择单机事…
各种形态的分布式事务 分布式事务有多种主流形态,包括: 基于消息实现的分布式事务 基于补偿实现的分布式事务 基于TCC实现的分布式事务 基于SAGA实现的分布式事务 基于2PC实现的分布式事务 这些形态的原理已经在很多文章中进行了剖析,用“分布式事务”关键字就能搜到对应的文章,本文不再赘述这些形态的原理,并将重点放在如何根据业务选择对应的分布式事务形态上. 何时选择单机事务? 这个相信大家都很清楚,在条件允许的情况下,我们应该尽可能地使用单机事务,因为单机事务里,无需额外协调其他数据源,减少了网…