UBER RUSH AND REBUILDING UBERS DISPATCHING PLATFORM motivation - - PowerPoint PPT Presentation

uber rush
SMART_READER_LITE
LIVE PREVIEW

UBER RUSH AND REBUILDING UBERS DISPATCHING PLATFORM motivation - - PowerPoint PPT Presentation

UBER RUSH AND REBUILDING UBERS DISPATCHING PLATFORM motivation CHAPTER 1 OF 8 MOTIVATION TOWARDS MICROSERVICES STUNTS AND EXPERIMENTS UBER RUSH, DELIVERY SERVICE MOTIVATION TOWARDS MICROSERVICES UBER RUSH REQUIREMENTS MOTIVATION TOWARDS


slide-1
SLIDE 1

UBER RUSH

AND REBUILDING UBER’S DISPATCHING PLATFORM

slide-2
SLIDE 2

motivation

CHAPTER 1 OF 8

slide-3
SLIDE 3

MOTIVATION TOWARDS MICROSERVICES

STUNTS AND EXPERIMENTS

slide-4
SLIDE 4

UBER RUSH, DELIVERY SERVICE

MOTIVATION TOWARDS MICROSERVICES

slide-5
SLIDE 5

UBER RUSH REQUIREMENTS

MOTIVATION TOWARDS MICROSERVICES

BULK DELIVERIES MULTI-DISPATCH SOPHISTICATED MATCHING CAPACITY MANAGEMENT MULTI-PICKUP

slide-6
SLIDE 6

UBER EATS REQUIREMENTS

MOTIVATION TOWARDS MICROSERVICES

TEMPERATURE REGULATION INVENTORY MANAGEMENT RE-SUPPLY STATIONS CHECKOUT FLOW NO PICKUP LOCATION

slide-7
SLIDE 7

evolution

CHAPTER 2 OF 8

slide-8
SLIDE 8

MONOSERVICE TO MICROSERVICES

MONOLITHIC ARCHITECTURE DISPATCH

MONOSERVICE CONFIG USER CACHE ETA SURGE GEO- CODE

POST- PROCESSOR

MONOSERVICE CARS

slide-9
SLIDE 9

1ST GENERATION MICROSERVICES

MONOSERVICE TO MICROSERVICES

LOGISTICS SERVICES FOUNDATIONAL SERVICES PLATFORM SERVICES DEPENDENCIES ONEDIRECTION FLIPR ARBITER GOLDETA GEOCOD CEREBRO SUPPLY DEMAND GEOSPATIAL RAMEN SYNC

  • INV. MGMT

LOCKET OPTIC

DISPATCH

MONOSERVICE

slide-10
SLIDE 10

MONOSERVICE TO MICROSERVICES

LOGISTICS SERVICES FOUNDATIONAL SERVICES PLATFORM SERVICES DEPENDENCIES ONEDIRECTION FLIPR ARBITER GOLDETA GEOCOD CEREBRO SUPPLY DEMAND GEOSPATIAL DISCO RAMEN SYNC

  • INV. MGMT

LOCKET SCAVENGER OPTIC RTTR LUMBERGH UDESTROY GEOFENCE

DISPATCH

2ND GENERATION MICROSERVICES

slide-11
SLIDE 11

A MICROSERVICE GATEWAY

MONOSERVICE TO MICROSERVICES

LOGISTICS SERVICES FOUNDATIONAL SERVICES PLATFORM SERVICES DEPENDENCIES ONEDIRECTION FLIPR ARBITER GOLDETA GEOCOD CEREBRO SUPPLY DEMAND GEOSPATIAL DISCO RAMEN SYNC

  • INV. MGMT

LOCKET SCAVENGER OPTIC RTTR LUMBERGH UDESTROY GEOFENCE

DISPATCH GATEWAY

slide-12
SLIDE 12

MOTIVATION TOWARDS MICROSERVICES

THE TRADE-OFFS

