Slide 1

Slide 1 text

HeteroTSDB: ҟछࠞ߹ΩʔόϦϡʔετΞ Λ༻͍ͨࣗಈ֊૚ԽͷͨΊͷ ࣌ܥྻσʔλϕʔεΞʔΩςΫνϟ ௶಺ ༎थ, ࿬ࡔ ேਓ, ᖛా ݈, দ໦ խ޾(͸ͯͳ), Ѩ෦ ത(ϨϐμϜ,ίίϯ,JAIST), দຊ ྄հ(GMOϖύϘ,͘͞ΒΠϯλʔωοτ) 2018.12.6 ୈ11ճΠϯλʔωοτͱӡ༻ٕज़γϯϙδ΢Ϝ IOTS2018

Slide 2

Slide 2 text

໨࣍ 1. എܠͱ໨త 2. ࣌ܥྻσʔλϕʔεͷ՝୊ 3. HeteroTSDBΞʔΩςΫνϟ 4. ࣮ݧͱ࣮؀ڥ΁ͷద༻ 5. ·ͱΊ 2

Slide 3

Slide 3 text

എܠͱ໨త 3 1.

Slide 4

Slide 4 text

γεςϜܭଌͷॏཁੑͷߴ·Γ • Πϯλʔωοτ͕౰ͨΓલʹར༻Ͱ͖Δ࣌୅ • Մ༻ੑͱԠ౴଎౓΁ͷߴ͍ཁٻ • ཁٻΛຬ͍ͨͯ͠Δ͔Ͳ͏͔Λ֬ೝ͢ΔͨΊʹɺγεςϜΛৗ ʹܭଌ͢Δ͜ͱ(ϞχλϦϯά)͕ඞཁ • ϞχλϦϯάઐ༻ͷγεςϜߏஙɾӡ༻͕ඞཁ • ϞχλϦϯάγεςϜͷߏஙɾӡ༻ͷෛՙΛ࡟ݮ͢ΔͨΊʹϞ χλϦϯάαʔϏεͷར༻૿Ճ 4

Slide 5

Slide 5 text

࣌ܥྻσʔλϕʔε΁ͷཁٻ • ܭଌͨ݁͠ՌΛ࣌ܥྻʹه࿥͠औಘ͢ΔͨΊͷ࣌ܥྻσʔλϕʔ εΛར༻͢Δ͜ͱ͕͋Δ • ϞχλϦϯάαʔϏεఏڙͷͨΊʹ࣌ܥྻσʔλϕʔεʹର͢ Δߴ͍ੑೳཁٻ͕͋Δ • ߴॻ͖ࠐΈεέʔϧΞ΢τੑ • ߴՄ༻ੑ • ॻ͖ࠐΈॲཧޮ཰ • σʔλอଘޮ཰ 5

Slide 6

Slide 6 text

࣌ܥྻσʔλϕʔεͷ՝୊ • ϞχλϦϯάαʔϏεͷػೳ௥ՃͷͨΊʹσʔλߏ଄Λ֦ுͯ͠ ͍͘ඞཁ͕͋Δ • ͜Ε·Ͱͷख๏Ͱ͸֦ுੑΛߟྀ͞Ε͍ͯͳ͔ͬͨ • ઌߦख๏͸ີ݁߹ͳDBMS(σʔλϕʔε؅ཧγεςϜ)ʹґଘ 6 ຊൃදͰ͸ੑೳཁٻΛຬͨͭͭ͠ ՝୊ΛղܾͰ͖ΔΞʔΩςΫνϟͷఏҊ

Slide 7

Slide 7 text

ੑೳͱ֦ுੑΛཱ྆͢ΔΞʔΩςΫνϟఏҊ • ߴॻ͖ࠐΈεέʔϧΞ΢τੑͱߴՄ༻ੑ • εέʔϧΞ΢τͤ͞΍͍͢KVSΛར༻͢Δ • ॻ͖ࠐΈॲཧޮ཰ͱσʔλอଘޮ཰ • ϝϞϦͱσΟεΫͷ଎౓ࠩͱ༰ྔ୯Ձͷੑ࣭Λ૊Έ߹ΘͤΔ • ΠϯϝϞϦKVSͰॻ͖ࠐΈΛड͚෇͚ɺΦϯσΟεΫKVSͰݹ ͍࣌ܥྻσʔλΛอ࣋͢Δ • σʔλߏ଄ͷ֦ுੑ • ֦ு಺༰ʹ߹Θͤͯผ్DBMSΛ༻ҙ͠ॻ͖ࠐΈΛෳ੡͢Δ 7

