The Dragonfly նախագիծը մշակում է Redis-ի և Memcached-ի ավելի արագ փոխարինում

Հասանելի է Dragonfly հիշողության քեշավորման համակարգի առաջին թողարկումը, որն ապահովում է Memcached և Redis արձանագրությունների աջակցությունը, սակայն թույլ է տալիս հարցումները կատարել շատ ավելի բարձր կատարողականությամբ և հիշողության ավելի քիչ սպառմամբ: Համակարգը մանիպուլացնում է տվյալները բանալի/արժեք ձևաչափով և կարող է օգտագործվել որպես թեթև լուծում՝ բարձր բեռնված կայքերի աշխատանքը արագացնելու՝ դանդաղ հարցումները DBMS-ում և միջանկյալ տվյալները RAM-ում պահելու համար: The Dragonfly կոդը գրված է C/C++-ով և տարածվում է BSL (Business Source License) համաձայն:

BSL լիցենզիան առաջարկվել է MySQL-ի համահիմնադիրների կողմից՝ որպես Open Core մոդելի այլընտրանք։ BSL-ի էությունն այն է, որ առաջադեմ ֆունկցիոնալ ծածկագիրը ի սկզբանե հասանելի է փոփոխման համար, բայց որոշ ժամանակ կարող է օգտագործվել անվճար միայն այն դեպքում, եթե բավարարվեն լրացուցիչ պայմաններ, որոնք պահանջում են առևտրային լիցենզիա գնելու համար: Dragonfly նախագծի լիցենզիայի լրացուցիչ պայմանները պահանջում են, որ կոդը փոխանցվի Apache 2.0 լիցենզիային միայն 1 թվականի հունիսի 2027-ին: Մինչ այս լիցենզիան թույլ է տալիս կոդի օգտագործումը միայն իր ծառայությունների և ապրանքների շահագործումն ապահովելու համար, սակայն արգելում է օգտագործել վճարովի ամպային ծառայությունների ստեղծման համար, որոնք գործում են որպես Dragonfly-ի հավելում:

Ըստ մշակողների և ցուցադրված թեստերի, Dragonfly-ն հավակնում է լինել ամենաարագ հիշողության պահպանման համակարգը: Redis-ի համեմատ՝ Dragonfly-ն հասել է կատարողականի 25 անգամ բարձրացման և հիշողության սպառման եռակի կրճատման սովորական աշխատանքային ծանրաբեռնվածության համար: Մեկ Dragonfly սերվերը կարող է վայրկյանում մշակել միլիոնավոր հարցումներ, օրինակ՝ Amazon EC2 c6gn.16xlarge միջավայրում հնարավոր եղավ հասնել վայրկյանում 3.8 միլիոն հարցումների կատարման:

The Dragonfly նախագիծը մշակում է Redis-ի և Memcached-ի ավելի արագ փոխարինում

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

The Dragonfly նախագիծը մշակում է Redis-ի և Memcached-ի ավելի արագ փոխարինում

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

Առաջին թողարկումում առկա հնարավորությունների թվում նշվում է RESP2 արձանագրության և 130 Redis հրամանների աջակցությունը, ինչը մոտավորապես համապատասխանում է Redis 2.8 թողարկման ֆունկցիոնալությանը: Բացի այդ, Dragonfly-ն աջակցում է բոլոր memcached հրամաններին, բացառությամբ CAS-ի (check-and-set), ապահովում է նկարների ստեղծման ասինխրոն գործողությունների աջակցություն, ապահովում է կանխատեսելի հիշողության սպառում, ապահովում է ներկառուցված Lua 5.4 թարգմանիչ և աջակցում է տվյալների բարդ տեսակներ, ինչպիսիք են հեշերը, հավաքածուներ և ցուցակներ (ZSET, HSET, LIST, SETS և STRING):

Առանձին հասանելի է քեշավորման ռեժիմը, որն ավտոմատ կերպով փոխարինում է հին տվյալները նոր տվյալներով՝ ազատ հիշողությունը սպառելուց հետո: Տվյալներին հնարավոր է կցել ողջ կյանքի ընթացքում, որի ընթացքում տվյալները համարվում են համապատասխան: Պահպանման վիճակը կարող է լցվել սկավառակի վրա ֆոնային ռեժիմում՝ վերագործարկումից հետո հետագայում վերականգնելու համար: Համակարգը կառավարելու համար տրամադրվում է HTTP կոնսոլ (կապում է TCP 6379 պորտին) և API՝ վերադարձնելու չափումները, որոնք համատեղելի են Պրոմեթևսի հետ: Հետագա տարբերակներում մենք նախատեսում ենք ընդլայնել Redis-ի հրամանների աջակցությունը և իրականացնել պահեստավորման կրկնօրինակման հնարավորություն՝ սխալների հանդուրժողականություն և բեռի հավասարակշռում ապահովելու համար:

Source: opennet.ru

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