Architecture of Falcon, a new chat messaging backend system build on ScalaTanUkkii
?
The document describes the architecture of Falcon, a new Scala-based backend chat messaging system. The key aspects of the architecture are:
- It uses an event-driven architecture with CQRS and event sourcing principles. Writing and reading are separate with different data models and storage.
- Events are stored in Kafka for durability and consumed asynchronously by downstream systems to update read models and notify legacy systems.
- The architecture is designed for scalability, high performance, resiliency and low cost through principles like auto-sharding and parallel processing in Kafka.
Reactive Design Patterns: a talk by Typesafe's Dr. Roland KuhnZalando Technology
?
We had the great pleasure of hosting a talk by Dr. Roland Kuhn: leader of Typesafe’s Akka project, and coauthor of the book Reactive Design Patterns and the Reactive Manifesto. For a standing-room-only crowd, Roland highlighted the importance of making reactive software: of considering responsiveness, maintainability, elasticity and scalability from the outset of development. He explored several architecture elements that are commonly found in reactive systems, such as the circuit breaker, various replication techniques, and flow control protocols. These patterns are language-agnostic and also independent of the abundant choice of reactive programming frameworks and libraries. Check out his slides!
This document contains the slides from a talk given by Konrad Malawski on the "Tao/Zen of Programming" using Akka. Some of the key points discussed include:
- Actors are meant to work together and each actor should focus on a single responsibility. Having only one actor limits its capabilities.
- Actors should be structured in a hierarchy with parent-child relationships to allow for supervision. Actors should also be named meaningfully based on their purpose.
- Blocking operations can starve other actors by monopolizing shared resources. Blocking code needs to be isolated on dedicated dispatchers.
- Messages should be processed asynchronously using for/flatMap instead of awaiting futures to avoid blocking
Rakuten Technology Conference 2017 A Distributed SQL Database For Data Analy...Rakuten Group, Inc.
?
Astra is a distributed SQL database for data analysis and prediction. We're aiming to achieve near real-time data analysis, and to deliver the components of a Data Lake as a Service which contains it. Astra’s another feature is integration with Machine learning to support many kinds of data analysis.
13. メッセージを受け取った時の処理を定義しておく
Actor
case “How are you?” => sender ! “I’m fine thank you”
case “Nice to meet you” => sender ! “Nice to meet you too”
case s:String => sender ! “Pardon?”