Slide 8

Slide 8 text

࣌ܥྻσʔλϕʔεͷ ՝୊ 8 2.

Slide 9

Slide 9 text

࣌ܥྻσʔλϕʔεͷઌߦख๏ 9 0QFO54%# (PSJMMB *OqVY%# ॻ͖ࠐΈ εέʔϧΞ΢τੑ Մೳ Մೳ Մೳ ঎༻൛ͷΈ ߴՄ༻ੑ Ϋϥελػߏ༗Γ Ϋϥελػߏ༗Γ Ϋϥελػߏ༗Γ ॻ͖ࠐΈޮ཰ ϝϞϦόοϑΝ ΠϯϝϞϦ ϝϞϦόοϑΝ σʔλอଘޮ཰ ແѹॖ ѹॖ ѹॖ ૄ݁߹ੑ ີ݁߹ ີ݁߹ ີ݁߹

Slide 10

Slide 10 text

HeteroTSDB ΞʔΩςΫνϟ 10 3.

Slide 11

Slide 11 text

֦ுੑͷ͋Δ࣌ܥྻDBͷઃܭ • ີ݁߹ͳDBMSͦͷ΋ͷΛ֦ு͢Δ͜ͱ͸༰қͰ͸ͳ͍ • ༻్͝ͱʹҟͳΔෳ਺ͷDBMSΛ૊Έ߹Θͤͨҟछࠞ߹DBMS ʹΑΔૄ݁߹ԽΛ໨ࢦ͢ • ΠϯσοΫεͷΑ͏ͳ௥Ճͷσʔλߏ଄ͷͨΊͷDBMSΛઐ༻ ʹ഑ஔ͢Δ 11

Slide 12

Slide 12 text

ॻ͖ࠐΈޮ཰ͱσʔλอ࣋ޮ཰ͷཱ྆ • ߴ଎ͳΠϯϝϞϦKVSͰॻ͖ࠐΈΛड͚෇͚Δ • (1) ϝϞϦ͸σΟεΫͱൺֱ͠༰ྔ୯Ձ͕େ͖͍ • ΦϯσΟεΫKVS΁ݹ͍σʔλΛҠಈ͢ΔKVSͷࣗಈ֊૚Խ • (2) ΠϯϝϞϦKVSͷނো࣌ʹϝϞϦ্ͷσʔλ͕شൃ͢Δ • ϝοηʔδϒϩʔΧʔʹઌߦॻ͖ࠐΈ͓͖ͯ͠ɺσʔλফࣦ࣌ ʹϒϩʔΧʔ্ͷσʔλΛ࠶ॲཧ͠ɺΠϯϝϞϦKVS্ͷσʔ λΛ෮چͤ͞Δ 12

Slide 13

Slide 13 text

HeteroTSDBͷϑϩʔ 13 Message Broker (1) write Client Metric Writer Metric Reader In-Memory KVS On—Disk KVS (2) subscribe and write (3) migration (i) query (ii) read from each kvs (iii) merge datapoints (ii)

Slide 14

Slide 14 text

ΩʔόϦϡʔܗࣜΛલఏͱͨ࣌͠ܥྻσʔλߏ଄ 14 • (1) KVSͰ͸ൣғݕࡧ͕Ͱ͖ͳ͍࣮૷͕͋Δ • λΠϜελϯϓΛղ૾౓ͷഒ਺ʹἧ͑ͯॻ͖ࠐΈ(ΞϥΠϯϝϯτ) • (2) KVS΁ͷࢀরճ਺͕ଟ͍ • ҰͭͷΩʔόϦϡʔϖΞʹಉҰܥྻ಺ͷෳ਺ͷσʔλ఺Λ֨ೲ • (3) KVSͷΩʔόϦϡʔϖΞαΠζͷ੍ݶΛ௒͑ͯ͠·͏ • ݻఆ௕ͷλΠϜ΢Οϯυ΢ʹΑΓܥྻΛ෼ׂͯ֨͠ೲ • (4) ॻ͖ࠐΈΤϥʔ࣌ͷ࠶ࢼߦ࣌ʹಉ͡σʔλΛॏෳอଘͯ͠͠·͏ • ࣌ࠁΛΩʔͱͨ͠ϋογϡϚοϓʹΑΓɺ΂͖౳ʹॻ͖ࠐΈ

