Dragonfly 1.0-ի թողարկում՝ հիշողության մեջ տվյալների քեշավորման համակարգ

Թողարկվել է Dragonfly հիշողության քեշավորման և պահպանման համակարգը, որը շահարկում է տվյալները բանալի/արժեք ձևաչափով և կարող է օգտագործվել որպես թեթև լուծում՝ բարձր բեռնված կայքերի աշխատանքը արագացնելու, դանդաղ հարցումները DBMS-ում և միջանկյալ տվյալները RAM-ում պահելու համար: Dragonfly-ն աջակցում է Memcached և Redis արձանագրությունները, որոնք թույլ են տալիս օգտագործել առկա հաճախորդների գրադարանները և տեղափոխել նախագծեր Memcached-ի և Redis-ի միջոցով Dragonfly-ին՝ առանց ծածկագիրը վերամշակելու:

Redis-ի համեմատ՝ Dragonfly-ն 2 անգամ ավելացրել է կատարողականը (6 միլիոն հարցում վայրկյանում) Amazon EC16 c25gn.3.8xlarge միջավայրում բնորոշ աշխատանքային ծանրաբեռնվածության համար: Համեմատած Memcached-ի հետ AWS c6gn.16xlarge միջավայրում, Dragonfly-ն կարողացավ վայրկյանում կատարել 4.7 անգամ ավելի շատ գրելու հարցումներ (3.8 միլիոն՝ 806 հազարի դիմաց) և 1.77 անգամ ավելի շատ կարդալու հարցումներ վայրկյանում (3.7 միլիոն՝ 2.1 միլիոնի դիմաց):

Dragonfly 1.0-ի թողարկում՝ հիշողության մեջ տվյալների քեշավորման համակարգ

5 ԳԲ տվյալների պահպանման թեստերում Dragonfly-ն պահանջել է 30%-ով ավելի քիչ հիշողություն, քան Redis-ը: «bgsave» հրամանով նկարներ ստեղծելիս հիշողության սպառումը մեծանում է, բայց պիկ պահերին այն մնացել է գրեթե երեք անգամ ավելի քիչ, քան Redis-ում, և լուսանկարի ձայնագրման գործողությունն ինքնին շատ ավելի արագ է (փորձության մեջ, Dragonfly-ի նկարը գրվել է 30 թ. վայրկյանում, իսկ Ռեդիսը` 42 վայրկյանում):

Dragonfly 1.0-ի թողարկում՝ հիշողության մեջ տվյալների քեշավորման համակարգ

Բարձր կատարողականություն է ձեռք բերվում բազմաշերտ ճարտարապետության շնորհիվ՝ առանց ռեսուրսների փոխանակման (համօգտագործվող-ոչինչ), ինչը նշանակում է, որ յուրաքանչյուր շղթայի հատկացվում է առանձին առանձին պրոցեսոր՝ տվյալների իր մասով, որն աշխատում է առանց մուտեքսների և պտտվող կողպեքների: Մի քանի ստեղներով աշխատելիս ատոմականություն ապահովելու համար օգտագործվում են թեթև VLL կողպեքներ: Հիշողության մեջ տեղեկատվությունը արդյունավետ պահելու համար օգտագործվում է dashtable կառուցվածքը, որն իրականացնում է բաժանված հեշ աղյուսակի մի տեսակ:

Dragonfly-ի որոշ առանձնահատկություններ.

  • Քեշավորման ռեժիմ, որն ավտոմատ կերպով փոխարինում է հին տվյալները նոր տվյալներով՝ ազատ հիշողությունը սպառելուց հետո:
  • Աջակցություն տվյալների հետ կապելու համար ողջ կյանքի ընթացքում, որի ընթացքում տվյալները համարվում են համապատասխան:
  • Աջակցում է սկավառակի հետին պլանում պահեստավորման վիճակի լվացմանը՝ վերագործարկումից հետո հետագայում վերականգնելու համար:
  • HTTP կոնսոլի առկայությունը (կապվում է TCP պորտին 6379) համակարգի կառավարման համար և API՝ վերադարձնելու չափումները, որոնք համատեղելի են Պրոմեթևսի հետ:
  • Աջակցություն 185 Redis հրամաններին, ինչը մոտավորապես համարժեք է Redis 5 թողարկման ֆունկցիոնալությանը:
  • Աջակցում է բոլոր Memcached հրամաններին, բացառությամբ CAS-ի (check-and-set):
  • Աջակցություն ասինխրոն գործառնություններին` նկարներ ստեղծելու համար:
  • Հիշողության կանխատեսելի սպառում:
  • Ներկառուցված Lua 5.4 թարգմանիչ:
  • Աջակցում է տվյալների բարդ տեսակներին, ինչպիսիք են հեշերը, հավաքածուները, ցուցակները (ZSET, HSET, LIST, SETS և STRING) և JSON տվյալները:
  • Աջակցում է պահեստավորման կրկնօրինակմանը սխալների հանդուրժողականության և բեռի հավասարակշռման համար:

The Dragonfly կոդը գրված է C/C++-ով և տարածվում է BSL (Business Source License) համաձայն: BSL լիցենզիան առաջարկվել է MySQL-ի համահիմնադիրների կողմից՝ որպես Open Core մոդելի այլընտրանք։ BSL-ի էությունն այն է, որ առաջադեմ ֆունկցիոնալ ծածկագիրը ի սկզբանե հասանելի է փոփոխման համար, բայց որոշ ժամանակ կարող է օգտագործվել անվճար միայն այն դեպքում, եթե բավարարվեն լրացուցիչ պայմաններ, որոնք պահանջում են առևտրային լիցենզիա գնելու համար: Dragonfly նախագծի համար լիցենզիայի լրացուցիչ պայմանները պահանջում են, որ կոդը փոխանցվի Apache 2.0 լիցենզիային 15 թվականի մարտի 2028-ին: Մինչ այս լիցենզիան թույլ է տալիս կոդի օգտագործումը միայն իր ծառայությունների և ապրանքների շահագործումն ապահովելու համար, սակայն արգելում է օգտագործել վճարովի ամպային ծառայությունների ստեղծման համար, որոնք գործում են որպես Dragonfly-ի հավելում:

Dragonfly 1.0 տարբերակն աչքի է ընկնում առաջնային սերվերից դեպի երկրորդական տվյալների կրկնօրինակման աջակցությամբ: Այնուամենայնիվ, Dragonfly-ն կարող է կազմաձևվել, որպեսզի օգտագործվի որպես երկրորդային պահեստ, որը տվյալներ է ստանում առաջնային սերվերից կամ հիմնված Dragonfly-ի կամ Redis-ի վրա: Replication management API-ը համատեղելի է Redis-ի հետ և հիմնված է ROLE և REPLICAOF (SLAVEOF) հրամանների օգտագործման վրա:

Source: opennet.ru

Добавить комментарий