Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Node.jsの非同期とI/Oについて調べてみた
sadnessOjisan
December 09, 2019
Technology
2
660
Node.jsの非同期とI/Oについて調べてみた
sadnessOjisan
December 09, 2019
Tweet
Share
More Decks by sadnessOjisan
See All by sadnessOjisan
div 上にコメントを流す技術
sadnessojisan
0
85
Rust でパーソナルカラーを診断できる CLI を作った
sadnessojisan
0
52
サーバーアーキテクチャと非同期ランタイムいろいろ
sadnessojisan
0
440
SSG is a compiler
sadnessojisan
6
4.2k
不用品掲示サイトをMicroCMS + NextJS + vanilla-extract で作った話
sadnessojisan
3
750
preactの仕組みを理解する軽量版教育用preactを作ってる話
sadnessojisan
4
2.3k
TypeScriptのDIはどうすればいいの?
sadnessojisan
10
2.3k
簡単には届かなかったweb push/web-push-is-difficult#pwanight
sadnessojisan
2
300
gatsby-imageをやめたいから勉強した話 -gatsbyをamp化したい-
sadnessojisan
0
750
Other Decks in Technology
See All in Technology
Apple M1 CPUの脆弱性「PACMAN」について解説する
kuzushiki
0
110
How to start with DDD when you have a Monolith
javujavichi
0
370
Data in Google I/O - IO Extended GDG Seoul
kennethanceyer
0
170
20220628event_ogura_part
caddi_eng
0
150
【Pythonデータ分析勉強会#33】「DearPyGuiに入門しました」の続き~Image-Processing-Node-Editor~
kazuhitotakahashi
0
190
AWS Cognito で開発環境を守る
mixi_engineers
PRO
0
110
Design for Humans: How to make better modernization decisions
indualagarsamy
2
130
雑な攻撃からELBを守る一工夫 +おまけ / Know-how to protect servers from miscellaneous attacks
hiroga
0
740
Strategyパターン
hankehly
0
170
ドメイン知識の蓄積が開発に起こす100のこと
codmoninc
0
120
さいきんのRaspberry Pi。 / osc22do-rpi
akkiesoft
6
5.3k
アーキテクチャを明文化して開発に臨んだ話
akkie76
0
360
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
57
5.3k
Infographics Made Easy
chrislema
233
17k
The Art of Programming - Codeland 2020
erikaheidi
32
11k
Docker and Python
trallard
27
1.6k
How New CSS Is Changing Everything About Graphic Design on the Web
jensimmons
213
11k
Bash Introduction
62gerente
597
210k
From Idea to $5000 a Month in 5 Months
shpigford
373
44k
Clear Off the Table
cherdarchuk
79
280k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
315
19k
Facilitating Awesome Meetings
lara
29
4k
Fantastic passwords and where to find them - at NoRuKo
philnash
27
1.5k
Building Your Own Lightsaber
phodgson
94
4.6k
Transcript
Node.js I/O Node.js
Ginza.js#7 @PLAID Yuta Ide(@sadnessOjisan)
Yuta Ide ( ) @sadnessOjisan (Twitter, Github, Qiita)
Node.js
Node.js • • I/O • (
)
A B
C
" ! # $
1 A
C10K
Node.js
• • •
•
A B C
B A C
B A
C
I/O
I/O app
I/O • to RAM < to Disk •
network
I/O B A C
I/O I/O
I/O
I/O
Node.js
Node.js I/O
I/O AI/O *0͕ൃੜͯ͠ɺޙଓॲཧ Λߦ͏ɻ*0ྃޙʹͱ
ͱΓ͔ͨͬͨॲཧΛߦ͏ A
Node.js
I/O • I/O •
I/O https://www.packtpub.com/web- development/nodejs-design-patterns
Busy Wait Pattern • Bad • While
I/O
Reactor Pattern https://subscription.packtpub.com/book/web_development/9781 783287314/1/ch01lvl1sec09/the-reactor-pattern
https://subscription.packtpub.com/book/web_development/9781 783287314/1/ch01lvl1sec09/the-reactor-pattern ͳΜ͔Χοί͍͍ʂʂʂ
Demulti plexier I/O
Event queue I/O
Event loop Queue
queue OS
Kqueue https://nxmnpg.lemoda.net/ja/2/kqueue man
EV_SET(&kev, fd, EVFILT_VNODE, EV_ADD, NOTE_WRITE, 0, NULL); ret =
kevent(kq, &kev, 1, NULL, 0, NULL); https://github.com/sadnessOjisan/kqueue_fileio
Node.js
Node.js OS
MacFile I/O • Mac OS
libuv • I/O • OS
!
libuv • I/OOS • •
Q: Node.js
A: http://docs.libuv.org/en/v1.x/design.html
Default loop http://docs.libuv.org/en/v1.x/guide/basics.html
Wather http://docs.libuv.org/en/v1.x/guide/basics.html Node
Call back http://docs.libuv.org/en/v1.x/guide/basics.html
I/O
https://www.slideshare.net/saghul/libuv-nodejs-and-everything-in-between GTSFBE'JMF &7@4&5
https://www.slideshare.net/saghul/libuv-nodejs-and-everything-in-between Կ৮Ε͍ͯ ͳ͍
Node.jslibuv
N o d e. js
https://www.slideshare.net/saghul/libuv-nodejs-and-everything-in-between $ ͷόΠ ϯσΟϯά $PEF δϟϯϓ ͍ͨ͠
https://www.slideshare.net/saghul/libuv-nodejs-and-everything-in-between $ ͷόΠ ϯσΟϯά $PEF δϟϯϓ ͍ͨ͠ ͭΒ͍
fs.readFile https://www.slideshare.net/saghul/libuv-nodejs-and-everything-in-between "TZOD3FBEͳ ʹͯ͠Δͷʁ ˞͜Ε·ͩɺ ͑Θ͔Δ
node-main.cc https://www.slideshare.net/saghul/libuv-nodejs-and-everything-in-between MJCVWͷ XBUDIFSͲ ͜Ͱఆٛʁ
Node https://juejin.im/post/5dd0b1fff265da0bae519ed4 ˞தࠃޠͷυΩϡϝ ϯτΛ(PPHMF༁ ͯ͠ಡΜͰΔ
Ginza.js ଟ͜ͷลʹ͍Δ
Ginza.js ଟ͜ͷลʹ͍Δ mm
• Node.js " C10K%() • .' 0 I/O-$
• -$I/O & OS # */,!libuv+
• 12/23 •