Slide 15

Slide 15 text

15 (3) λΠϜ΢Οϯυ΢ (4) ϋογϡϚοϓ (1) ΞϥΠϯϝϯτ (2) ܥྻ୯ҐͷϖΞ

Slide 16

Slide 16 text

KVSؒͷσʔλҠಈ: λΠϚʔख๏ • ΩʔόϦϡʔϖΞ୯ҐͰλΠϚʔΛઃఆ • λΠϚʔ͕0ʹͳΔͱτϦΨʔ͕ىಈ͠ϖΞ୯ҐͰσʔλҠಈ • ϖΞ୯ҐͷҠಈ͸ґଘؔ܎Λ࣋ͨͳ͍ಠཱͨ͠ॲཧͱͳΔͨΊɺ ฒߦॲཧ͕༰қ 16 • ࣮૷Ͱ͸TTL (Time To Live)Λར༻

Slide 17

Slide 17 text

KVSؒͷσʔλҠಈ: Χ΢ϯτख๏ • TTL͕ͳ͍KVSΛར༻͢Δ৔߹ • ܥྻ಺ͷσʔλ఺͕֓ͶҰఆִؒͰॻ͖ࠐ·ΕΔ͜ͱʹண໨ • σʔλ఺ͷॻ͖ࠐΈ࣌ʹɺλΠϜ΢Οϯυ΢಺ͷσʔλ఺͕Ұ ఆݸ਺Ҏ্Ͱ͋Ε͹σʔλΛҠಈ • Ҡಈʹ͸ɺλΠϜ΢Οϯυ΢಺ͷσʔλ఺ΛಡΈग़͠ɺҠಈઌ ͷKVSʹॻ͖ࠐΈɺҠಈݩͷσʔλ఺Λ࡟আ͢Δ • ్தͰॻ͖ࠐΈ͕ఀࢭͨ͠ܥྻʹ͍ͭͯ͸ɺఆظతʹશσʔλ ΛεΩϟϯ͠ɺҠಈॲཧΛ࣮ࢪ 17

Slide 18

Slide 18 text

σʔλߏ଄ͷ֦ு • ϦΞϧλΠϜॻ͖ࠐΈ • ϝοηʔδϒϩʔΧʔͷߪಡऀΛผ్༻ҙ͠ɺ௥ՃDBMSʹॻ ͖ࠐΈ • ॻ͖ࠐ·Εͨσʔλ͕֦ு͞ΕͨDBMS্ʹଈ൓ө • όονॻ͖ࠐΈ • ΠϯϝϞϦKVS͔ΒΦϯσΟεΫKVS΁Ҡಈ͢Δͱ͖ʹɺෳ਺ͷ ܥྻ಺σʔλ఺Λ·ͱΊͯ௥ՃDBMSʹॻ͖ࠐΈ • ௥ՃDBMS΁ͷॻ͖ࠐΈճ਺Λ࡟ݮ 18

Slide 19

Slide 19 text

HeteroTSDBΞʔΩςΫνϟͷ࣮૷ 19 • AWS্Ͱ࣮૷ • ҟछࠞ߹KVS؀ڥʹͯ૿Ճ͢Δӡ༻ෛ୲ ͷ࡟ݮͷͨΊαʔόϨεϓϥοτϑΥʔϜΛར༻ • ϝϞϦɺSSDɺ࣓ؾσΟεΫͷ3૚ߏ଄

Slide 20

Slide 20 text

HeteroTSDBΞʔΩςΫνϟ·ͱΊ • ΠϯϝϞϦKVSͱΦϯσΟεΫKVSʹΑΔࣗಈ֊૚Խ • ࣌ܥྻσʔλߏ଄ • ΞϥΠϯϝϯτɺλΠϜ΢Οϯυ΢ɺϋογϡϚοϓ • KVSؒͷσʔλҠಈ • λΠϚʔख๏: ΩʔόϦϡʔϖΞ୯ҐͰฒߦॲཧՄೳ • Χ΢ϯτख๏: TTLΛར༻Ͱ͖ͳ͍৔߹ʹར༻ • σʔλߏ଄ͷ֦ு • ϦΞϧλΠϜॻ͖ࠐΈ • όονॻ͖ࠐΈ 20

