Effective Akka (Paperback)

Jamie Allen

  • 出版商: O'Reilly
  • 出版日期: 2013-10-01
  • 定價: $525
  • 售價: 9.0$473
  • 語言: 英文
  • 頁數: 74
  • 裝訂: Paperback
  • ISBN: 1449360076
  • ISBN-13: 9781449360078
  • 相關分類: Java 相關技術
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

content<div><p>Avoid common mistakes when building distributed, asynchronous, high-performance software with the Akka toolkit and runtime. With this concise guide, author Jamie Allen provides a collection of best practices based on several years of using the actor model. The book also includes examples of actor application types and two primary patterns of actor usage, the Extra Pattern and Cameo Pattern. </p><p> Allen, the Director of Consulting for Typesafe—creator of Akka and the Scala programming language—examines actors with a banking-service use case throughout the book, using examples shown in Akka and Scala. If you have any experience with Akka, this guide is essential. </p><ul><li>Delve into domain-driven and work-distribution actor applications </li><li>Understand why it’s important to have actors do only one job </li><li>Avoid thread blocking by allowing logic to be delegated to a Future </li><li>Model interactions as simply as possible to avoid premature optimization </li><li>Create well-defined interactions, and know exactly what failures can occur </li><li>Learn why you should never treat actors as you would an ordinary class </li><li>Keep track of what goes on in production by monitoring everything </li><li>Tune Akka applications with the Typesafe Console </li></ul></div>sourceProduct Descriptioncontent<div class="aplus"> <h4>Q&A with Jamie Allen, author of "Effective Akka: Patterns and Best Practices"</h4> <p><strong>Q. Why is this an important book for people to read now</strong></p> <p>A. The advent of the many-core platform means that developers have more processing resources in the form of "cores" at their disposal than ever before. Traditional programming constructs do not allow developers to leverage these cores. As computers add more and more cores with each new platform released by hardware manufacturers, developers will need to find ways to maximize the utilization of these resources. Akka provides a platform for doing just that, and allowing your application to scale up and out as more resources become available.</p> <p><strong>Q. What will readers walk away with after reading "Effective Akka?"</strong></p> <p>A. After reading "Effective Akka," readers should have a firm grasp of the kinds of coding issues they may encounter when developing with actors, regardless of whether they're using Scala/Akka or Erlang. Many of the concepts are relevant to developers who are writing asynchronous code without actors as well. Effective Akka provides guidance with respect to coding style and best practices so that developers are able to avoid common pitfalls. </p> <p><strong>Q. What's so exciting and important about patterns and best prices?</strong></p> <p>A. The move to "reactive" solutions. Developers can perform much more work nowadays by using asynchrony-- not wasting threads that spawn blocking operations, instead defining work that can be applied automatically when such work is completed. Many technologies are emerging in this space, such as ReactiveJava, Node.js, Go, Clojure's core.async and Scala's futures, actors and async support. Never before have developers had so many useful tools at their disposal to write applications that are interactive, low-latency, fault tolerant, and scalable. Every language and platform is looking to provide a solution in this space. </p> <p><strong>Q. Can you give us a few tips when building high-performance software with Akka?</strong></p> <p><ol><li>Be very careful about closing over state from outside of a code block. Capture and stabilize such state by placing it into local values so that you know you will have an unchanged value at the time you actually need it.</li> <li>Keep your code simple. Make more atomic methods and functions that do only one thing, and combine them to accomplish your goals.</li> <li>Never reference the keyword "this" from inside an actor. Don't use it and don't register it elsewhere. Pretend the concept does not exist, where possible. Learn to think in terms of "ActorRef" and use them at all times, even when communicating with yourself.</li> <li>Create failure zones in your application by assigning thread pool resources to specific groups of actors. This way, if one actor is monopolizing a thread with a computationally-intense activity, only a limited subset of other actors are affected by not having that resource available to them.</li> <li>Avoid blocking as much as possible. Always write code to be asynchronous unless there is a specific block of code where blocking must occur. Put any such blocking tasks on their own threads, or use Scala's Managed Blocking to keep other resources from being starved of a thread.</li> </ol></p> </div>sourceAmazon.com Review

商品描述(中文翻譯)

避免在使用Akka工具包和運行時建立分散、異步、高性能軟體時犯常見錯誤。在這本簡明指南中,作者Jamie Allen根據多年使用actor模型的經驗提供了一系列最佳實踐。該書還包括actor應用類型的示例以及actor使用的兩種主要模式,即Extra模式和Cameo模式。

Allen是Typesafe的諮詢總監,Typesafe是Akka和Scala編程語言的創建者,他在整本書中使用銀行服務案例來檢視actor,並使用Akka和Scala展示了相應的示例。如果您有使用Akka的經驗,這本指南是必不可少的。

深入探討面向領域和工作分配的actor應用程式
了解僅讓actor執行一項工作的重要性
通過將邏輯委派給Future來避免線程阻塞
以盡可能簡單的方式建模互動,避免過早優化
創建明確定義的互動,並了解可能發生的故障
了解為什麼不應將actor視為普通類別
通過監控一切來跟踪生產中的情況
使用Typesafe控制台調整Akka應用程式

產品描述
Q&A與Jamie Allen,'Effective Akka: Patterns and Best Practices'的作者
問:為什麼現在閱讀這本書對人們來說很重要?
答:多核平台的出現意味著開發人員擁有比以往更多的處理資源,以“核心”的形式提供。傳統的編程結構不允許開發人員充分利用這些核心。隨著每個硬體製造商發布的新平台添加越來越多的核心,開發人員將需要找到方法來最大化利用這些資源。Akka提供了一個平台,讓您的應用程式能夠隨著更多資源的提供而擴展。

問:讀者閱讀'Effective Akka'後會有什麼收穫?
答:閱讀'Effective Akka'後,讀者應該對使用actor開發時可能遇到的編碼問題有很好的理解,無論他們是使用Scala/Akka還是Erlang。許多概念也適用於沒有使用actor的異步編碼的開發人員。Effective Akka提供了有關編碼風格和最佳實踐的指導,使開發人員能夠避免常見的陷阱。

問:模式和最佳實踐有什麼令人興奮和重要之處?
答:轉向“反應式”解決方案。開發人員現在可以通過使用非同步方式執行更多工作-不浪費生成阻塞操作的線程,而是定義當這些工作完成時可以自動應用的工作。在這個領域出現了許多技術,例如ReactiveJava、Node.js、Go、Clojure的core.async和Scala的futures、actors和async支援。開發人員從未擁有過這麼多有用的工具,可以用來編寫互動、低延遲、容錯和可擴展的應用程式。每種語言和平台都希望在這個領域提供解決方案。

問:在使用Akka建立高性能軟體時,您能給我們一些建議嗎?
答:非常小心地關閉代碼塊外部的狀態。通過將其放入本地值中捕獲和穩定這種狀態,以便您知道在您需要時將擁有一個不變的值。