Akka 介绍
Welcome to Akka, a set of open-source libraries for designing scalable, resilient systems that span processor cores and networks. Akka allows you to focus on meeting business needs instead of writing low-level code to provide reliable behavior, fault tolerance, and high performance
Akka 是一套用于设计可扩展的,可容错,高并发的分布式系统的开源类库,Akka 让你可以专注于业务需求而不是纠结于如何处理可用性,容错性和可靠性。
Common practices and programming models do not address important challenges inherent in designing systems for modern computer architectures. To be successful, distributed systems must cope in an environment where components crash without responding, messages get lost without a trace on the wire, and network latency fluctuates. These problems occur regularly in carefully managed intra-datacenter environments - even more so in virtualized architectures.
常见的实践和编程模型没有很好的解决在现代计算机架构中系统设计面临的重要挑战,一个成功的分布式系统必须能成功的应付由系统组件崩溃,消息丢失,网路延时带来的问题。这些问题经常出没在细心维护的内部数据中,在虚拟化架构中更是如此。
To deal with these realities, Akka provides:
为了解决这些问题,Akka提供了如下手段:
Multi-threaded behavior without the use of low-level concurrency constructs like atomics or locks. You do not even need to think about memory visibility issues.
不使用低级别并发结构(原子操作或锁)的多线程行为,永远不需要考虑内存的可见性问题。
Transparent remote communication between systems and their components. You do not need to write or maintain difficult networking code.
系统间透明的远程交互,不需要编写和维护难懂的网络编程代码。
A clustered, high-availability architecture that is elastic, scales in or out, on demand.
可按需扩张的容错性的高可用集群架构
All of these features are available through a uniform programming model: Akka exploits the actor model to provide a level of abstraction that makes it easier to write correct concurrent, parallel and distributed systems. The actor model spans the set of Akka libraries, providing you with a consistent way of understanding and using them. Thus, Akka offers a depth of integration that you cannot achieve by picking libraries to solve individual problems and trying to piece them together.
所有这些特性基于同一的编程模型:Akka利用actor模型提供一种同一级别的抽象使得编写正确的并发并行的分布式系统更加容易。actor 模型贯穿了整个Akka类库,使得你可以在同一的思想下的学习和使用它们,因此,Akka提供了一种深度融合让你你不用为了解决个别的问题去挑选不同的类库并把他们组装在一起。
By learning Akka and its actor model, you will gain access to a vast and deep set of tools that solve difficult distributed/parallel systems problems in a uniform programming model where everything fits together tightly and efficiently.
通过学习Akka和它的Actor模型。可以获得一个庞大的且具有深度的工具集,而这个工具集可用帮助你通过同一的编程模型解决复杂的分布式并行系统问题,并且这些工具可以紧密而高效的配合。
What is the Actor Model?
什么事Actor 模型?
The characteristics of today’s computing environments are vastly different from the ones in use when the programming models of yesterday were conceived. Actors were invented decades ago byCarl Hewitt. But relatively recently, their applicability to the challenges of modern computing systems has been recognized and proved to be effective.
现在的计算机结构已经和之前编程模型所能应付的计算机架构有了很多不同,Actor模型虽然早在十年前就被发明了,但是它被证明可以高效的应对现代计算机系统架构中的面临的挑战。
The actor model provides an abstraction that allows you to think about your code in terms of communication, not unlike people in a large organization. The basic characteristic of actors is that they model the world as stateful entities communicating with each other by explicit message passing.
Actor模型把一切都抽象成有状态的实体并通过消息传递的方式进行彼此之间的沟通
As computational entities, actors have these characteristics:
作为计算实体,actors 拥有如下特征:
They communicate with asynchronous messaging instead of method calls
通过异步消息沟通而不是方法调用
They manage their own state
自己管理自己的状态
When responding to a message, they can:
当它们应答消息时,他们可以做出以下动作:
Create other (child) actors
创建另外的actors(子actors)
Send messages to other actors
发送消息给其他的actors
Stop (child) actors or themselves
终止自己或者子actors