rqlite 7.0-ի թողարկում՝ բաշխված, սխալ հանդուրժող DBMS՝ հիմնված SQLite-ի վրա

Տեղի ունեցավ բաշխված DBMS rqlite 7.0-ի թողարկումը, որն օգտագործում է SQLite-ը որպես պահեստավորման շարժիչ և թույլ է տալիս կազմակերպել կլաստերի աշխատանքը միմյանց հետ համաժամանակացված պահեստներից։ Rqlite-ի առանձնահատկություններից մեկը բաշխված անսարքության հանդուրժող պահեստի տեղադրման, տեղակայման և պահպանման հեշտությունն է, որը փոքր-ինչ նման է etcd-ին և Consul-ին, բայց օգտագործելով հարաբերական տվյալների մոդել՝ առանցքային/արժեքի ձևաչափի փոխարեն: Ծրագրի կոդը գրված է Go-ում և տարածվում MIT լիցենզիայի ներքո:

Բոլոր հանգույցները համաժամանակյա վիճակում պահելու համար օգտագործվում է Raft կոնսենսուսի ալգորիթմը: Rqlite-ն օգտագործում է բնօրինակ SQLite գրադարանը և go-sqlite3 դրայվերը, որի վերևում գործարկվում է շերտ, որը մշակում է հաճախորդի հարցումները, կատարում է վերարտադրություն այլ հանգույցների վրա և վերահսկում է առաջատար հանգույցի ընտրության վերաբերյալ կոնսենսուսի ձեռքբերումը:

Տվյալների բազայում փոփոխություններ կարող են կատարվել միայն որպես առաջատար ընտրված հանգույցի կողմից, սակայն գրելու գործողությունների հետ կապերը կարող են ուղարկվել նաև կլաստերի այլ հանգույցներին, որոնք կվերադարձնեն առաջնորդի հասցեն՝ հարցումը կրկնելու համար (հաջորդ տարբերակում նրանք խոստանում են ավելացնել հարցումների ավտոմատ փոխանցում առաջնորդին): Հիմնական շեշտը դրված է սխալների հանդուրժողականության վրա, ուստի DBMS-ը սանդղակվում է միայն կարդալու գործողություններով, իսկ գրելու գործառնությունները խցանման խնդիրն են: Հնարավոր է գործարկել rqlite կլաստերը մեկ հանգույցից, և այս լուծումը կարող է օգտագործվել HTTP-ի միջոցով SQLite մուտք ապահովելու համար՝ առանց սխալների հանդուրժողականություն ապահովելու:

Յուրաքանչյուր հանգույցի SQLite տվյալները պահվում են ոչ թե ֆայլում, այլ հիշողության մեջ: Raft արձանագրության ներդրման հետ շերտի մակարդակում պահվում է SQLite-ի բոլոր հրամանների գրանցամատյանը, որոնք հանգեցնում են տվյալների բազայի փոփոխությունների: Այս գրանցամատյանը օգտագործվում է կրկնօրինակման ժամանակ (վերարտադրում այլ հանգույցների հարցումների վերարտադրման մակարդակով), նոր հանգույց սկսելիս կամ կապի կորստից հետո վերականգնելու համար։ Գրանցամատյանի չափը նվազեցնելու համար օգտագործվում է ավտոմատ փաթեթավորում, որը սկսվում է որոշակի թվով փոփոխություններից հետո և հանգեցնում է նկարի ամրագրմանը, որի առնչությամբ սկսվում է նոր գրանցամատյան (հիշողության մեջ տվյալների բազայի վիճակը նույնական է լուսանկարին + կուտակված փոփոխությունների գրանցամատյանը):

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

  • Հեշտ է տեղակայել կլաստեր, առանց SQLite-ի առանձին տեղադրման անհրաժեշտության:
  • Կրկնվող SQL պահեստավորում արագ ձեռք բերելու ունակություն:
  • Պատրաստ է արտադրական նախագծերում օգտագործման համար (արտադրական աստիճան):
  • HTTP(S) API-ի առկայությունը, որը թույլ է տալիս թարմացնել տվյալները խմբաքանակի ռեժիմում և որոշել կլաստերի առաջատար հանգույցը: Նաև տրամադրվում է հրամանի տողի ինտերֆեյս և հաճախորդի գրադարաններ տարբեր ծրագրավորման լեզուների համար:
  • Այլ հանգույցների նույնականացման ծառայության առկայությունը, որը թույլ է տալիս դինամիկ կերպով ստեղծել կլաստերներ:
  • Աջակցություն հանգույցների միջև տվյալների փոխանակման կոդավորման համար:
  • Ընթերցանության ժամանակ տվյալների համապատասխանության և համապատասխանության ստուգման մակարդակը կարգավորելու ունակություն:
  • Միայն կարդալու ռեժիմով հանգույցները միացնելու կամընտիր հնարավորություն, որոնք չեն մասնակցում կոնսենսուսի որոշմանը և օգտագործվում են կլաստերի լայնածավալությունը կարդալու գործողությունների համար մեծացնելու համար:
  • Աջակցություն գործարքների ձեր սեփական ձևին, որը հիմնված է մեկ հարցումով հրամանների համակցման վրա (BEGIN, COMMIT, ROLLBACK, SAVEPOINT և RELEASE-ի վրա հիմնված գործարքները չեն աջակցվում):
  • Աջակցություն տաք կրկնօրինակներ ստեղծելու համար:

Նոր թողարկումում.

  • Ավելացվել է ավտոմատ rqlite կլաստերավորման աջակցություն՝ օգտագործելով հանգույցների հայտնաբերման նոր ծառայություն, որը կարող է աշխատել հյուպատոսի և այլնի բաշխված պահեստի հիման վրա: Ծառայությունը թույլ է տալիս rqlite հանգույցներին ինքնաբերաբար գտնել միմյանց. ադմինիստրատորը պարզապես պետք է գործարկի մի քանի հանգույց տարբեր սերվերների վրա՝ նշելով ընդհանուր Consul կամ etcd կլաստերի հասցեն (օրինակ՝ «example.com:8500»), և հանգույցներն ինքնաբերաբար կհայտնվեն։ համակցված կլաստերի մեջ: Առաջատար հանգույցը պարբերաբար թարմացնում է իր հասցեի մասին տեղեկատվությունը Հյուպատոսում կամ etcd պահեստում, ինչը թույլ է տալիս հետագայում փոխել առաջնորդը առանց այլ հանգույցների վերակազմավորման անհրաժեշտության, ինչպես նաև ավելացնել նոր հանգույցներ նույնիսկ առաջնորդը փոխելուց հետո: AWS Lambda-ով աշխատող Discovery ռեժիմի հին ծառայությունը դադարեցվել է:
  • CLI ինտերֆեյսը թույլ է տալիս միանգամից նշել մի քանի հոսթ. եթե առաջին հանգույցն անհասանելի է, ապա հաջորդ հոսթերը կկապվեն:
  • rqlited հրամանի տողի արգումենտների վերլուծության կոդը վերամշակվել է:
  • Հնացած protobuf փաթեթը դադարեցվել է:
  • BoltDB պահեստը, որն օգտագործվում է Raft արձանագրության իրականացման համար, փոխարինվել է bbolt-ով՝ etcd նախագծի պատառաքաղով:

Source: opennet.ru

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