一、Actor介绍

Actor是一种并发模型,是共享内存并发模型的替代方案。

共享内存模型的缺点:
  1. 共享内存模型使用各种各样的锁来解决状态竞争问题,性能低下且让编码变得复杂和容易出错。

  2. 共享内存受限于单节点的服务器资源限制。

Actor模型的优点:
  1. 线程之间以消息进行通信,消息按顺序单线程处理,不存在状态竞争。

  2. 以消息方式通信,可以方便的组建集群。

  3. 把State和Behavior绑定,能更好的控制状态。

名词解释:

Mailbox:可以理解为先入先出队列,负责接收和缓存送达的消息。

State:状态信息,比如用户的账户余额信息。

Behavior:负责按顺序处理Mailbox中的消息,比如扣款消息、到账消息,查询余额消息等。

二、Orleans介绍

Orleans是.Net基金会维护的一个Actor跨平台开源框架,独创Virtual Actor概念,支持分布式集群。

项目地址:http://dotnet.github.io/orleans/

有以下优点:
  1. 以对象方式访问Actor,符合面向对象的使用习惯。

  2. 提出Virtual Actor概念,可以通过ID访问细粒度的Actor,能承载数千万的Actor对象。

  3. 支持Stateful,能替代缓存层来对内存状态进行更精确的控制,减少数据库的压力。

  4. 高性能,单个Actor能支持10万+的QPS。

  5. 激活透明,Actor对访问者是永久存在的,但也提供完整的生命周期控制,拓展方便。

  6. 原生支持集群,但Actor位置透明,访问者不需要关注Actor运行在那个节点,集群会根据节点情况进行负载调度。

  7. 提供了多种集群支持,集群部署非常方便,支持AdoNet,Zookeeper,K8s,SF等。

  8. 提供了完整的单元测试解决方案,方便进行单元测试。

  9. 提供了完善的监控工具,能够详细的监测各种指标。

  10. 基于.net core,支持各种平台。

名词解释:

Silo:集群中的一个节点,负责维护当前节点的Grains。

SiloGateway:每个节点都存在,负责维护集群状态和转发请求。

Grain:相当于Actor,通过ID+Interface来识别。

Client:用来访问集群中的Grain的客户端工具。

三、Ray介绍

Ray是基于Actor模型构建的基于事件朔源的分布式最终一致性高性能框架,把传统的复杂的分布式事务拆分为由事件驱动的线性处理流程的一种方式,性能和吞吐更高,响应更快。

Ray提供了状态维护、事件发布/订阅、幂等性控制、分布式事务等模块,并内置了分布式ID、分布式锁、分布式权重锁等服务。

Ray提供卓越的性能,单个Actor能达到20000/s的事件。

项目地址:https://github.com/RayTale/Ray

名词解释:

  1. 状态(State):内存聚合数据。

  2. 事件(Event):状态变化的信息。

  3. EventBus:提供事件发送和事件消费订阅。

  4. 幂等性:保证事件送达多次不会导致状态异常,例如上图的A的转账事件多次送达B,但是B只会增加一次余额。

Ray的最终一致性转账原理

A用户调用A账户Actor的转账方法进行转账,A账户Actor根据内存状态进行余额校验,如果余额不足,则直接返回失败原因,如果校验成功则产生一个转账Event(记录目标账户Id、转账金额、剩余余额)并持久化,然后修改内存状态和发送到EventBus。EventBus一个订阅者根据事件信息修改读库中A账户的余额和往账单表中插入一条转账账单,另外一个订阅者根据事件信息调用B账户Actor的到账方法,B账户Actor会产生一个到账Event(记录到账金额、FromId、剩余余额)并持久化,然后修改内存状态和发送到EventBus,EventBus的一个订阅者根据事件信息修改读库中B账户的余额和往账单表中插入一条到账账单。

