タグ

akkaに関するhohoho_ho2005のブックマーク (58)

  • Akka HTTP Client の基本メモ - Qiita

    import scala.concurrent._ import scala.concurrent.duration._ import scala.xml._ import java.util.concurrent.TimeoutException import akka.actor.ActorSystem import akka.stream.ActorMaterializer import akka.http.scaladsl.Http import akka.http.scaladsl.model._ import akka.http.scaladsl.model.headers._ import akka.http.scaladsl.model.HttpMethods._ import akka.http.scaladsl.coding.{ Gzip, Deflate, NoCod

    Akka HTTP Client の基本メモ - Qiita
  • Akka HTTPの仕組みを理解する - LINE ENGINEERING

    初めまして、Ads Platform開発チームの岡田(@ocadaruma)です。 この記事はLINE Advent Calendar 2017の17日目の記事です。 今回、個人的に以前から気になっていたAkka HTTPの内部構造について、この機会に調べましたので紹介いたします。 Akka HTTPとは Akka HTTPは、Lightbend社によって開発されている、Scala/Java用のHTTP toolkitです。 現在はメンテナンスが終了したsprayの後継と位置付けられており、特徴的なRouting DSLをsprayから受け継いでいます。 また、Play Frameworkは2.6系より、Akka HTTPをデフォルトのバックエンドとして採用しています。 調査のきっかけ Routing DSLを始めとしたAkka HTTPのAPIは、シンプルかつ高いComposabilit

    Akka HTTPの仕組みを理解する - LINE ENGINEERING
  • PlayFrameworkやAkka HTTPでのスレッドプール分割のススメ - Qiita

    概要 PlayFrameworkやAkka HTTPをつかっていて、うまくパフォーマンスがでなかった経験ありませんか? もしかしたらそれ、スレッドプールをうまく分割できていなかったからかもしれません。 PlayFrameworkやAkka HTTPなど、ノンブロッキングI/Oを前提につくられたライブラリやフレームワークでは、ブロッキングI/Oに十分な注意を払う必要があります。 具体的に言うと、ノンブロッキングI/Oの処理のみを実行するスレッドプールと、ブロッキングI/O(I/O待ちによりスレッドを占有する)を含む処理を実行するスレッドプールは分割し、それぞれ適切に設定する必要があります。 なぜスレッドプールをわけるか ノンブロッキングI/Oはその特性上、I/O待機中にCPUやスレッドを専有せず、他の処理に割り当てることができます。 この特性を活かし、PlayFrameworkやAkka H

    PlayFrameworkやAkka HTTPでのスレッドプール分割のススメ - Qiita
  • Akkaちゃんと遊ぼう! Akka Streams で作るリアルタイムサーバ #scalafukuoka / Implement stream server with Akka Streams and WebSocket

    「Akka」と聞くと、Actor、並列性、永続化、クラスタなどその特性や機能について目が行きがちです。セッションでは、機能そのものの話やメリット・デメリットはいったんおいておき、「Akka を作って例えばどのようなものが作れるか?」にフォーカスします。実際に動くチャットサーバやメディアサーバの実装を見ながら、Akkaのどのような機能を組み合わせて実現しているかお話します。

    Akkaちゃんと遊ぼう! Akka Streams で作るリアルタイムサーバ #scalafukuoka / Implement stream server with Akka Streams and WebSocket
  • Akka Clusterで超レジリエンスを手に入れる(その2)

    前回に引き続き、Akkaのクラスタリング機能を使って、障害が起こることを前提にした耐障害性の高いシステムを構築する方法を、解説します。 Akkaで構築する分散システム クラスタリング クラスタメンバーのライフサイクル 障害の検知(前回はここまで) ルータ Cluster Shardingによるアクターの分散 Akka Persistenceによる状態の永続化 ルータ クラスタ内で作業を分散させるにはルータを使用します。ルータはクラスタ内のメンバーの状態を認識し、メッセージを振り分けます。メンバーがunreachableになったり離脱したりすると自動的にルータから登録解除され、新しいメンバーが参加したりunreachableから回復したりすると、その設定に応じてルータの振り分け先として追加されます。 ルータの振り分けは連載の4回目で紹介したように、actorSelectionを使って送信先ア

    Akka Clusterで超レジリエンスを手に入れる(その2)
  • Real World Android Akka - 日本語版

    19. 状態を内部に閉じ込めたActorの例 class PlayActor() extends Actor { private val track: AudioTrack = createNewAudioTrack //state. Thread UN-safe override def preStart(): Unit = track.play() override def receive: Receive = { //An actor retrieves and process a message from its mailbox one-at-a-time. case AudioPacketMessage(content:ByteString) => track.write(content.toArray[Byte], 0, content.length) } override d

    Real World Android Akka - 日本語版
  • Akka Clusterで超レジリエンスを手に入れる

    今回と次回のに2回に分けて、Akka Clusterを利用した耐障害性を備えたシステムの構築について解説する。 はじめに 前回は、リアクティブシステムのメッセージ駆動を実現する分散・並行処理ツールキット「Akka」を紹介しました。アクターモデルを実装したAkkaにより、並行処理や分散処理をシンプルに実装でき、障害に強いシステムを構築できることがおわかりいただけたと思います。 昨今のクラウドブームにより分散システムに必要な基盤構築は手軽になってきましたが、パブリッククラウドは100%の可用性が保証されたものではなく、ダウンすることもあります。さらに、サーバの台数が増えれば障害点も増えることになり、障害の可能性は高まります。このような基盤の上に構築されるアプリケーションに求められるのは、サーバが落ちることを前提に作られることです。今回と次回の2回にわけて、Akkaのクラスタリング機能を使って、

    Akka Clusterで超レジリエンスを手に入れる
  • Akka Streams について - Qiita

    背景 この記事では、ストリーム処理に関する内容をまとめています。 そもそもストリーム処理はどういう用途で使用されているの? 無限に発生し続けるデータを処理する場合 処理が永続的に継続する場合 例えば、Beaconなどから検知して送られてくる位置情報のストリームデータがあれば、仮に対象範囲外の位置データは必要とせず、処理しないとする場合に、必要なデータのみを保管し、それ以外のデータは価値がないのでフィルタリングするケースがあると思います。そのような時に、無限かつ流動的に発生するデータをリアルタイムで処理する為にストリーム処理を使用します。 課題を解決するために Akka Actor リアルタイムの処理をするための一つの解決策として、Akka Actorが挙げられます。 (Akka Actorに関しては、次回の記事で詳細にまとめていきます。) What is Akka Actor アクターと呼

    Akka Streams について - Qiita
  • 【Akka入門の入門】Part.1 メッセージを送る | Scala Tech Blog

    初めまして、新卒の増田と申します(^o^) 入社後はJavaを使っていて、チームを異動して初めてScalaを触り始めた・・・ という頃に、Akkaというフレームワークを使うので勉強するように言われました(^o^;) まず入門書を買おうとしたのですが、日語のがない・・・(T_T) ドキュメントも英語だし何書いてあるのかさっぱりわからない・・・(T_T) Scalaも始めたばっかでよくわからない・・・(T_T) という状況だったので、英語でもドキュメントより入門書の方がまだ理解できるかも・・・と思い『Developing an Akka Edge』というを購入しました。 そのを読みながら、ドキュメントを読みながら、先輩に聞いたり調べながらAkkaについて勉強したことをスライドにまとめました! ただとても長いので、このブログでは簡潔なまとめ+説明のための簡単なコードを書いていきます(^o

  • Akka 基本的な使い方 (Scala)

    概要 Akka 2.4.2 を用いたサンプルコード集です。動作には Java 8 以降が必要です。 Akka requires that you have Java 8 or later installed on your machine. インストール方法は複数提供されています。その一部を記載します。 こちらで紹介した sbt を利用する方法 こちらで紹介した maven を利用する方法 Typesafe Platform Activator を利用する方法。Akka が含まれています。 公式ドキュメント (2.4.2) Actors Futures and Agents Utilities Akka HTTP ( →『Akka HTTP サンプルコード (Scala)』) アクターの生成 アクター (スレッド) は生成されると無限ループに入ります。receive したメッセージを逐次処

    Akka 基本的な使い方 (Scala)
  • Akka HTTPからAkka Streamへのつなぎ込みとGraphDSLで単純なリバースプロクシを構築 - Qiita

    スコープ Web屋さん向け。また、やや実践寄りかも、と思います。 Akka HTTPからAkka Streamへのつなぎ込み GraphDSLを用いて、簡単なフローグラフの構築 とりあえず書いてみた 調査とかトライアンドエラーがけっこう苦労した libraryDependencies ++= { val akkaV = "2.4.3" Seq( "com.typesafe.akka" %% "akka-stream" % akkaV, "com.typesafe.akka" %% "akka-http-experimental" % akkaV ) } package mananan.eval.akka.stream import akka.actor.ActorSystem import akka.http.scaladsl._ import akka.http.scaladsl.mod

    Akka HTTPからAkka Streamへのつなぎ込みとGraphDSLで単純なリバースプロクシを構築 - Qiita
  • SprayからAkkaHTTPへ ~ライブラリのマイグレーション~ - Screaming Loud

    みなさんいかがお過ごしでしょうか? 最近NierAutomataクリアしました。 今回はSprayからAkkaHTTPへの移行に関して紹介します。 SprayとAkkaHTTPとは? SprayとはシンプルなScalaのHTTPフレームワーク(というよりモジュール)。すでに開発がストップしており、新しく使うのは非推奨。 AkkaHttpとはSprayをベースにしたHTTPライブラリでAkkaライブラリのうちの一つ。 AkkaHTTP1.0がSprayのパフォーマンスを上回ったというブログも出ています。 http://akka.io/news/2015/07/15/akka-streams-1.0-released.html 移行開始 マイグレーションガイドというのが、以下にあります。 http://doc.akka.io/docs/akka-http/10.0.5/scala/http/m

    SprayからAkkaHTTPへ ~ライブラリのマイグレーション~ - Screaming Loud
  • WebSocket のチャットサーバを Akka Streams の MergeHub と BroadcastHub で実装する | Developers.IO

    ストリームの流れ、来てますね。私も先日のScalaMatsuri2017へ参加したのですが、「Scalaのエコシステム業務利用してみた」という話が多かった印象です。その中でも、Akka Stream はかなり実務レベルで活用されているようでした。今回は、今ノッてる Akka Streams を実際に使ってみて、よくあるサンプルのひとつ、チャットサーバを作ってみたいと思います。Akka Streams の中でも、グラフの動的な操作を行うための MergeHub と BroadcastHub を使ってみましたので、利用を検討している方の参考になれば幸いです。 こんな方を想定しています Akka Streams に興味がある MergeHub と BroadcastHub を使ったコードがどんなふうになるのか知りたい バージョン情報 ライブラリ バージョン コード全文はこちらです。 cm-wad

    WebSocket のチャットサーバを Akka Streams の MergeHub と BroadcastHub で実装する | Developers.IO
  • Python: Pykka でアクターモデルについて学ぶ - CUBE SUGAR CONTAINER

    アクターモデルというのは、並行処理のプログラミングモデルの一つだ。 並行処理という言葉からは、まずマルチスレッドとかをイメージすると思うけど、それよりも抽象度の高い概念となっている。 つまり、アクターモデルというのはマルチスレッドなどを用いて構築することになる。 どちらかといえばプロセス間通信 (IPC) の技法であって、共有メモリやロック、RPC と比較するものかもしれない。 そんなアクターモデルは、概念とか使ったときの嬉しさを理解・実感するのがなかなか難しいモデルだとも思う。 理由としては、使い始めるまでに必要なコード量が多かったり、それなりの規模のアプリケーションで使わないとメリットが分かりづらい点が挙げられる。 ただ、これはあくまで主観的なものだけど、アクターモデルをベースに組まれたアプリケーションは規模が大きくなっても並行処理をしているコードが読みやすい。 共有メモリやロックを使

    Python: Pykka でアクターモデルについて学ぶ - CUBE SUGAR CONTAINER
  • Akkaで始める並行処理(3) - アクターの基本 (Java編) - エンタープライズギークス (Enterprise Geeks)

    前回の記事では、Scala による Akka の基的なサンプルプログラムを紹介した。 Akka は ScalaJava それぞれに対応した API を提供している。 今回は、前回 Scala で作成したサンプルプログラムの Java 版を紹介する。 サンプルプログラムの全体構成を以下に再掲するが、詳細に関しては前回の記事を参照していただきたい。 今回のサンプルプログラムも、github で公開している。 子アクターの生成 Java 版では、アクターは、抽象クラスのUntypedActorを継承して定義する。 まず、子アクターの定義のうち、staticメンバーのメッセージオブジェクトの定義について示す。 // UntypedActor を継承 public class SubActor extends UntypedActor { // イミュータブルオブジェクトとしてメッセージクラ

    Akkaで始める並行処理(3) - アクターの基本 (Java編) - エンタープライズギークス (Enterprise Geeks)
  • Akka入門

    Reactive Programming with Scala and Akkaの勉強会資料です。 第四章"Akka for Reactive Programming"を基に作成されています。Read less

    Akka入門
  • Akka Streamでスクレイピング時にサーバーに思いやりを与える - FLINTERS Engineer's Blog

    こんにちは、菅野です。 近頃はWeb上で様々なサービスが誕生し、誰もが便利に使っていると思います。また、IFTTTでそれらを繋いだり、イベントをLINEに通知したりするのも簡単です。 それはAPIが公開されているからなのですが、データがほしいけどAPIが公開されていない場合はスクレイピングで自力でデータを取ってくるしかありません。 人力ではなくてプログラムでWebサイトにアクセスするときは、気をつけないとスクレイピング先のサーバーに思わぬ負荷をかけてしまうかも知れません。 早朝に自宅に警察が押し寄せてきて逮捕されてしまうのは避けたいので、サーバをいたわるようにスクレイピングしたいと思います。 Throttleで流量制限 という訳でAkka Streamでさくっと作りたいと思います。 せっかくなのでHTTPクライアントはAkka HTTPを使います。 材料は以下です。依存ライブラリに追加しま

    Akka Streamでスクレイピング時にサーバーに思いやりを与える - FLINTERS Engineer's Blog
  • Akka と Amazon ECS で構築するワーカー基盤:1万件のメッセージを処理させてみた | DevelopersIO

    この記事は Scala Advent Calendar 2016 - Qiita19日目の記事です。私は普段、クラスメソッド株式会社でサーバーサイドエンジニアとして働いています。業務のかたわら、「ScalaAWSを使ってなにができるか」ということを主なテーマにブログを執筆しています:和田祐介 | Developers.IO 今回は、AkkaとAmazon ECSを触ってみたいと思い、実際にワーカーを構築して処理させてみましたので記録を残します。 なにがしたいか ScalaおよびJavaの並列分散処理フレームワークである Akka におけるアプリ実行環境として、Amazon ECSが選択できることを示します。また、ECSのTask数(コンテナ数)によって処理性能がどう変わるか、ひとつの例を出します。どちらも、単純に使ってみたかったというのが動機です。ただ、Akkaは分散環境で動作することを

    Akka と Amazon ECS で構築するワーカー基盤:1万件のメッセージを処理させてみた | DevelopersIO
  • ScalikeJDBCをAkka StreamsのSourceにする (ScalikeJDBC + Reactive Streams) - yoskhdia’s diary

    Scala Advent Calendar 2016の15日目です。 バッチアプリケーションを作ることになったので、Akka Streamsを使おうかと考えました。 Slickだと標準でstreamメソッドが用意されているため、Akka Streamsとも連携させやすいですが、ScalikeJDBCが学習コストが低くて素敵だったので、コレをAkka Streamsに組み込めないか試したエントリです。 DBMySQLを使う前提ですので、ご注意ください。 (一部Postgresも引き合いにしてますが、OracleSQL Server等は調べてません。) TL;DR github.com 2017/05/20 追記 ScalikeJDBC 3.0に公式に取り込まれました。 github.com JDBCブロッキング問題 現在、JDBCは同期インタフェースしか提供されていません。 asyncな

    ScalikeJDBCをAkka StreamsのSourceにする (ScalikeJDBC + Reactive Streams) - yoskhdia’s diary
  • AkkaのCircuitBreakerとNetflixのHystrixの違い - Qiita

    この記事はなに? マイクロサービス等の文脈で登場するCircuitBreaker。 Scalaで使えるものの代表(要出典)として以下の2つを比較する。 Circuit Breaker - Akka Documentation シンプルだが単機能 Netflix/Hystrix 高機能 ちなみに個人的な好みはAkkaの方。 Scalaから使いやすいのと導入が簡単。 CircuitBreakerってどんなもの? 以前書いたので貼っておきます。 [Akka]CircuitBreakerはどう動くのか - Qiita 公式サンプルがある。 ちなみに独自のサンプル実装はここ。 akka.pattern.CircuitBreakerに状態遷移の条件に当たるもの(maxFailures, callTimeout, resetTimeout)を渡してインスタンス化する。 そしてCircuitBreaker

    AkkaのCircuitBreakerとNetflixのHystrixの違い - Qiita