MD5crypt, GEOM, GBDE, FreeBSD шорон зэрэг системүүдэд хувь нэмрээ оруулсан FreeBSD-ийн нэрт хөгжүүлэгч Поул-Хеннинг Камп HTTP хурдасгуурын үүрэг гүйцэтгэх зориулалттай өндөр гүйцэтгэлтэй кэш прокси болох Varnish-Cache 8.0-г гаргасан. Уг төслийг BSD лицензийн дагуу түгээдэг бөгөөд өмнө нь Facebook, Wikimedia, Twitter, Vimeo, Tumblr, New York Times, Guardian зэрэг сайтууд ашиглаж байжээ.
Multithreading, epoll/kqueue дуудлага ашиглан холболтын олон талт холболт, sendfile болон madvise системийн дуудлагуудыг ашигласнаар өндөр гүйцэтгэлд хүрдэг. Стандарт техник хангамж дээр энэ нь 20 Gbps урсгалыг зохицуулж, хүсэлтийн хариуд 300-1000x хурдатгал өгдөг. Кэш нь виртуал санах ойд хадгалагддаг. Varnish-ийн өвөрмөц онцлог нь ESI (Edge Side Includes) хэлийг ашиглан буцаасан хуудсыг хэсэгчлэн угсарч, угсрах логикийг тодорхойлдог.
Varnish нь мөн C хэлний оруулгуудыг ашиглах боломжийг олгодог уян хатан тохиргооны системийг хангадаг. Тохиргоог тусгай VCL хэл ашиглан гүйцэтгэдэг бөгөөд үүнийг дараа нь гүйцэтгэгдэх боломжтой хоёртын код болгон хөрвүүлдэг. VCL нь хүсэлт боловсруулах бодлогыг тайлбарлах боломжийг олгодог: боловсруулах контентыг тодорхойлох, хаанаас авах, үйлчлэхээс өмнө хэрхэн хувиргах. Үндсэн функцийг модулиудаар дамжуулан өргөтгөж болно. Ачааллын тэнцвэржүүлэлт, төлөвийн удирдлага, арын хариу өгөх хугацааны механизмуудыг багтаасан болно.серверүүд.
Шинэ хувилбарыг зарлахтай зэрэгцээд төслийн нэрийн өөрчлөлтийг зарлав. Дараагийн хувилбараас эхлэн "Varnish Cache" нь нээлттэй эхийн Varnish Cache төсөлд хувь нэмрээ оруулж, санхүүгийн дэмжлэг үзүүлсэн Varnish Software компанид бүртгэлтэй Varnish барааны тэмдэгтэй холбоотой нэхэмжлэлийн улмаас "Vinyl Cache" гэж нэрлэгдэх болно. Хорин хоёр жилийн өмнө Varnish Cache-ийг хөгжүүлэх ажлыг Норвегийн Verdens Gang сонин санхүүжүүлж, код бичүүлэхээр Поул-Хеннинг Кампыг, түүнийг засварлахаар Линпрог хөлсөлжээ. Linpro дараа нь Varnish Software компанийг үүсгэн байгуулсан. Varnish Cache нэр нь нээлттэй эхийн төсөлтэй холбоотой болсон бол Varnish Software нь арилжааны компанитай холбоотой байв.
Нээлттэй эхийн төсөлд Varnish нэрийг ашиглахыг амаар тохиролцсоны дагуу зөвшөөрсөн бөгөөд Поул-Хеннинг Камп бичгээр тохиролцохыг шаардаагүй. Саяхныг хүртэл тус компани болон нээлттэй эхийн төсөл нь тайван замаар зэрэгцэн оршиж байсан боловч дараа нь оюуны өмчийн хуульчид хөндлөнгөөс оролцож, тодорхой зөвшөөрөлгүйгээр Varnish Cache нэрийг ямар ч нөхцөлд ашиглах боломжгүй гэж маргажээ.
Varnish Software-ээс зөвшөөрөл авах шаардлага нь зарим оролцогчдыг хөгжүүлэлтэд нэгдэхээс сэргийлсэн тул тохиролцоонд хүрэх оролдлого хийсэн. Гэсэн хэдий ч хуульчид Varnish Cache нэр нь Varnish Software-д харьяалагддаг бөгөөд тодорхой хязгаарлалт, хоригийн дагуу нээлттэй эхийн төсөлд ашиглахыг зөвшөөрдөг гэж мэдэгдсээр байна. Varnish Cache нь бие даасан төсөл болгон үргэлжлүүлэн хөгжүүлэх бодолтой байгаа тул эдгээр хязгаарлалтыг зөвшөөрөхөд бэлэн биш байна.
Нэрийг нь өөрчилсний дараа Дани улсын харьяанд үйл ажиллагаа явуулж буй хөгжлийг цаашид зохицуулах зорилгоор ашгийн бус түншлэл байгуулна. Дүрэмд тухайн байгууллага хөрөнгө эзэмших, захиран зарцуулах боломжгүй гэж заасан байдаг. Түүний тодорхойлсон зорилгод програм хангамжийг хөгжүүлэх, засвар үйлчилгээ хийх, түгээх зэрэг орно. Байгууллагад одоо байгаа гишүүд зөвшөөрсний дараа хэн ч элсэх боломжтой. Гишүүдээс сонгогдсон хороог удирдан зохион байгуулна.
Varnish-Cache 8.0-ийн гол шинэчлэлүүд:
- Үйлчлүүлэгчдийн хүсэлтийг хүлээн авч, хүсэлтийг арын хэсэгт дамжуулж, хариултыг кэш хийдэг лакны дэвсгэр процесс нь "uncacheable_ttl" параметрийг ашиглан кэш хийх боломжгүй гэж тэмдэглэгдсэн объектуудын амьдрах хугацааг (TTL) тодорхойлдог.
- ban_any_variant параметр нь өгөгдмөл нь 0 бөгөөд энэ нь блокийн жагсаалтыг зөвхөн тохирох объектын хувилбаруудад ашиглахад хүргэдэг.
- Зогсоох командыг өгснөөр одоо ажиллаж байгаа бүх гүйлгээ (VCL зохицуулагч) дуусахыг хүлээх болно.
- VCL кодоос "param. ".
- "304 өөрчлөгдөөгүй" хариултыг үүсгэх логикийг хүчингүй болгох чадварыг нэмсэн.
- Хуучин VMOD функцууд std.real2integer(), std.real2time(), std.time2integer() болон std.time2real() устгагдсан. Оронд нь "std.integer(real=std.round(…), нөөц=…)" эсвэл "std.integer(цаг=..., нөөц=..." синтаксийг ашиглах хэрэгтэй. Format_rfc1123() функцийг cookie.format_date() болгон өөрчилсөн.
- VUT болон varnishtest одоо эвдрэлийн дараа стекийн ул мөрийг бүртгэдэг.
- Varnishadm хэрэгсэл нь "obj.last_hit" хувьсагчаар шинэчлэгдсэн бөгөөд энэ нь кэшээс удаан хугацаанд хандаагүй объектуудыг устгах ажлыг зохион байгуулахад ашиглаж болно.
- VCP.ref_hit, VCP.ref_miss, transit_stored, transit_buffered статистикийн шинэ тоолуурыг varnishstat хэрэгсэлд нэмсэн.
Эх сурвалж: opennet.ru