Slide 21

Slide 21 text

࣮ݧͱ࣮؀ڥ΁ͷద༻ 21 4.

Slide 22

Slide 22 text

22 ߲໨ ࢓༷ #FODINBSL $MJFOU &$Πϯελϯε ΠϯελϯελΠϓ 04 ,FSOFM DYMBSHF "NB[PO-JOVY .FTTBHF #SPLFS ,JOFTJT%BUB4USFBNT γϟʔυ਺ .FUSJD 8SJUFS -BNCEB
 ϝϞϦྔ ϥϯλΠϜ .# /PEFKT *O.FNPSZ ,74 &MBTUJ$BDIFGPS3FEJT ϊʔυλΠϓ γϟʔυ਺ DBDIFSMBSHF 0O%JTL,74 %ZOBNP%# ࣮ࡍͷϫʔΫϩʔυΛ໛ͨ͠ϕϯ νϚʔΧʔΛ࡞੒ • ΤʔδΣϯτ਺ • ΤʔδΣϯτͷϝτϦοΫૹ৴ ִؒ (1෼ݻఆ) • 1ճͷૹ৴͋ͨΓʹؚ·ΕΔϝτ ϦοΫ਺ (100ݻఆ) ΤʔδΣϯτ਺ 3FEJT ϊʔυ਺ %ZOBNP%# 8$6 1 1 1 1 P1~P4ͷύϥϝʔληοτΛ༻͍ͯϦιʔ εมԽΛ2࣌ؒ؍࡯͢Δ

Slide 23

Slide 23 text

࣮ݧ݁Ռ: ෼ؒॻ͖ࠐΈճ਺ 23 0 1 2 3 4 5 0 20 40 60 80 100 120 datapoint writes / min (mega) minutes In-Memory KVS On-Disk KVS ΠϯϝϞϦKVS΁ͷ෼ؒॻ͖ࠐΈճ਺͸ ໿4MͰҰఆ ΦϯσΟεΫKVS΁෼ؒॻ͖ࠐΈճ਺͸ 70k͔Β170kͷؒΛਪҠ ΦϯσΟεΫKVS΁ͷ ෼ؒॻ͖ࠐΈճ਺Λ ໿1/20ʹ࡟ݮͨ͜͠ͱ͕Θ͔Δ ॻ͖ࠐΈεϧʔϓοτͷ࣌ؒมԽ

Slide 24

Slide 24 text

24 0 10 20 30 40 50 60 70 80 90 100 0 20 40 60 80 100 120 0 2 4 6 8 10 12 14 16 CPU usage (%) Free memory size (GB) minutes master CPU usage (%) slave1 CPU usage (%) slave2 CPU usage (%) Free memory size (GB) 50෼Λ௒͑ͨͱ͜ΖͰ ۭ͖ϝϞϦ࢖༻ྔ͕10.5GBͰҰఆʹͳͬ ͍ͯΔͨΊσʔλҠಈͰ͖͍ͯΔͱ͍͑Δ CPUར༻཰ͱϝϞϦ࢖༻ྔ

Slide 25

Slide 25 text

25 0 2 4 6 8 10 12 14 16 18 P1 P2 P3 P4 0 100 200 300 400 500 600 writes / min (mega) writes / min (kilo) parameters set In-Memory KVS [writes/min (mega)] On-Disk KVS [writes/min (kilo)] ΠϯϝϞϦKVSϊʔυ਺ͱ ΦϯσΟεΫKVSͷΩϟύγ ςΟͷ૿Ճʹରͯ͠εϧʔϓο τ͕ઢܗʹεέʔϧ͍ͯ͠Δ ͱݴ͑Δ ΩϟύγςΟͱ ॻ͖ࠐΈεϧʔϓοτ ͷؔ܎

Slide 26

Slide 26 text

