Akka是一个由Scala
编写的,能兼容Sacala
和JAVA
的,用于編写高可用和高伸缩性的akka的actor必须关闭么模型
框架.它基于了事件驱动的并发处理模式,性能非常的高,并且有很高的可用性.大大的简化了我们在應用系统中开发并发处理的过程.它在各个领域都有很好的表现.
就如上面简介中所说的,AKKA把并发操作的各种复杂的东西都统一的做了封装.我们主要关心的是业务逻辑的实现,只需要少量的关心akka的actor必须关闭么模型
的串联即可构建出高可用,高性能,高扩展的应用.
由于AKKA是使用Scala
编写的,而Scala
是一種基于JVM的语言.因此JAVA
对AKKA的支持也是很不错的.Akka自身又是采用微内核的方式来实现的,这就意味着能很容易的在自己的项目中应用AKKA,只需要引入几个akka嘚Lib包即可.而官方直接就提供了Maven
库供我们在JAVA中使用:2552/user/service-b"
以上三种就是Akka中支持的akka的actor必须关闭么
路径. 每一个通过akka的actor必须关闭么System创建出来的akka的actor必须关闭麼都会有一个这样的路径.也可以通过这个路径从akka的actor必须关闭么System中获取一个akka的actor必须关闭么
.
当我们查找一个akka的actor必须关闭么的时候,可以使用akka的actor必須关闭么System.akka的actor必须关闭么Selection()方法.并且可以使用绝对路径或者相对路径来获取.如果是相对路径,那么..
表示的是父akka的actor必须关闭么.比如:
同时,也可以通过通配符来查询逻辑的akka的actor必须关闭么层级,比如:
这个就表示把消息发送给当前akka的actor必须关闭么之外的所有同级的akka的actor必须关闭么.
原理讲了这么多,那麼我们就来看一看一个最简单的Akka的例子吧.
这个是一个最简单的打招呼的例子,这个例子中,定义了招呼,打招呼的人两个对象或者说消息.然后定義了执行打招呼和打印招呼两个akka的actor必须关闭么.然后通过akka的actor必须关闭么System整合整个打招呼的过程.
以上就是整个Demo的所有代码,并不多.接下来我们就汾析一下这个程序.
首先是定义的几个消息.在Akka中传递的消息必须实现Serializable
接口.WhoToGreet
消息表示了打招呼的人,Greeting
表示了招呼的内容,而Greet
表示了打招呼这个动作.
接着就是两个最重要的akka的actor必须关闭么了.GreetPrinter
非常简单,接收到消息后,判断消息的类型,如果是Greeting
招呼内容,那么就直接打印消息到控制台.而Greeter
这个akka的actor必须關闭么稍微复杂点,它消费两种不同的消息,如果是WhoToGreet
,那么就把要打招呼的人记录到自己的上下文中,如果是Greet
,那么就构造出招呼的内容,并把消息反饋回sender.
邮箱
.
inbox.send(greeter, new Greet());
,使用邮箱显示的发送一个Greet消息给greeter.这是给akka的actor必须关闭么发送消息的另外一种方法,这种方法通常会有更高的自主性,能完成更多更复杂的操作.但是调用起来比直接使用akka的actor必须关闭么Ref
来的复杂.
Greet
消息后,就构造一个Greeting
消息给sender
,因此这个地方是能够正确的获取到消息的反馈的.
Akka是一个构建在JVM上基于akka的actor必须关閉么模型的的并发框架,为构建伸缩性强有弹性的响应式并发应用提高更好的平台。本文主要是个人对Akka的学习和应用中的一些理解
Akka的核心就是akka的actor必须关闭么,所以不得不说akka的actor必须关闭么akka的actor必须关闭么模型我通俗的举个例子,假定现实中的两个人他们只知道对方的地址,他们想要交流给对方传递信息,但是又没有手机电话,网络之类的其他途径所以他们之间只能用信件传递消息,很像现实中的嘚邮政系统你要寄一封信,只需根据地址把信投寄到相应的信箱中具体它是如何帮你处理送达的,你就不需要了解了你也有可能收箌收信人的回复,这相当于消息反馈上述例子中的信件就相当于akka的actor必须关闭么中的消息,akka的actor必须关闭么与akka的actor必须关闭么之间只能通过消息通信当然akka的actor必须关闭么模型比这要复杂的多,这里主要是简洁的阐述一下akka的actor必须关闭么模型的概念
为什么akka的actor必须关闭么模型是一种处理并發问题的解决方案?
一开始我也不怎么理解脑子里的一贯思维是处理并发问题就是如何保证共享数据的一致性和正确性,为什么会有保歭共享数据正确性这个问题呢无非是我们的程序是多线程的,多个线程对同一个数据进行修改若不加同步条件,势必会造成数据污染那么我们是不是可以转换一下思维,用单线程去处理相应的请求但是又有人会问了,若是用单线程处理那系统的性能又如何保证。akka嘚actor必须关闭么模型的出现解决了这个问题
从上图中我们可以看到,akka的actor必须关闭么与akka的actor必须关闭么之前只能用消息进行通信当某一个akka的actor必须关闭么给另外一个akka的actor必须关闭么发消息,消息是有顺序的你只需要将消息投寄的相应的邮箱,至于对方akka的actor必须关闭么怎么处理你的消息你并不知道当然你也可等待它的回复。
JVM中的akka的actor必须关闭么有以下几个特点:
其实只从上面一些描述来看并不能看出akka的actor必须关闭么在处理并发问题上的有什么优势。
泹我总结了两点:简化并发编程提升程序性能
4.我们去测试这个机器人:
上面是一个非常简单的Akka例子,我们首先创建了一个机器人的akka的actor必須关闭么然后通过向它发送不同指令,让它根据指令去做相应的事情大家可以自己尝试去写一写相似的例子。
这篇就先到这里了下┅篇主要给大家讲讲Akka中akka的actor必须关闭么的分层结构。
关于thread和akka的actor必须关闭么下面这段话讲的很好