MONOSERVICE vs. MICROSERVICE

TEST SUITE IS SLOW FAILURE IS CATASTROPHIC CODE IS BRITTLE DEPLOYS ARE SLOW UPGRADES ARE PAINFUL

slide-13
SLIDE 13

topologies

CHAPTER 3 OF 8

slide-14
SLIDE 14

MICROSERVICE LAYOUT

INDEPENDENT, INDIVIDUALLY ADDRESSABLE SERVERS DEMAND SERVICE

HOST SERVICE WORKERS MICROSERVICE LOAD AVERAGE

slide-15
SLIDE 15

ARRANGEMENT OF MICROSERVICES

MULTI-TENANT OR DEDICATED HOSTS?

DEMAND SUPPLY DISCO

DEDICATED DEMAND HOST MULTI-TENANT HOSTS OR

OPTIC

slide-16
SLIDE 16

communications and fault tolerance

CHAPTER 4 OF 8

slide-17
SLIDE 17

MANAGING MICROSERVICE DEPENDENCIES

AUTO-GENERATED CLIENTS JSON OVER HTTP THRIFT OVER HTTP

DEMAND MICROSERVICE DISCO MICROSERVICE LUMBERGH

slide-18
SLIDE 18

LOAD-BALANCING MICROSERVICES

WITH CLIENT-SIDE LOAD-BALANCING

A B B B

A TALKS DIRECTLY TO B

HEALTH CHECKING PERSISTENT CONNECTIONS CONNECTION POOLING RETRIES HOT HOST FILE RELOADING

slide-19
SLIDE 19

COOPERATIVE MICROSERVICE INSTANCES

FROM INDEPENDENT WORKERS TO COOPERATIVE

INDEPENDENT DEMAND HOSTS AND WORKERS COOPERATIVE DEMAND WORKERS ACROSS MANY HOSTS GOSSIP WITH ONE ANOTHER AND MAINTAIN A HASH RING OF EACH WORKER

232

slide-20
SLIDE 20

COOPERATIVE MICROSERVICE INSTANCES

WITH RINGPOP @ GITHUB.COM/UBER/RINGPOP

EACH DEMAND WORKER OWNS A PORTION OF THE KEYSPACE

> hash('10.31.1.2:9000') 53554892 > hash('10.31.8.9:9000') 1325776234 232

HASH WORKER ADDRESSES

> hash('33e2dc8c-16fd-4a19-9fad-4ebfc76c66c9') 2312992577 > hash('8828169c-69c5-4b79-ae5e-6204c5f615ff') 2640491360

HASH APPLICATION IDS

slide-21
SLIDE 21

RELIABLE BACKGROUND OPERATIONS

210

232

VNODE KEYSPACE (OUTER RING)

FIXED AND SMALLER

ENTITY KEYSPACE (INNER RING)

DYNAMIC AND LARGER

WITH HASH RING TECHNOLOGY

slide-22
SLIDE 22

RELIABLE BACKGROUND OPERATIONS

WITH HASH RING TECHNOLOGY

DEMAND A WORKER RECEIVES DELIVERY & INITIATES DISPATCH DEMAND A WORKER WRITES UUID TO VNODE SET IN THE DB AND STARTS TIMER

2

DEMAND A WORKER CRASHES BEFORE IT EXPIRES DISPATCH

3

Demand A Riak

hash(uuid) % 1024 POST /jobs

1

slide-23
SLIDE 23

RELIABLE BACKGROUND OPERATIONS

DEMAND B DETECTS MEMBERSHIP CHANGE IN RING

4

DEMAND B LOADS VNODE SET FROM DB AND RESTORES BACKGROUND TIMERS

6

for vnode in range(0, 1023) if lookup(vnode) == whoami() restore(load_uuids(vnode)) Riak

WITH HASH RING TECHNOLOGY

5

1023 DEMAND B SCANS ENTIRE VNODE KEYSPACE

