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
Michael Nitschinger on Building a reactive Couc...
Search
Enterprise Java User Group Austria
September 29, 2015
Technology
0
120
Michael Nitschinger on Building a reactive Couchbase driver for the JVM
Enterprise Java User Group Austria
September 29, 2015
Tweet
Share
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
120
Spring Framework 5.2 - Core Container Revisited
ejug
0
140
Andreas Caternberg on Jenkins Pipelines
ejug
0
640
Martin Ahrer on Continuous Delivery Infrastructure With Docker
ejug
0
130
Dirk Mahler on Software Analyse mit jQAssistant & Neo4j
ejug
1
260
Christoph Strobl on Spring Data & Hypermedia
ejug
0
95
Stefan Armbruster on Graph Modelling Antipatterns
ejug
1
100
Stefan Armbruster on Introduction into Neo4J
ejug
1
81
Michael Nitschinger on State of the art JVM networking with Netty
ejug
1
56
Other Decks in Technology
See All in Technology
公開初日に個人環境で試した Gemini CLI 体験記など / Gemini CLI実験レポート
you
PRO
3
290
P2P通信の標準化 WebRTCを知ろう
faithandbrave
6
2.3k
Webの技術とガジェットで那須の子ども達にワクワクを! / IoTLT_20250720
you
PRO
0
120
AIコードアシスタントとiOS開発
jollyjoester
1
230
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
840
Snowflake のアーキテクチャは本当に筋がよかったのか / Data Engineering Study #30
indigo13love
0
250
会社もクラウドも違うけど 通じたコスト削減テクニック/Cost optimization strategies effective regardless of company or cloud provider
aeonpeople
2
140
(HackFes)米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
5
660
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
3
370
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
13k
AI エンジニアの立場からみた、AI コーディング時代の開発の品質向上の取り組みと妄想
soh9834
5
150
地図と生成AI
nakasho
0
680
Featured
See All Featured
Balancing Empowerment & Direction
lara
1
490
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
530
Code Reviewing Like a Champion
maltzj
524
40k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
BBQ
matthewcrist
89
9.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
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!