Ang proyekto sa Dragonfly nagpalambo sa mas paspas nga pagpuli sa Redis ug Memcached

Ang una nga pagpagawas sa Dragonfly in-memory caching system anaa, nga naghatag suporta alang sa Memcached ug Redis nga mga protocol, apan gitugotan ang mga pangutana nga ipatuman nga adunay mas taas nga performance ug dili kaayo konsumo sa memorya. Ang sistema nagmaniobra sa datos sa key/value format ug mahimong gamiton isip lightweight nga solusyon aron mapadali ang trabaho sa high-load nga mga site, pag-cache sa hinay nga mga pangutana ngadto sa DBMS ug intermediate data sa RAM. Ang Dragonfly code gisulat sa C/C++ ug giapod-apod ubos sa BSL (Business Source License).

Ang lisensya sa BSL gisugyot sa mga co-founder sa MySQL isip alternatibo sa Open Core nga modelo. Ang esensya sa BSL mao nga ang code sa advanced functionality sa sinugdan magamit alang sa pagbag-o, apan sa pipila ka panahon mahimong magamit nga wala’y bayad kung ang dugang nga mga kondisyon matuman, nga nanginahanglan pagpalit usa ka komersyal nga lisensya aron makalikay. Ang dugang nga mga termino sa lisensya sa proyekto sa Dragonfly nanginahanglan nga ang code ibalhin sa lisensya sa Apache 2.0 lamang sa Hunyo 1, 2027. Hangtud niining panahona, gitugotan sa lisensya ang paggamit sa code aron masiguro lamang ang operasyon sa mga serbisyo ug produkto niini, apan gidid-an ang paggamit alang sa paghimo sa mga bayad nga serbisyo sa panganod nga molihok ingon usa ka add-on sa Dragonfly.

Sumala sa mga nag-develop ug gipakita nga mga pagsulay, ang Dragonfly nag-angkon nga ang labing paspas nga sistema sa pagtipig sa panumduman. Kung itandi sa Redis, nakab-ot sa Dragonfly ang 25 ka pilo nga pagtaas sa pasundayag ug tulo ka pilo nga pagkunhod sa konsumo sa panumduman alang sa kasagaran nga mga karga sa trabaho. Ang usa ka Dragonfly server makahimo sa pagproseso sa minilyon nga mga hangyo matag segundo, pananglitan, sa Amazon EC2 c6gn.16xlarge nga palibot posible nga makab-ot ang usa ka pasundayag nga 3.8 milyon nga mga hangyo matag segundo.

Ang proyekto sa Dragonfly nagpalambo sa mas paspas nga pagpuli sa Redis ug Memcached

Sa mga pagsulay alang sa pagtipig sa 5 GB nga datos, ang Dragonfly nanginahanglan 30% nga gamay nga memorya kaysa sa Redis. Kung maghimo mga snapshot gamit ang "bgsave" nga mando, ang pagkonsumo sa panumduman nagdugang, apan sa peak nga mga higayon kini nagpabilin nga hapit tulo ka beses nga mas gamay kaysa sa Redis, ug ang operasyon sa pagrekord sa snapshot mismo labi ka paspas (sa pagsulay, usa ka snapshot sa Dragonfly ang gisulat sa 30 segundos, samtang Redis - sa 42 segundos).

Ang proyekto sa Dragonfly nagpalambo sa mas paspas nga pagpuli sa Redis ug Memcached

Ang taas nga pasundayag nakab-ot salamat sa usa ka multi-threaded nga arkitektura nga wala’y pagpaambit sa mga kahinguhaan (gipaambit-wala), nga nagpasabut nga ang matag hilo gi-assign sa usa ka bulag nga separado nga processor nga adunay kaugalingon nga bahin sa datos, nagtrabaho nga wala’y mutexes ug spin lock. Aron masiguro ang atomicity kung nagtrabaho uban ang daghang mga yawe, gigamit ang gaan nga mga kandado sa VLL. Aron hapsay nga pagtipig sa impormasyon sa panumduman, gigamit ang dashtable nga istruktura, nga nagpatuman sa usa ka matang sa partitioned hash table.

Lakip sa mga bahin nga magamit sa una nga pagpagawas, ang suporta alang sa RESP2 protocol ug 130 nga mga mando sa Redis nahibal-an, nga gibana-bana nga katumbas sa pag-andar sa pagpagawas sa Redis 2.8. Dugang pa, ang Dragonfly nagsuporta sa tanang memcached commands gawas sa CAS (check-and-set), naghatag og suporta alang sa asynchronous nga mga operasyon alang sa pagmugna og mga snapshot, naghatag og predictable memory consumption, naghatag og built-in nga Lua 5.4 interpreter, ug nagsuporta sa komplikadong mga tipo sa datos sama sa hash, mga set, ug mga lista (ZSET, HSET, LIST, SETS ug STRING).

Ang usa ka mode sa caching gilain nga magamit, nga awtomatiko nga gipulihan ang daan nga datos sa bag-ong datos pagkahuman nahurot ang libre nga memorya. Posible nga ilakip ang tibuok kinabuhi sa datos diin ang datos giisip nga may kalabutan. Ang kahimtang sa pagtipig mahimong ma-flush sa disk sa background alang sa ulahi nga pagkaayo pagkahuman sa pagsugod. Aron madumala ang sistema, usa ka HTTP console ang gihatag (nagbugkos sa TCP port 6379) ug usa ka API alang sa pagbalik nga mga sukatan, nga nahiuyon sa Prometheus. Sa umaabot nga mga bersyon, nagplano kami nga palapdan ang suporta alang sa mga mando sa Redis ug ipatuman ang abilidad sa pagkopya sa pagtipig aron mahatagan ang pagtugot sa sayup ug pagbalanse sa pagkarga.

Source: opennet.ru

Idugang sa usa ka comment