Pagpagawas sa Dragonfly 1.0, usa ka in-memory data caching system

Gipagawas na ang Dragonfly in-memory caching ug storage system, nga nagmaniobra sa datos sa key/value format ug mahimong gamiton isip lightweight nga solusyon alang sa pagpadali sa trabaho sa mga site nga daghan kaayog load, pag-cache sa hinay nga mga pangutana ngadto sa DBMS ug intermediate data sa RAM. Gisuportahan sa Dragonfly ang Memcached ug Redis nga mga protocol, nga nagtugot kanimo sa paggamit sa kasamtangan nga mga librarya sa kliyente ug pagbalhin sa mga proyekto gamit ang Memcached ug Redis ngadto sa Dragonfly nga walay pag-rework sa code.

Kung itandi sa Redis, nakab-ot sa Dragonfly ang 2 ka pilo nga pagtaas sa pasundayag (6 milyon nga hangyo matag segundo) alang sa kasagaran nga mga karga sa trabaho sa Amazon EC16 c25gn.3.8xlarge nga palibot. Kung itandi sa Memcached sa AWS c6gn.16xlarge nga palibot, ang Dragonfly nakahimo sa paghimo sa 4.7 ka beses nga mas daghan nga mga hangyo sa pagsulat matag segundo (3.8 milyon kumpara sa 806 ka libo) ug 1.77 ka beses nga mas daghang pagbasa nga mga hangyo matag segundo (3.7 milyon kumpara sa 2.1 milyon).

Pagpagawas sa Dragonfly 1.0, usa ka in-memory data caching system

Sa mga pagsulay alang sa pagtipig sa 5 GB nga datos, ang Dragonfly nanginahanglan 30% nga gamay nga memorya kaysa sa Redis. Kung nagmugna og mga snapshot gamit ang "bgsave" nga sugo, ang pagkonsumo sa memorya nagdugang, apan sa mga peak nga mga gutlo kini nagpabilin nga halos tulo ka pilo nga mas ubos kaysa sa Redis, ug ang snapshot recording nga operasyon mismo mas paspas (sa pagsulay, ang usa ka snapshot sa Dragonfly gisulat sa 30 segundos, samtang Redis - sa 42 segundos).

Pagpagawas sa Dragonfly 1.0, usa ka in-memory data caching system

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.

Pipila ka bahin sa Dragonfly:

  • Caching mode, nga awtomatik nga mopuli sa daan nga datos sa bag-ong datos human mahurot ang libre nga memorya.
  • Suporta alang sa pagbugkos sa datos sa tibuok kinabuhi diin ang datos giisip nga may kalabutan.
  • Suporta alang sa pag-flush sa estado sa pagtipig sa disk sa background alang sa ulahi nga pagkaayo pagkahuman sa pagsugod.
  • Ang presensya sa usa ka HTTP console (nagbugkos sa TCP port 6379) alang sa pagdumala sa sistema ug usa ka API alang sa pagbalik nga mga sukatan, nga nahiuyon sa Prometheus.
  • Suporta alang sa 185 nga mga mando sa Redis, nga halos katumbas sa pagpaandar sa pagpagawas sa Redis 5.
  • Gisuportahan ang tanan nga mga mando sa Memcached gawas sa CAS (check-and-set).
  • Suporta alang sa asynchronous nga mga operasyon alang sa paghimo og mga snapshot.
  • Gitagna nga konsumo sa memorya.
  • Gitukod-sa Lua 5.4 interpreter.
  • Nagsuporta sa komplikado nga mga tipo sa datos sama sa mga hash, set, lista (ZSET, HSET, LIST, SETS ug STRING) ug JSON nga datos.
  • Nagsuporta sa pagkopya sa pagtipig alang sa pagtugot sa sayup ug pagbalanse sa pagkarga.

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 alang sa proyekto sa Dragonfly nanginahanglan nga ang code ibalhin sa lisensya sa Apache 2.0 sa Marso 15, 2028. 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.

Ang Bersyon Dragonfly 1.0 nabantog tungod sa pagpatuman niini sa suporta alang sa pagkopya sa datos gikan sa nag-unang server ngadto sa ikaduha. Bisan pa, ang Dragonfly mahimong ma-configure aron magamit ingon usa ka ikaduha nga pagtipig nga makadawat mga datos gikan sa usa ka panguna nga server nga gibase sa Dragonfly o gibase sa Redis. Ang replication management API nahiuyon sa Redis ug gibase sa paggamit sa ROLE ug REPLICAOF (SLAVEOF) nga mga sugo.

Source: opennet.ru

Idugang sa usa ka comment