Mackerelͷ࣮؀ڥ΁ͷద༻ • 2017೥7݄͔Β2018೥8݄·Ͱͷ1೥ؒͷՔಇ࣮੷ • ಉظؒͷো֐݅਺2݅ɺނোճ਺2݅ • ো֐1: ಛఆͷΠϯϝϞϦKVSͷϊʔυʹॻ͖ࠐΈෛՙ͕ूத͠ɺϝϞ Ϧ্ݶʹୡ͠ɺOSʹڧ੍ఀࢭ͞Εɺσʔλফࣦൃੜ • ϝοηʔδϒϩʔΧʔ্ͷσʔλΛ࠶ॲཧ͠σʔλ෮چ • ো֐2: ಉҰͷϝτϦοΫ໊ͱλΠϜελϯϓΛ΋ͭσʔλ఺͕୹࣌ؒ ʹେྔʹॻ͖ࠐ·ΕɺΠϯϝϞϦKVSͷॻ͖ࠐΈαΠζ্ݶʹୡͨ͠ • ΠϯϝϞϦKVSʹॻ͖ࠐΉલʹॏෳΛഉআ͢Δ͜ͱͰղܾ 26

Slide 27

Slide 27 text

Mackerelͷ࣮؀ڥ΁ͷద༻ • ނোʹ͍ͭͯ͸ɺ͍ͣΕ΋ΠϯϝϞϦKVSͷϊʔυ͕ఀࢭ͠ɺ ౰֘ϊʔυ͕Ϋϥελ͔Β֎ΕΔ·ͰͷؒʹΤϥʔ͕ൃੜͨ͠ • Lambdaؔ਺࣮ߦͷࣗಈ࠶ࢼߦʹΑΓࣗಈͰσʔλ෮چ • Ұ෦ͷϝτϦοΫͷॻ͖ࠐΈ͕਺෼஗Ԇ͢ΔʹͱͲ·ͬͨ 27

Slide 28

Slide 28 text

࣮ݧͱ࣮؀ڥ΁ͷద༻ͷ·ͱΊ • ॻ͖ࠐΈॲཧޮ཰ • ΦϯσΟεΫKVS΁ͷॻ͖ࠐΈճ਺Λ1/20ʹ࡟ݮͰ͖ͨ • σʔλอଘޮ཰ • ΠϯϝϞϦKVSͷϝϞϦ࢖༻ྔ͕ຬഋʹͳΔ͜ͱͳ͘ɺσʔλҠಈͰ͖ ͍ͯΔ͜ͱΛ֬ೝͰ͖ͨ • ॻ͖ࠐΈεέʔϧΞ΢τੑ • KVSͷΩϟύγςΟ૿Ճʹର͢Δεϧʔϓοτͷઢܗ૿ՃΛ֬ೝͰ͖ͨ • ߴՄ༻ੑͱσʔλফࣦ଱ੑ • ࣮؀ڥʹద༻͢Δ͜ͱʹΑΓ֬ೝͰ͖ͨ 28

Slide 29

Slide 29 text

·ͱΊ 29 5.

Slide 30

Slide 30 text

·ͱΊ • ੑೳͱ֦ுੑΛཱ྆͢Δ࣌ܥྻσʔλϕʔεΞʔΩςΫνϟͷ ఏҊ • AWSͷϚωʔδυαʔϏεʹΑΓҟछࠞ߹σʔλετΞΛલఏ ͱͨ͠ΞʔΩςΫνϟͷߴ͍࣮ݱੑ • Mackerelͷ࣌ܥྻσʔλϕʔεͱͯ͠1೥ͷՔಇ࣮੷ 30

Slide 31

Slide 31 text

ࠓޙͷల๬ • ઌߦͷ࣌ܥྻσʔλϕʔεͱͷੑೳൺֱ࣮ݧ • σʔλߏ଄ͷ֦ுੑΛ׆͔ͨ͠ػೳͷ࣮૷ • σʔλ഑ஔ৘ใͷΠϯσΩγϯάʹΑΔࢀর໰͍߹ΘͤͷϨΠ ςϯγͷ࠷దԽ • ଟ࣍ݩσʔλϞσϧ΁ͷରԠ • KVSؒͷσʔλҠಈख๏ͷ൚༻Խ • ॲཧͱσʔλͱλΠϚʔΛҰମԽͨ͠σʔλύΠϓϥΠϯ 31