Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
非同期ツールキット「Vert.x」のご紹介
Search
Masatoshi Itoh
November 18, 2023
Programming
0
280
非同期ツールキット「Vert.x」のご紹介
JavaDoでしょう#23 Java21リリース記念イベント@札幌 で使用したLT資料です。
Vert.xの「非同期」以外のおすすめポイントを紹介します!
Masatoshi Itoh
November 18, 2023
Tweet
Share
More Decks by Masatoshi Itoh
See All by Masatoshi Itoh
Hello - 本を書く- World !!
masatoshiitoh
0
69
TPI NEXTを読みました
masatoshiitoh
0
130
サーバーサイド開発にありがたい GitHub Copilot / ChatGPT
masatoshiitoh
1
930
コードを書いたら負けなのか?
masatoshiitoh
0
410
1999年 最新バックアップ事情
masatoshiitoh
0
200
Google I/O 報告 (Google Assistant)
masatoshiitoh
0
470
GDC報告会資料 海外に見る「生産性改善」動向
masatoshiitoh
0
1.3k
イケメンシリーズでのORMとスロークエリ対策について
masatoshiitoh
0
2.7k
Erlangご紹介 websocket編
masatoshiitoh
0
2.8k
Other Decks in Programming
See All in Programming
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
5
1.2k
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
190
ゆるやかにgolangci-lintのルールを強くする / Kyoto.go #56
utgwkk
2
550
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
360
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
800
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
8
1.7k
DevFest - Serverless 101 with Google Cloud Functions
tunmise
0
130
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
120
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
270
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
790
テストコード書いてみませんか?
onopon
2
250
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
1.1k
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
Visualization
eitanlees
146
15k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Documentation Writing (for coders)
carmenintech
67
4.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Why Our Code Smells
bkeepers
PRO
335
57k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
200
Statistics for Hackers
jakevdp
796
220k
The Cost Of JavaScript in 2023
addyosmani
46
7k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
How to train your dragon (web standard)
notwaldorf
88
5.8k
Transcript
非同期ツールキット 「Vert.x」のご紹介 2023/11/18 JavaDoでしょう#23 Java21リリース記念イベント@札幌 @masatoshiitoh (twitter/X)
自己紹介 いとうまさとし(Twitter: @masatoshiitoh) 株式会社セガ札幌スタジオ 今回の発表はセガサミーグループの技術スタックや開発・運 営中のタイトルとは全く関係ありません
過去作品 Speed.rbbtoday.com(IRI-CT、現イード在籍当時に開発) 最近のGist Camel から Camel Vert.x component 経由でVert.xクラス タのイベントバスを読み書きする とにかくApache Camelを動かしてみるための最初の手順
今回は Vert.xが楽しい、というお話をします
今回は Vert.xが楽しい、というお話をします 非同期の話はしません(え 今回の発表はセガサミーグループの技術スタックや開発・運 営中のタイトルとは全く関係ありません
Vert.x について 1. Vert.x は、 Eclipse Foundation のプロジェクトのひとつ 2. JVM
(Java Virtual Machine) で動作します 3. 非同期プログラミングをサポートするツールキットです
Vert.x について 非同期アプリケーションの何がうれしいか? 1. OSスレッドを節約できる 2. CPUリソースを比較的有効に使える … このあたりはグリーンスレッドで解消!(しょんぼり
PROS v.s. CONS Pros 1. アプリケーション内のサブプロセス的に使えるVerticleが便利 2. イベントバス経由のメッセージ交換が便利 3. アプリケーションレベルのクラスタが組みやすい
Cons 1. Spring Boot+グリーンスレッドが、ほとんどのケースで楽
Verticleとは Vert.xアプリケーションの内部で動作する、アクターモデル のように利用できるクラスです AbstractVerticleを継承します Verticle用途例 ひとかたまりの機能を担当(例:ウェブサーバー機能)
イベントバスとだけやりとりして動作するアクター “Character.player.123456” “Character.npc.shop01”
Verticleとは 定義: public class QueryApiVerticle extends AbstractVerticle { @Override public
void start() throws Exception { vertx.eventBus().consumer("query", message -> { System.out.println(“MSG:" + message.body()); message.reply("Query received!"); }); } 起動: vertx.deployVerticle(new QueryApiVerticle());
イベントバス とは Vert.x上で使用できるメッセージング機構です データの送受信モデルとして、どちらも使用可能です Publish – Consume
Publish – Subscribe 送受信のキーは文字列で指定可能です
イベントバス とは 送信側: vertx.eventBus().request("query", params, reply -> { if (reply.succeeded())
{ routingContext.response() .putHeader("content-type", "text/plain") .end((String) reply.result().body()); } else { routingContext.response() .putHeader("content-type", "text/plain") .end("Failed to send query!"); } }); 受信側: vertx.eventBus().consumer("query", message -> { System.out.println(“MSG:" + message.body()); message.reply("Query received!"); });
クラスタを 組む、とは Vert.xは、Vert.x同士のクラスタを構築してHA環境を実現 できます HazelcastやZookeeper、Apache Igniteなどを使ってクラ スタマネージャを実現しています
クラスタ内はイベントバスを使ってメッセージングできるほ か、Key-Valueストア、ロック、カウンターがクラスタマ ネージャによって提供されます
クラスタを 組む、とは クラスタマネージャーの追加(pom.xml): <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-hazelcast</artifactId> <version>4.4.0</version> </dependency> クラスタを有効にする(pom.xml): <plugin>
<artifactId>exec-maven-plugin</artifactId> : <configuration> <mainClass>io.vertx.core.Launcher</mainClass> <arguments> <argument>run</argument> <argument>${main.verticle}</argument> <argument>-cluster</argument> :
クラスタを 組む、とは Hazelcast クラスタマネージャであれば、同じサブネット上 で起動すれば自動でつながる 外部連携、たとえばCamelのVert.xコンポーネントも、クラ スタ経由で接続するみたい(調査資料↓) Camel
から Camel Vert.x component 経由でVert.xクラ スタのイベントバスを読み書きする (github.com) https://gist.github.com/masatoshiitoh/9aeb0e00a3e177f080cff4a0130a576b
というわけで Vert.xって楽しそうかも? と思っていただけたら幸いです
ご清聴 ありがとう ございました (セガ札幌スタジオ、中途採用絶賛おこなってます)