spring cloud * - alternative implementations of discovery, config & bus
TRANSCRIPT
Spring Cloud *Alternative implementations of
Discovery, Config & BusSpencer Gibb
@spencerbgibbspencer.gibb.us/preso
Spring Cloud ComponentsService Discovery and RegistrationDistributed ConfigurationControl BusCluster primitives (Leader election, locks)
Spring Cloud: AngelNetflix EurekaSpring Cloud ConfigSpring Cloud Bus AMQP (Rabbitmq)No Cluster Implementation
Spring Cloud: BrixtonAdds
Hashicorp ConsulApache ZookeeperSleuth (Tracing)ClusterCoreOS etcd (Incubator)
EurekaNetflix OSSHighly 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 ClientGreenfield
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 AMQPBacked by RabbitmqDistributed actuatorPost messages via /bus/* actuator endpoints/bus/refresh and /bus/env
Apache ZookeeperConsistent Distributed Coordination
server (CP in CAP)
Started life as a Hadoop sub-project (2007?)
Mature, used in many companies
Spring Cloud Zookeeper ConfigUses Apache Curator libraryUses zookeeper to store hierarchical configurationMimics Spring Cloud Config Server loading orderUse a supervisory process like Netflix Exhibitor
Spring Cloud Zookeeper DiscoveryUses Apache Curator Service Discovery RecipeRequires ephemeral nodes (client must maintain active connection)Significant contribution from No Bus implementation
4finance
DEMO
ConsulFrom 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 ConfigUses consul Key/Value (K/V) HTTP API to store hierarchical
properties
Mimics Spring Cloud Config Server loading order
Spring Cloud Consul DiscoveryFull blown consul discovery service implementation
HTTP API and DNS interface
Rich health check system (HTTP, TCP or anything)
Spring Cloud Consul BusUses Consul Event HTTP API
Non-persistent control plane messages
Uses Spring Integration
Spring Cloud ConsulPolyglotAll-in-one (Discovery, config, bus, cluster)localhost:8500
Legacy support via DNS
DEMO
CoreOS EtcdIncubator 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 ConfigUses etcd Key/Value (K/V) HTTP API to store hierarchical
properties
Mimics Spring Cloud Config Server loading order
Spring Cloud Etcd DiscoveryBespoke implementation
creates value with TTL
Uses HTTP API
Spring @Scheduled heartbeat resets TTL
DEMO
Spring Cloud Lattice Discovery
Single tenant cloudfoundry--
Read Only
Lattice does registration
Uses CF Diego Receptor API
Connectors for: redis, mysql & rabbitmq
http://lattice.cf
Questions @spencerbgibb [email protected]
http://spencer.gibb.us/preso
Simplicity Itself: Service Discovery Overview
Knewton: Eureka vs Zookeeper
Stackshare: Service Discovery Comparison
Consul.io vs Zookeeper
Tech. Conversations: Zookeeper vs etcd vs
Consul
https://zookeeper.apache.org
https://coreos.com/etcd