slide-24
SLIDE 24

failure, monitoring and alerting

CHAPTER 5 OF 8

slide-25
SLIDE 25

FAILURE TESTING MICROSERVICES

WITH REPEATABLE FAILURE SCENARIOS

slide-26
SLIDE 26

FAULT ISOLATION IN MICROSERVICES

WITH DEPLOYMENT PODS

DISPATCH GATEWAY

DEMAND v1 SUPPLY v1 SUPPLY v2 DEMAND v2

POD 1 POD 2 GEOFENCE MICROSERVICE FLIPR MICROSERVICE

40.645244,

  • 73.9449975

POD 2

slide-27
SLIDE 27

MICROSERVICE ALERTING

WITH GRAPHITE/NAGIOS INTEGRATED THRESHOLD CHECKS

IMPORTED PYTHON BUILT AGAINST GRAPHITE PER REPO THRESHOLDS ALERTS THROUGH NAGIOS

slide-28
SLIDE 28

scalability and sharding

CHAPTER 6 OF 8

slide-29
SLIDE 29

PARTITIONING A MICROSERVICE

A SCALABLE GEOSPATIAL INDEX

EARTH IS BROKEN UP INTO

  • CELLS. EACH CELL HAS AN ID.

GEOSPATIAL READS/WRITES CONVERTS LAT/LNG TO CELL

  • ID. CELL ID IS THEN HASHED

ALONG RING. REQUEST IS EITHER HANDLED OR FORWARDED BY ONE OF THE 1300 GEOSPATIAL INDEX WORKERS.

> convert(40.645, -73.944) “864c244” > hash(“864c244”) 3747631425 > lookup(3747631425) “10.31.1.2:9000”

1 2

864c244

3

READ OR WRITE

slide-30
SLIDE 30

LOCATION-AWARE MICROSERVICES

WITH CONTEXT-SPECIFIC METADATA

1

POST /pickup

X-Uber-City-ID: 1 X-Uber-City-Name: New York

3

SERVICE PROCESSES REQUEST WITHIN CONTEXT OF CITY

2

DISPATCH GATEWAY RESOLVES LAT/LNG AGAINST GEOFENCE SERVICE DEVICE SENDS PICKUP REQUEST TO DISPATCH GATEWAY

POST /pickup ?lat=40.70&lng=-73.97

DISPATCH GATEWAY DISPATCH GATEWAY

slide-31
SLIDE 31

performance and diagnostics

CHAPTER 7 OF 8

slide-32
SLIDE 32

HIGH-PERFORMANCE MICROSERVICES

WITH TCHANNEL @ GITHUB.COM/UBER/TCHANNEL

MULTIPLEXING STREAMING RETRIES + CIRCUIT BREAKING POWERS RINGPOP PERFORMANT

slide-33
SLIDE 33

HIGH-PERFORMANCE MICROSERVICES

WITH NODESTAP @ GITHUB.COM/UBER/NODE-STAP

1 2

TORCH LIVE PROCESS OPEN FLAMEGRAPH IN BROWSER

slide-34
SLIDE 34

DEBUGGING MICROSERVICES

INSPECT INTERNALS WITH NODE REPL

1

CURL REPL ENDPOINT FOR REPL PORT

2

TELNET INTO REPL

3

INSPECT THE STATE OF YOUR WORKER

slide-35
SLIDE 35

the next generation

CHAPTER 8 OF 8

slide-36
SLIDE 36

NEXT GENERATION MICROSERVICES

A OVERLAY NETWORK FOR MICROSERVICE ROUTING

DISCO MICROSERVICE SUPPLY MICROSERVICE DEMAND MICROSERVICE OPTIC MICROSERVICE REGISTER REGISTER SEND FORWARD SEND

ROUTING SERVICE

slide-37
SLIDE 37

THANKS!

Presented by Jeff Wolski <wolski@uber.com>

Uber is hiring!