9 s ® - d m / 1 b ; ø...^ ¾ 7 m • services/app • consul • mysql(in rds) • redis,...

19
ᄓኮचԭلԯጱ قᶎ۸ຝਫ᪢ Michael Ding

Upload: others

Post on 30-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

Michael Ding

Page 2: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

• Ruby VS Python

• Ucloud VS

• Boss VS Boss

• 10 VS 1

Page 3: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

• Services/App

• Consul

• MySQL(in RDS)

• Redis, Twemproxy

• Elasticsearch

• Log collector

• Python App(Django, Flask, Tornado)

• MQ

• Spark(Not yet in Shanbay)

• Deploy

• Ansible

• bash

• NOT included

• Mesos

• K8s

Page 4: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

Consul https://consul.io

Page 5: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

• Service Discovery • register/deregister service

• HTTP/DNS interface

• Failure Detection • health check

• update service register

• Multi Datacenter

• Key/Value Storage • store information

• store data

Page 6: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

• register & deregister a service

• service health check & auto deregister unhealthy services

• query services & load balance based on DNS

Page 7: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

Docker https://www.docker.com

Page 8: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

• Docker VS VM(Virtual Machine)

• os kernel

• docker image: (fs)

• docker container:

Page 9: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

Service Distribution Workflow

Page 10: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

• Build: -> make image

• Ship: -> upload/download image

• Run: -> fetch config && create container && register service

Page 11: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

2 types of services

• Elasticsearch — normal service

• Django(uwsgi) — need gracefully reload

based on workflow

Page 12: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

Elasticsearch•

Get config

Run

Register service & health check

Image contains service

Page 13: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

Djangoreload instead of restart

when code updated

Image ONLY contains environments

Page 14: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

Web

Page 15: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •
Page 16: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •
Page 17: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

• HA(High Available) — Load Balance

• Easy to Scale Out —

• LL(Low Latency) —

• Developer Friendly —

• Team —

Page 18: 9 s ® - D M / 1 B ; ø...^ ¾ 7 m • Services/App • Consul • MySQL(in RDS) • Redis, Twemproxy • Elasticsearch • Log collector • Python App(Django, Flask, Tornado) •

–Johnny Appleseed

“Docker + Consul is just good for us.”