1  Akka介绍

       Akka运行在JVM上,能够构建高并发、分布式和高弹性的消息驱动应用程序的一个工具套件。Akka具有异步、高性能、扩展性等特性。


1.1     异步


       异步能够对单一机器和跨越一个分布式的架构的集群都有益处。在单一节点中,通过组织同步和管道的逻辑,它完全可能有巨大的吞吐量。通过LMAX的Disruptor模式一个优秀的架构实例,它能够在单一线程模型下处理大量的事务(event)。那就是说,它满足一个非常特殊使用案例配置:高容量、低延迟和优化队列消费结构的能力。如果数据没有进入生产者,disruptor必须找到方法保存线程繁忙执行,只用不丢失能够使它高效运行的预热缓存。它也能够高效地使用预分配,异变状态来避免垃圾收集(GC),但是,如果开发者不知道它们在做什么就危险了。




        伴随着异步编程,我们尝试去解决对于独占的CPU核的不固定线程执行问题,取而代之的是允许所有线程公平地访问一个变换的线程模型。我们想通过分阶段执行任务来为硬件提供一种能够充分利用CPU核的方法。这会导致上线文(context)不断切换,应为不同的线程在CPU核里被调用去做他们的工作,这不利于整体的性能,既然当那个线程需要CPU时,数据必须加载到一个CPU核的缓存硬件中。这样的话,你也需要提供能够批量异步执行的方法。这就使得代码实现起来很不合理,但是,运行开发者去调优线程来表现更加缓存友好。


        通过设计像Actor、Stream和Future那样高级抽象,那就是异步和分布式了。


1.2     高性能


在单个机器上,每秒50百万条信息,极小内存消耗;部署层面上,每个GB堆2.5 百万个actor节点。



1.3     弹性和非中心化

Akka提供了一套成熟的运行模式,支持适配集群管理、负载均衡、路由、分区和分片机制。