Enviar búsqueda
Cargar
Non-blocking “Scalable” Network Programming with “aleph (by Z.Tellman)”
•
1 recomendación
•
4,266 vistas
Shinnosuke Asahara
Seguir
Tecnología
Entretenimiento y humor
Vista de diapositivas
Denunciar
Compartir
Vista de diapositivas
Denunciar
Compartir
1 de 9
Descargar ahora
Descargar para leer sin conexión
Recomendados
PowerShell 紹介
PowerShell 紹介
tsudaa
GGEasyMonitor技術情報
GGEasyMonitor技術情報
KitASP_Corporation
CategoLJについて
CategoLJについて
Toshiaki Maki
LAMP環境にDocker環境を追加してみた
LAMP環境にDocker環境を追加してみた
Hiroshi Hatta
CentOSでつくる神Plesk
CentOSでつくる神Plesk
Yukihiko SAWANOBORI
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
博文 斉藤
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
Tusyoshi Matsuzaki
Reactive Extensions v2.0
Reactive Extensions v2.0
Yoshifumi Kawai
Recomendados
PowerShell 紹介
PowerShell 紹介
tsudaa
GGEasyMonitor技術情報
GGEasyMonitor技術情報
KitASP_Corporation
CategoLJについて
CategoLJについて
Toshiaki Maki
LAMP環境にDocker環境を追加してみた
LAMP環境にDocker環境を追加してみた
Hiroshi Hatta
CentOSでつくる神Plesk
CentOSでつくる神Plesk
Yukihiko SAWANOBORI
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
博文 斉藤
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
Tusyoshi Matsuzaki
Reactive Extensions v2.0
Reactive Extensions v2.0
Yoshifumi Kawai
docker exec -it って何してるの
docker exec -it って何してるの
Obata Masaki
Using context.context in context
Using context.context in context
James Kirk
Zabbix meeting 20101218_02-2 (Takanori Suzuki)
Zabbix meeting 20101218_02-2 (Takanori Suzuki)
takanori suzuki
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
Kazunori Hashikuchi
サーバー実装いろいろ
サーバー実装いろいろ
kjwtnb
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka
Tiny server
Tiny server
komem3
Vagrant+Chef
Vagrant+Chef
Daisuke Ando
How to debug a perl script using gdb
How to debug a perl script using gdb
akirahiguchi
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Sho Hashimoto
Ecs
Ecs
bbaa21
Clojureによるログ収集と解析
Clojureによるログ収集と解析
Yoshitaka Kawashima
恋に落ちるデプロイツール
恋に落ちるデプロイツール
totty jp
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
Hiroshi Yamato
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門
Takashi Takizawa
ポリドックにServerspecを教えよう!
ポリドックにServerspecを教えよう!
ftnk
Command パターン
Command パターン
Akio Nikaido
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
guest172cfb
NanoStrand
NanoStrand
Masashi Umezawa
RagingWire Case Study - Flextronics
RagingWire Case Study - Flextronics
Robert Lindsay
Banner Bank Small Business Services Brochure 1
Banner Bank Small Business Services Brochure 1
Robert Lindsay
Más contenido relacionado
La actualidad más candente
docker exec -it って何してるの
docker exec -it って何してるの
Obata Masaki
Using context.context in context
Using context.context in context
James Kirk
Zabbix meeting 20101218_02-2 (Takanori Suzuki)
Zabbix meeting 20101218_02-2 (Takanori Suzuki)
takanori suzuki
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
Kazunori Hashikuchi
サーバー実装いろいろ
サーバー実装いろいろ
kjwtnb
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka
Tiny server
Tiny server
komem3
Vagrant+Chef
Vagrant+Chef
Daisuke Ando
How to debug a perl script using gdb
How to debug a perl script using gdb
akirahiguchi
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Sho Hashimoto
Ecs
Ecs
bbaa21
Clojureによるログ収集と解析
Clojureによるログ収集と解析
Yoshitaka Kawashima
恋に落ちるデプロイツール
恋に落ちるデプロイツール
totty jp
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
Hiroshi Yamato
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門
Takashi Takizawa
ポリドックにServerspecを教えよう!
ポリドックにServerspecを教えよう!
ftnk
Command パターン
Command パターン
Akio Nikaido
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
guest172cfb
NanoStrand
NanoStrand
Masashi Umezawa
La actualidad más candente
(20)
docker exec -it って何してるの
docker exec -it って何してるの
Using context.context in context
Using context.context in context
Zabbix meeting 20101218_02-2 (Takanori Suzuki)
Zabbix meeting 20101218_02-2 (Takanori Suzuki)
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
サーバー実装いろいろ
サーバー実装いろいろ
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Tiny server
Tiny server
Vagrant+Chef
Vagrant+Chef
How to debug a perl script using gdb
How to debug a perl script using gdb
serverspecみんなで集めて(゚Д゚)ウマー?
serverspecみんなで集めて(゚Д゚)ウマー?
Ecs
Ecs
Clojureによるログ収集と解析
Clojureによるログ収集と解析
恋に落ちるデプロイツール
恋に落ちるデプロイツール
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門
ポリドックにServerspecを教えよう!
ポリドックにServerspecを教えよう!
Command パターン
Command パターン
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
NanoStrand
NanoStrand
Destacado
RagingWire Case Study - Flextronics
RagingWire Case Study - Flextronics
Robert Lindsay
Banner Bank Small Business Services Brochure 1
Banner Bank Small Business Services Brochure 1
Robert Lindsay
Pshare
Pshare
LY-7-TEE-93
B.a.r.f. pride 2013
B.a.r.f. pride 2013
Dan Sorge
CyrusOne Case Study - CARFAX
CyrusOne Case Study - CARFAX
Robert Lindsay
CyrusOne Case Study - Travis County
CyrusOne Case Study - Travis County
Robert Lindsay
Destacado
(6)
RagingWire Case Study - Flextronics
RagingWire Case Study - Flextronics
Banner Bank Small Business Services Brochure 1
Banner Bank Small Business Services Brochure 1
Pshare
Pshare
B.a.r.f. pride 2013
B.a.r.f. pride 2013
CyrusOne Case Study - CARFAX
CyrusOne Case Study - CARFAX
CyrusOne Case Study - Travis County
CyrusOne Case Study - Travis County
Similar a Non-blocking “Scalable” Network Programming with “aleph (by Z.Tellman)”
OpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
Ryo RKTM
入門core.async
入門core.async
sohta
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみよう
Kimihiko Kitase
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
Amazon Web Services Japan
How to use Ceph RBD as CloudStack Primary Storage
How to use Ceph RBD as CloudStack Primary Storage
Kimihiko Kitase
キメるClojure
キメるClojure
Yoshitaka Kawashima
Shelly
Shelly
fukamachi
xv6から始めるSPIN入門
xv6から始めるSPIN入門
Ryousei Takano
Bossan dentoo
Bossan dentoo
kubo39
Clojureの発表など
Clojureの発表など
Kikuta Go
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
ConoHa, GMO INTERNET
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
pocketberserker
JAWS-UG コンテナ支部 #15 - Amazon ECSの開発環境を動的に管理するツールを作ってみました
JAWS-UG コンテナ支部 #15 - Amazon ECSの開発環境を動的に管理するツールを作ってみました
Tamirlan Torgayev
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / Erlang
Takeru INOUE
Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要
Masaru Horioka
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)
ひとし あまの
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
Sotaro Kimura
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Naoto Gohko
Similar a Non-blocking “Scalable” Network Programming with “aleph (by Z.Tellman)”
(19)
OpenStack + Common Lisp
OpenStack + Common Lisp
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
入門core.async
入門core.async
OpenFlowをXenServerで試してみよう
OpenFlowをXenServerで試してみよう
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
How to use Ceph RBD as CloudStack Primary Storage
How to use Ceph RBD as CloudStack Primary Storage
キメるClojure
キメるClojure
Shelly
Shelly
xv6から始めるSPIN入門
xv6から始めるSPIN入門
Bossan dentoo
Bossan dentoo
Clojureの発表など
Clojureの発表など
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
このべん第二回 ~「できない子ほどかわいくしたい!ConoHa補完計画」勉強会
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
JAWS-UG コンテナ支部 #15 - Amazon ECSの開発環境を動的に管理するツールを作ってみました
JAWS-UG コンテナ支部 #15 - Amazon ECSの開発環境を動的に管理するツールを作ってみました
Kai = (Dynamo + memcache API) / Erlang
Kai = (Dynamo + memcache API) / Erlang
Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Non-blocking “Scalable” Network Programming with “aleph (by Z.Tellman)”
1.
Non-‐blocking “Scalable” Network
Programming with “aleph (by Z.Tellman)” S.Asahara @sukenosin
2.
Scalable Server Programming •
Scalableなサーバプログラムを書きたい – Java NIOやNeFyを使うと良いが、なかなか面倒.. – JavaでConcurrentな処理を書くのは、良い思い出が無い.. – Concurrentな処理をするなら Clojureが良いらしいが.. • 便利なライブラリがあった! – Zach Tellman氏の “aleph” – hFp://github.com/ztellman/aleph – NeFyベース – 直接 NeFy や NIO を使うより、とてもシンプルに書ける
3.
aleph/lamina/gloss • 3つのライブラリから構成 ・
lamina 非同期処理ライブラリ (Async Queue, TaskPipeline) ・ gloss バイナリデータのencode/decodeのためのDSL ・ aleph NeFy・lamina・gloss ベースの Network Programming Framework
4.
Network Programing • Blocking
I/O ベース Good: ホスト間のinteracUonは書きやすい Bad: 1つのクライアントにつき1つのスレッド消費するので、 同時接続数が増えるとオーバーヘッドが大きくなる • Non-‐blocking I/O ベース Good: 1スレッドで複数のソケットの処理を行うため、 同時接続数が増えた時の効率が良い Bad: イベントドリブンなので、コードが煩雑になりがち – 各クライアントの処理の進行管理 – ブロックする処理を書けない etc..
5.
Blocking I/O ;; Network間での入出力処理をイメージしたコード ;;
ブロックされる部分があるので1Thread/1Clientが必要となる (defn client-process [sock] (send “Hello, What’s your name?” sock) ;; 出力 (set-name (read-line sock)) ;; ここで入力待ちが起こる (send “What’s your age?” sock) (set-age (read-line sock)) (send “OK, Thank you!” sock))
6.
Non-‐Blocking I/O ;; 前ページの処理を、Non-Blocking
I/Oで書いた場合のイメージ ;; イベントドリブンのなのでシーケンシャルな処理をするには、 ;; 状態管理が必要になる (def client-process [sock event state] (case event :connected (do (send “Hello, What’s your name” sock) 0) ;; 次の状態を返す :received (case state 0 (do (set-name (received event)) (send “OK, What’s your age” sock) 1) ;; 次の状態を返す 1 (do (set-age (received event)) (send “OK, Thank you!” sock)))))
7.
aleph ;; alephを使って書いた場合のイメージ ;; イベントドリブンな処理をpromise
のpipelineとして表現 (defn client-process [ch ci] (enqueue ch "What's your name?") (run-pipeline (read-channel ch) ;; read-channelはtask(promise)を返し、 ;; ブロックしない (fn [received] ;; 上のtaskがdeliverされたら評価される (set-name received) (enqueue ch "What's your age?") (read-channel ch)) (fn [received] (set-age received) (enqueue ch "OK, Thank you!”))))
8.
gloss ;; Cの構造体イメージでパケットの仕様が記述できる (defcodec my-codec
{ :a :int32, :b (g/string :utf-8 :delimiters ["¥0"]), :c :ubyte}) ;; エンコード (def encoded (encode my-codec { :a 12345, :b "foo bar baz", :c 111})) ;; encodedの中身 (vec (.array (contiguous encoded))) ⇒ [0 0 48 57 102 111 111 32 98 97 114 32 98 97 122 0 111] ;; デコード (decode my-codec encoded) ⇒ {:c 111, :b "foo bar baz", :a 12345}
9.
その他情報 • Lamina –
hFps://github.com/ztellman/lamina – Stellman氏の解説動画 hFp://www.infoq.com/presentaUons/Event-‐Driven-‐Programming-‐in-‐Clojure • Gloss – hFps://github.com/ztellman/gloss • Sample – hFps://github.com/sukenosin/aleph-‐example
Descargar ahora