spring cloud * - alternative implementations of discovery, config & bus

23
Spring Cloud * Alternative implementations of Discovery, Config & Bus Spencer Gibb [email protected] @spencerbgibb spencer.gibb.us/preso

Upload: spring-by-pivotal

Post on 16-Apr-2017

7.153 views

Category:

Technology


0 download

TRANSCRIPT

Spring Cloud *Alternative implementations of

Discovery, Config & BusSpencer Gibb

[email protected]

@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

Spring Cloud ClusterBrixtonDistributed LocksLeader election

Spring Cloud ClusterHazelcast

Redis

ZookeeperFuture: Consul

Future: Etcd

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