How Caffeine Cache Happened

An airhacks.fm conversation with Ben Manes (@benmanes) about: TRS 80, Tandy RadioShack 80 computer, never push the red button, playing Reader Rabbit on 287, the fascination with hardware, the experimentation with water cooling and thermopads, learning C++ and Java at the University in Chicago, starting with Java 1.4 at school, building corporate travel systems with Java 5, the six hour interview at Google with a binary search tree, working on CRM tool at Google, building an enterprise version of iGoogle in Java and GWT, using Guice and GWT GIN to implement iGoogle.next, using a perforce monorepo, perforce was replaced by internal system called "paper", using blaze and bezel build system, bezel is more distributed, one build file per package, starting at a logistics company with Java 15, the jetty, JAX-RS, keycloak,RESTEasy, jooq and google's guice, starting to write a cache in 2008, using memcached and Java Message System (JMS) for synchronization, Java 5 and the Concurrent Linked HashMap / LRU, building Google Guava cache, Concurrent HashMap was used by Apache Cassandra, Google's MapMaker is predecessor to Guava Cache, Caffeine work started in 2008, EHCache was not concurrent back then, Java 5 concurrent HashMap didn't scale well, Java 5 regions in HashMap were too big, there were too many entries per segment, Java 8 uses small hash bins and scales better, Caffeine builds on top of Java 8 ConcurrentHashMap, LRU and every reads is a write, cache policy can be lossy, using dynamically growing data structures, Caffeine uses Java Collections, Caffeine looks like a HashMap, Caffeine adapts automatically to the read-, write-, or mixed workload, Caffeine's configuration is descriptive, refresh policies, cache loader, expiration, asynchronous behavior, listeners, soft- and weak references were supposed to be the solution to everything, hit rates monitoring, micrometer, dropwizard, prometheus monitoring adapters are available, reasearch papers tend to lie, working with cockroachDB committers, Infinispan uses Caffeine, the bias against pre-made stack Ben Manes on twitter: @benmanes, Ben's GitHub account: github.com/ben-manes

Om Podcasten

Java, Serverless, Clouds, Architecture and Web conversations with Adam Bien