Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Michael Nitschinger on Building a reactive Couc...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Enterprise Java User Group Austria
September 29, 2015
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Michael Nitschinger on Building a reactive Couchbase driver for the JVM
Enterprise Java User Group Austria
September 29, 2015
More Decks by Enterprise Java User Group Austria
See All by Enterprise Java User Group Austria
Gerrit Grunwald on What the CRaC... SUPERFAST JVM STARTUP
ejug
2
220
Spring Framework 5.2 - Core Container Revisited
ejug
0
190
Andreas Caternberg on Jenkins Pipelines
ejug
1
810
Martin Ahrer on Continuous Delivery Infrastructure With Docker
ejug
0
170
Dirk Mahler on Software Analyse mit jQAssistant & Neo4j
ejug
1
320
Christoph Strobl on Spring Data & Hypermedia
ejug
0
170
Stefan Armbruster on Graph Modelling Antipatterns
ejug
1
150
Stefan Armbruster on Introduction into Neo4J
ejug
1
120
Michael Nitschinger on State of the art JVM networking with Netty
ejug
1
94
Other Decks in Technology
See All in Technology
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
150
AI Agent入門〜今更聞けないAgentの話〜
hiromimaganuma
0
120
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.7k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
LLMに渡さなかった仕事
nanaism
0
13k
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
130
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
410
Lambda MicroVMsは常駐サーバーの代わりに なるか? Kiro Crew を動かして検証してみた / Kiro Crew on Lambda MicroVMs
k_adachi_01
2
240
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
100
GitHub Agentic Workflows を触ってみる
htkym
2
690
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
6
770
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
4
1.3k
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
340
Music & Morning Musume
bryan
48
7.4k
Everyday Curiosity
cassininazir
0
330
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
540
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
Side Projects
sachag
456
43k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
4 Signs Your Business is Dying
shpigford
187
23k
Scaling GitHub
holman
464
140k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
A Retrospective: Couchbase on the JVM or
how we’ve built the first reactive driver and still love it Michael Nitschinger, SDK Engineer
©2015 Couchbase Inc. 2 Some History
©2015 Couchbase Inc. 3 Memcached
©2015 Couchbase Inc. 4 Memcached
©2015 Couchbase Inc. 5 Membase + CouchOne =
©2015 Couchbase Inc. 6 = Couchbase
©2015 Couchbase Inc. 7 Java SDK 1.x
§ Extends Spymemcached § Adds Config & View Capabilities § Stable & Mature § Old codebase, difficult to maintain and evolve § API grew organically
©2015 Couchbase Inc. 8 Spymemcached § Initial
Work Started mid 2006 (Java 5) § No Generics § Memcached ASCII Protocol
©2015 Couchbase Inc. 9 API Inconsistencies
©2015 Couchbase Inc. 10 Reworking the API
©2015 Couchbase Inc. 11 From Key Value to
Documents Key Value Views N1QL Search mcd ✔ 1.8 ✔ 2.0 ✔ ✔ 3.0 ✔ ✔ 4.0 ✔ ✔ ✔ .next ✔ ✔ ✔ ✔
©2015 Couchbase Inc. 12 Reworking the API –
The Document
©2015 Couchbase Inc. 13 Reworking the API –
2.x
©2015 Couchbase Inc. 14 Reworking the API
©2015 Couchbase Inc. 15 Rx Semantics single
multiple sync T Iterable<T> async Future<T> Observable<T>
©2015 Couchbase Inc. 16 Rx Semantics Event
Iterable<T> Observable<T> data retrieval T next() onNext(T) discover error throws Exception onError(Throwable) complete returns onCompleted()
©2015 Couchbase Inc. 17 Consuming Observables 17
§ The Observer subscribes and receives events. § A cold Observable starts when subscribed. § onNext can be called 0..N times
©2015 Couchbase Inc. 18 RxJava: Creating Observables
just 18
©2015 Couchbase Inc. 19 RxJava: Creating Observables
19
©2015 Couchbase Inc. 20 RxJava: Creating Observables
20
©2015 Couchbase Inc. 21 RxJava: Creating Observables
21
©2015 Couchbase Inc. 22 RxJava: Creating Observables
22
©2015 Couchbase Inc. 23 RxJava: Creating Observables
23
©2015 Couchbase Inc. 24 RxJava: Transforming Observables
24
©2015 Couchbase Inc. 25 RxJava: Transforming Observables
25
©2015 Couchbase Inc. 26 RxJava: Transforming Observables
26
©2015 Couchbase Inc. 27 RxJava: Transforming Observables
27
©2015 Couchbase Inc. 28 RxJava: Transforming Observables
28
©2015 Couchbase Inc. 29 RxJava: Transforming Observables
29
©2015 Couchbase Inc. 30 RxJava: Transforming Observables
30
©2015 Couchbase Inc. 31 RxJava: Transforming Observables
31
©2015 Couchbase Inc. 32 RxJava: Transforming Observables
32
©2015 Couchbase Inc. 33 RxJava: Filtering Observables
33
©2015 Couchbase Inc. 34 RxJava: Filtering Observables
34
©2015 Couchbase Inc. 35 RxJava: Filtering Observables
35
©2015 Couchbase Inc. 36 RxJava: Filtering Observables
36
©2015 Couchbase Inc. 37 Simple Query 37
©2015 Couchbase Inc. 38 Parameterized Query 38
§ Named Params
©2015 Couchbase Inc. 39 Parametrized Query 39
§ Positional Params
©2015 Couchbase Inc. 40 Conditional Index Creation
40
©2015 Couchbase Inc. 41 Coordinated Fallback 41
©2015 Couchbase Inc. 42 Coordinated Retry: Builder
42 § Declarative API instead of complicated retryWhen
©2015 Couchbase Inc. 43 Levelling up the Architecture
©2015 Couchbase Inc. 44 Why Reactive? 44
©2015 Couchbase Inc. 45 Java != JVM
©2015 Couchbase Inc. 46 Architecture
©2015 Couchbase Inc. 47 Smart Batching
©2015 Couchbase Inc. 48 Backpressure
©2015 Couchbase Inc. 49 Netty
©2015 Couchbase Inc. 50 Netty – In the
next Session!