探索Akka框架:分布式、并发与容错的利器

最近,发现自己在.NET领域投入的时间并不多。这并不是说不再喜欢.NET,而是正在将时间分散在.NET和JVM之间,而后者实际上非常喜欢。认为现在是时候分享一些最近的工作了。因此,打算从一系列关于Akka的文章开始。

这个迷系列将包含很多部分,并且随着发布新的文章,将更新这个页面。以下是计划涵盖的内容:

  • 什么是Akka(本文)
  • “Hello World”示例
  • 层次结构/生命周期
  • 邮箱
  • 日志记录
  • 死信以及如何监控它们
  • 持久性Actor
  • 路由
  • 有限状态机
  • 选择
  • 远程通信
  • 集群
  • 测试工具包
  • HTTP

什么是Akka

认为没有比引用Akka的创造者们对它的描述更好的方式了。以下是他们对Akka的描述:

相信编写正确的分布式、并发、容错和可扩展的应用程序太难了。大多数时候,这是因为使用了错误的工具和错误的抽象层次。Akka旨在改变这一点。通过使用Actor模型,提高了抽象层次,并提供了一个更好的平台来构建可扩展、弹性和响应迅速的应用程序——更多细节请参见响应式宣言。为了实现容错,采用了电信行业已经成功使用过的“让它崩溃”模型,以构建能够自修复的应用程序和永不停止的系统。Actor还提供了透明分布式的抽象,以及构建真正可扩展和容错应用程序的基础。

Actor

Actor为您提供了以下功能:

  • 用于分布、并发和并行性的简单且高级的抽象
  • 异步、非阻塞且高性能的消息驱动编程模型
  • 非常轻量级的事件驱动进程(每GB堆内存可以有数百万Actor)
  • 容错
  • 具有“让它崩溃”语义的监督层次结构
  • Actor系统可以跨越多个JVM,提供真正的容错系统
  • 非常适合编写能够自修复且永不停止的高度容错系统
  • 位置透明性
  • Akka中的一切都是为分布式环境设计的:所有Actor的交互都使用纯消息传递,一切都是异步的
  • 持久性
  • Actor经历的状态变化可以被选择性地持久化,并在Actor启动或重启时重放。这允许Actor恢复它们的状态,即使在JVM崩溃或迁移到另一个节点时也是如此

这就是Akka的概览。随着深入这个系列,您将更加熟悉它。

示例的形式

由于正在努力提高Scala技能,以使其与在.NET中的能力相匹配,所有的示例都基于:

  • Scala 2.11
  • SBT(用于构建系统)
  • ScalaTest(涉及测试)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485