框架Ray的更多相关文章

  1. 学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。

    学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端 from:https://baijia.baidu.com/s?id=1587367874517247282&wfr ...

  2. 解析分布式应用框架Ray架构源码

    摘要:Ray的定位是分布式应用框架,主要目标是使能分布式应用的开发和运行. Ray是UC Berkeley大学 RISE lab(前AMP lab) 2017年12月 开源的新一代分布式应用框架(刚发 ...

  3. 高性能分布式执行框架——Ray

    Ray是UC Berkeley AMP实验室新推出的高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,具有比Spark更优异的计算性能. Ray目前还处于实验室阶 ...

  4. 高性能最终一致性框架Ray之基本概念原理

    一.Actor介绍 Actor是一种并发模型,是共享内存并发模型的替代方案. 共享内存模型的缺点: 共享内存模型使用各种各样的锁来解决状态竞争问题,性能低下且让编码变得复杂和容易出错. 共享内存受限于 ...

  5. 高性能最终一致性框架Ray之基本功能篇

    一.Event(事件) Event是Actor产生的记录状态变化的日志,由StateId(状态Id),UID(幂等性控制),TypeCode(事件类型),Data(事件数据),Version(事件版本 ...

  6. 取代 Python 多进程!伯克利开源分布式框架 Ray

    Ray 由伯克利开源,是一个用于并行计算和分布式 Python 开发的开源项目.本文将介绍如何使用 Ray 轻松构建可从笔记本电脑扩展到大型集群的应用程序. 并行和分布式计算是现代应用程序的主要内容. ...

  7. 使用DataFlow表达ControlFlow的一些思考

    一.控制流 从接触面向过程语言开始,使用控制流编程的概念已是司空见惯. if (condition) { // do something } else { // do something else } ...

  8. 伯克利推出世界最快的KVS数据库Anna:秒杀Redis和Cassandra

    天下武功,唯快不破. 伯克利 RISE 实验室推出了最新的键值存储数据库 Anna,提供了惊人的存取速度.超强的伸缩性和史无前例的一致性保证.Jeff Dean 说,当一个系统增长到十倍规模时,就需要 ...

  9. 安娜Anna:世界最快的超级伸缩的KVS, 秒杀Redis

    伯克利 这个大学在计算机学术界.工业界的地位举足轻重,其中的AMP实验室曾开发出了一大批大获成功. 对计算机行业产生深远影响的分布式计算技术,包括 Spark.Mesos.Tachyon 等.作为AM ...

随机推荐

  1. codeforces467-A水题

    题目链接:http://codeforces.com/problemset/problem/467/A A. George and Accommodation time limit per test ...

  2. 使用<label>标签修改input[type="checkbox"]的样式

    因为<label>的特性有两点 : ①不呈现任何效果, ②用户点击该标签, 浏览器能自动将焦点转移到相关的表单控件上. <form> <input type=" ...

  3. echarts 更改tooltip提示框CSS样式

    最近 做项目,用过echarts,发现tooltip提示z-index级别很高,想更改下,看了下文档:https://www.echartsjs.com/zh/option.html#tooltip. ...

  4. 实验吧——忘记密码了(vim备份文件,临时文件(交换文件))

    题目地址:http://ctf5.shiyanbar.com/10/upload/step1.php 前些天突然发现个游戏,于是浪费了好多时间,终于还是忍住了,现在专心学习,从今天开始正式写些学习笔记 ...

  5. php封装协议的两道题

    这几天终于刷完了自己说是要刷完的那几道题,赶紧写几篇博客记录.. 1.  先看看这个网站:https://blog.csdn.net/qq_41289254/article/details/81388 ...

  6. 剑指:最小的k个数

    题目描述 输入 n 个整数,找出其中最小的 K 个数.例如输入 4,5,1,6,2,7,3,8 这 8 个数字,则最小的 4 个数字是 1,2,3,4. 解法 解法一 利用快排中的 partition ...

  7. vue用async、await实现同步请求

    以下是vue method的demo: loadTableData : async function() { var reses = await $.ajax({ type:'post', url:' ...

  8. windows校验文件的值

    Windows校验文件值的三种方式 win键+R键输入cmd调出命令行 查看MD5值: certutil -hashfile 文件名 MD5 查看 SHA1 certutil -hashfile 文件 ...

  9. 【转载】QQ炫舞手游自制谱子教程(星动模式)

    第一步:计算ET和BPM: 抄送原作者部落链接:https://buluo.qq.com/p/detail.html?bid=368006&pid=981862-1529828677& ...

  10. Matplotlib 绘制定制的直方图

    1.普通风格 代码 import numpy as np import matplotlib.pyplot as plt rng = np.random.RandomState(27) x = rng ...