Spring Cloud Components
- Service Discovery and Registration
- Distributed Configuration
- Control Bus
- Cluster primitives (Leader election, locks)
Spring Cloud: Angel
- Netflix Eureka
- Spring Cloud Config
- Spring Cloud Bus AMQP (Rabbitmq)
- No Cluster Implementation
Spring Cloud: Brixton
Adds
- Hashicorp Consul
- Apache Zookeeper
- Sleuth (Tracing)
- Cluster
- CoreOS etcd (Incubator)
Eureka

- Netflix OSS
- Highly Available (prefers stale data vs
no data, AP in CAP)
- Long thresholds for registraion and
cache refresh (30s)
- Battle tested at Netflix
Config Server and Client
- Greenfield
- HTTP API similar to Netflix Config Server
- Backed by VCS (git initially, then svn added)
- Stateless
- Uses spring-boot configuration files & semantics
- Auto-configured client
Spring Cloud Bus AMQP
- Backed by Rabbitmq
- Distributed actuator
- Post messages via
/bus/*
actuator endpoints
/bus/refresh
and /bus/env
Apache Zookeeper

- Consistent Distributed Coordination
server (CP in CAP)
- Started life as a Hadoop sub-project (2007?)
- Mature, used in many companies
Spring Cloud Zookeeper Config
- Uses Apache Curator library
- Uses zookeeper to store hierarchical configuration
- Mimics Spring Cloud Config Server loading order
- Use a supervisory process like Netflix Exhibitor
Spring Cloud Zookeeper Discovery
- Uses Apache Curator Service Discovery Recipe
- Requires ephemeral nodes
(client must maintain active connection)
- Significant contribution from 4finance
- No Bus implementation
DEMO
Consul
- From Mitchell Hashimoto, creator of Vagrant
- Multi-datacenter aware
- peer-to-peer gossip system
- By default CP, but tunable
- Agent runs as a sidecar, connects to server cluster
- Web based UI
Spring Cloud Consul Config
- Uses consul Key/Value (K/V) HTTP API to store hierarchical properties
- Mimics Spring Cloud Config Server loading order
Spring Cloud Consul Discovery
- Full blown consul discovery service implementation
- HTTP API and DNS interface
- Rich health check system (HTTP, TCP or anything)
Spring Cloud Consul Bus
- Uses Consul Event HTTP API
- Non-persistent control plane messages
- Uses Spring Integration
Spring Cloud Consul
- Polyglot
- All-in-one (Discovery, config, bus, cluster)
- Legacy support via DNS
DEMO
CoreOS Etcd
- Incubator Project
(Not part of a release, yet)
- Distributed key/value store
- CP in CAP
- nice cli and HTTP API
- Many language bindings
Spring Cloud Etcd Config
- Uses etcd Key/Value (K/V) HTTP API to store hierarchical properties
- Mimics Spring Cloud Config Server loading order
Spring Cloud Etcd Discovery
- Bespoke implementation
- Uses HTTP API
- Spring
@Scheduled
heartbeat resets TTL
DEMO
Spring Cloud Lattice Discovery
- http://lattice.cf
- Single tenant cloudfoundry--
- Read Only
- Lattice does registration
- Uses CF Diego Receptor API
- Connectors for: redis, mysql & rabbitmq
Spring Cloud Cluster
- Brixton
- Distributed Locks
- Leader election
Spring Cloud Cluster
- Hazelcast
- Redis
- Zookeeper
- Future: Consul
- Future: Etcd