2016/12/02に開催された「Better Javaの一歩先へ! Scalaリファクタリング入門」で使用された発表資料です。
![ScalazでウェブアプリもCHA-LA HEAD-CHA-LA](https://cdn-ak-scissors.b.st-hatena.com/image/square/2848fbb755b13b996b0ecf1eb9b684bf292e98f9/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F851c1b2d1a13465789a4db9ae833509c%2Fslide_0.jpg%3F7309601)
実装してみる理由 ReactiveSystemやMicroservices等の文脈で登場するCircuitBreakerについて以前調べた。 [Akka]CircuitBreakerはどう動くのか - Qiita AkkaのCircuitBreakerとNetflixのHystrixの違い - Qiita CircuitBreakerは内部にClose, Open, Half-Openの3つの状態を持ち、さらに非同期処理の実行とその監視という2つの責務を持つ。 状態の管理と責務の分割にはActorが適しているんじゃないかと思ったのがきっかけ。 リポジトリはここ。 petitviolet/supervisor Actor同士のsuperviseしている状態に似ている(と感じた)のでsupervisorという名前にしてある。 気分が乗ったのでMavenCentralにも公開している。 使い方
この記事はなに? マイクロサービス等の文脈で登場するCircuitBreaker。 Scalaで使えるものの代表(要出典)として以下の2つを比較する。 Circuit Breaker - Akka Documentation シンプルだが単機能 Netflix/Hystrix 高機能 ちなみに個人的な好みはAkkaの方。 Scalaから使いやすいのと導入が簡単。 CircuitBreakerってどんなもの? 以前書いたので貼っておきます。 [Akka]CircuitBreakerはどう動くのか - Qiita 公式サンプルがある。 ちなみに独自のサンプル実装はここ。 akka.pattern.CircuitBreakerに状態遷移の条件に当たるもの(maxFailures, callTimeout, resetTimeout)を渡してインスタンス化する。 そしてCircuitBreaker
Re.Ra.Ku アドベントカレンダー 2日目です。 こんにちは。ヘルステックチームの近藤です。開発では主にサーバサイドを担当しています。 ところでみなさん、リラクのサーバサイドに使われているプログラミング言語をご存知でしょうか?ご存知の方は通ですね。ご存知でない方はこれを機に興味を持っていただけると幸いです。リラクではScalaを採用しています。 ですので、サーバサイド担当の私の話はほとんどがScalaの話です。しょうがないですよね。そもそも私Scala大好きですし。 ということで、リラクのサーバサイド事情 with Scalaと称して、Re.Ra.Ku アドベントカレンダー 2日目もといRe.Ra.Ku Scalaアドベントカレンダー 1日目です。と言いつつ、サーバサイドの一般的な話が多めなので、Scala成分は少し薄めです。 ちょとした方針 サーバサイド事情とか言っていますが、特に変
GitHubリポジトリはこちら。 github.com なぜ作ったのか? Scala業界のフレームワークは関数型的なアプローチのものが主流になっています。これらのフレームワークはノンブロッキングI/Oや並列処理をうまく扱うことができますが、本質的な複雑さをもたらします。自分の経験では、特に企業システムなどの場合は従来の同期サーブレットでも十分というケースも多いのではないかと感じています。 また、既存のScala用のフレームワークはタイプセーフなDSLでルーティングや入出力パラメータなどを定義するものが多いのですが、この手のものはシンプルな静的解析でメタ情報を抽出することが難しいためSwaggerなどの外部ツールとの相性が悪いという欠点もあります。 Restyはこのようなケースにおいてもプログラミング言語としてのScalaのアドバンテージを活かすことのできるシンプルなフレームワークがあるとい
CircuitBreakerとは 原典にあたるのはMartin Fowler氏のpostになるはず。 リモートへのリクエストが失敗した時にうまいこと障害が伝搬しないようにするためのデザイン。 昨今のMicroserviceアーキテクチャな文脈だと考えやすい。 特定のサービスがダウンしてしまった時に、 それに依存するサービスが引きずられてダウンしてしまわないようにするもの。 Reactiveなシステムを作る上で欠かせない存在になりそう。 CircuitBreakerの状態 監視対象とするサービスの状態に応じてClose, Open, Half-Openの3つをとる。 それぞれの状態の意味はおおざっぱに以下。 Close 正常に動作していて、対象サービスにリクエストを送る状態 Open 対象サービスに異常があり、リクエストを送らない状態 Half-Open そろそろ直ったかな、とちょっとリクエ
Dear hakkers, Today, we are proud and happy to announce the immediate availability of the fully stable version of Akka HTTP – 10.0.0, charmingly code named “X” by @jonas on gitter! Please note that while the version number changed significantly, the actual surface APIs did not by much. The akka-http-core module was already stable back in Akka 2.4, so it remained binary compatible, and the sources
Applied-FP-with-Scala.md Applied Functional Programming with Scala - Notes Copyright © 2016-2018 Fantasyland Institute of Learning. All rights reserved. 1. Mastering Functions A function is a mapping from one set, called a domain, to another set, called the codomain. A function associates every element in the domain with exactly one element in the codomain. In Scala, both domain and codomain are t
The document discusses integrating Akka streams with the Gearpump big data streaming platform. It provides background on Akka streams and Gearpump, and describes how Gearpump implements a GearpumpMaterializer to rewrite the Akka streams module tree for distributed execution across a Gearpump cluster. Key points covered include the object models of Akka streams and Gearpump, prerequisites for big d
Reactive Kafka with Akka Streams 1. Reactive Kafka with Akka Streams Krzysztof Ciesielski Reactive Summit 2016, Austin, TX 2. about.me • Scala developer @ • Editor of ScalaTimes • Open Source (akka-stream-kafka, scala-clippy and other) Premier Consulting Partner 3. akka-stream-kafka • Formely reactive-kafka • A library for accessing Kafka as stages of Akka Streams 4. Apache Kafka a message log 8 7
About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)
Akka-Streamでアプリケーションを実装する場合、 SourceとFlowとSinkを組み合わせてRunnableGraphを構築し、runして実行する。 本記事ではAkka-Streamの部品のメインとなるSource, Flow, Sinkを、 Akka-ActorおよびActorPublisher, ActorSubscriberを使う場合/使わない場合でシンプルに実装してみる。 Actorを使わずにRunnableGraphを構築する まず、Actorを使わないAkka-Streamなアプリケーションを実装する。 コード全体はこちら AkkaStreamStandard.scala 今回取り扱うデータ型はこれだけ。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く