高并发解决方案之actor——第一节

author author     2022-08-24     644

关键词:

还在为状态的并发控制而痛苦吗?
 
还在因为数据库瓶颈而痛苦吗?
 
还在因为缓存的实时性控制而痛苦吗?
 
还在为了想分布式,但又不知道怎么下手而痛苦吗?
 
Actor欢迎你!!!
 
一、什么是Actor?
 
Actor提供了一个简单的方式来构建分布式大规模的应用程序,而不需要学习和应用复杂的并发性控制。
  
  java和Scala的框架有Akka,.NET平台有Orleans,Akka.net,Service Fabric。以上几个框架都使用简单,易于上手,只需要稍微熟悉下就能开码。
 
Actor是分布式存在的内存状态及单线程计算单元,一个Id对应的Actor只会在集群种存在一个(有状态的 Actor在集群中一个Id只会存在一个实例,无状态的可配置为根据流量存在多个),使用者只需要通过Id就能随时访问不需要关注该Actor在集群的什么位置。单线程计算单元又保证了消息的顺序到达,不存在Actor内部状态竞用问题。
 
  这个特性让你可以很容易的开发一套高并发分布式的高拓展系统,而且不用关注并发和分布式控制。
 
 
Actor是永久存在的,一段时间没有消息,Actor会失活,从内存中释放,但只要有消息就会马上激活,但激活过程对访问者透明。
 
  这个特性能很好的利用系统资源,而且提供了很友好的拓展,开发者可以在Actor失活时做一些自定义操作(例如保存状态),在激活时也可以做自定义操作(例如加载状态)
 
 
Actor和DDD,CQRS,Event Soucing设计模型有天然的融合性,基于Actor可以很好的进行以上实践.
 
最近项目中使用Actor和DDD,CQRS,Event Soucing设计模型开发了一套实时交易系统(无事务无锁),团队计划开源底层框架。但在发布框架前先做一些预热,会先不定期的更新一些博文,从各个角度来介绍Actor及实践案例。

高并发场景之rabbitmq篇

...发场景可以选择的一些方案,传送门:高并发场景之一般解决方案但是也发现了一些问题,比如集群下使用ConcurrentQueue或加锁都不能解决问题,后来采用Redis队列也不能完全解决问题,因为使用Redis要自己实现分布式锁 这次... 查看详情

基于actor的并发方案

共享可变状态的问题Actor模型Actor系统定义Actor消息处理副作用非类型化异步和非阻塞创建一个Actor发送消息消息应答问询Ask机制有状态的Actor小结译者注:本文原文标题:《TheNeophyte’sGuidetoScalaPart14:TheActorApproachtoConcurrency》,作... 查看详情

大流量高并发量网站的之解决方案

...方法:扩充内存4、内存带宽二、大流量高并发量网站的解决方案1、确认服务器硬件是否足够支持当前的流量。2、使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库。3、禁止外部... 查看详情

分布式高并发下actor模型(代码片段)

...sp;      一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递。使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争。处理各种锁的问题是让人十分头痛的一件事。  传... 查看详情

scala-unit7-scala并发编程模型akka

...a时spark的底层通信框架,Hadoop的底层通信框架时rpc。  并发的程序编写很难,但是Akka解决了spark的这个问题。  Akka构建在JVM平台上,是一种高并发、分布式、并且容错的应用工具包;  Akka使用Scala语言编写,同时它提供... 查看详情

高并发高负载解决方案之----------数据库分库分表的应用场景及解决方案

  数据库分库分表的应用场景及解决方案   现实业务场景中,为了保障客户体验并满足业务的线性增长。会对数据量巨大,且业务会始终进行的产品进行分表分库策略。但是如何合理的根据业务采取争取的分表分库... 查看详情

第一节:并发与锁

1并发多用户数据库管理系统的一个主要任务是对并发(concurrency)进行控制,即对多个用户同时访问同一数据进行控制。当缺乏有效的并发控制时,修改数据的操作就不能保证正常,从而危害数据完整性。管理数据并发的方法是... 查看详情

scala多线程之actor并发编程模型

首先描述一下线程的状态。线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞;650)this.width=650;"src="https://s3.51cto.com/wyfs02/M02/9A/CE/wKiom1la-XfzTou1AAEW73xPJpo922.png-wh_500x0-wm_3-wmp_... 查看详情

动态规划-第一节3:动态规划之使用“找零钱”问题说明最优子结构如何解决(代码片段)

注意:本文参考labuladong总结链接文章目录(1)什么是最优子结构(2)暴力解法(2)带有表的递归解法(3)动态规划解法前文说过,动态规划所要解决的问题必须具有最优子结构,什么... 查看详情

高并发系统之限流特技

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,... 查看详情

java高并发之同步异步

1、概念理解:2、同步的解决方案:1).基于代码synchronized关键字 修饰普通方法:作用于当前实例加锁,进入同步代码前要获得当前实例的锁。 修饰静态方法:作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁。&... 查看详情

高并发多线程安全之原子性问题cas机制及问题解决方案(代码片段)

多线程编程之java内存模型(JMM)与可见性问题前言在java内存模型中,对多线程间交互,涉及到原子性问题、可见性问题、以及有序性问题;这篇文章主要讲解的是多线程高并发的原子性问题,以及解决原子性问题、... 查看详情

scala学习并发编程模型akka(代码片段)

...Actor的聊天模型    正文一,Akka简介  写并发程序很难。程序员不得不处理线程、锁和竞态条件等等,这个过程很容易出错,而且会导致程序代码难以阅读、测试和维护。Akka是JVM平台上构建高并发、分布式和容... 查看详情

并发之痛thread,goroutine,actor

...ing-model-thread-goroutine-actor/先梳理下两个概念,几乎所有讲并发的文章都要先讲这两个概念:并发(concurrency) 并发的关注点在于任务切分。举例来说,你是一个创业公司的CEO,开始只有你一个人,你一人分饰多角,一会做产... 查看详情

jmeter之仿真高并发测试(集合点)

...启动了就会直接发送测试请求;--如果要模拟在一瞬间高并发量测试的时候,需要调高线程数量,这很耗测试机器的性能,往往无法支持较大的并发数,无法控制每次测试的瞬间并发量;(2)如果使用了constantthroughputtimer,可以... 查看详情

聊聊高并发系统之限流特技(代码片段)

  在开发高并发系统时,有很多手段用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理能力,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉... 查看详情

聊聊高并发系统之限流特技-1开涛

在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,... 查看详情

解决高并发

java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据)一:高并发高负载类网站关注点之数据库没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是... 查看详情