Линукс io_uring дэд системийг ашиглан HTTP серверийг танилцуулсан

Линукс цөмд өгөгдсөн io_uring асинхрон оролт гаралтын интерфэйсийг ашигладгаараа онцлогтой авсаархан HTTP серверийг нийтлэв. Сервер нь HTTP/1.1 протоколыг дэмждэг бөгөөд маш их хэрэгцээтэй функцуудыг хангахын зэрэгцээ нөөц бага зарцуулдаг. Жишээлбэл, hinsightd нь TLS, урвуу прокси (rproxy), локал файлын систем дэх динамикаар үүсгэгдсэн агуулгыг кэшлэх, өгөгдлийн шууд шахалт, холболтгүй дахин эхлүүлэх, FastCGI болон CGI механизмуудыг ашиглан динамик хүсэлт боловсруулагчийг холбохыг дэмждэг. Төслийн код нь C хэл дээр бичигдсэн бөгөөд BSD лицензийн дагуу түгээгддэг.

Тохиргоог боловсруулах, нэмэлт бичих, хүсэлт боловсруулагч үүсгэхийн тулд Lua хэлийг ашиглах боломжийг олгодог бөгөөд ийм зохицуулагчийг серверийн тохиргооны файлд шууд тодорхойлж болно. Нэвтрүүлгийн хэлбэрээр бүртгэлийн форматыг өөрчлөх, бие даасан бүртгэлийг виртуал хостуудтай холбох, ачааллыг тэнцвэржүүлэх стратегийг тодорхойлох, HTTP баталгаажуулалт, URL дахин бичих, төлөвлөсөн хуваарьт ажил (жишээ нь, Шифрлэцгээе гэрчилгээг шинэчлэх) зэрэг функцууд хэрэгждэг. залгаасуудын хэлбэр.

Сервер нь таны хэрэглээний программууд руу харах функцийг нэгтгэх номын сантай ирдэг. Hinsightd нь командын мөрөөс HTTP хүсэлт илгээх нэгдсэн функцийг агуулдаг, жишээлбэл хуудсыг ачаалахын тулд та "hinsightd -d URL"-г ажиллуулж болно. Сервер нь маш авсаархан бөгөөд 200 КБ багтаамжтай (100 КБ ажиллах боломжтой ба 100 КБ хуваалцсан номын сан). Гадны хамааралд зөвхөн libc, lua, liburing болон zlib, сонголтоор openssl/libressl болон ffcall орно.

Цаашид хөгжүүлэх төлөвлөгөөнд шахсан файлуудыг кэшэд хадгалах чадвар, системийн дуудлагын шүүлтүүр болон нэрийн орон зайн хэрэглээнд суурилсан хамгаалагдсан хязгаарлагдмал орчинд тусгаарлалт хийх, зурвасын өргөнийг удирдах (трафик хэлбэржүүлэх), олон урсгалтай ажиллах, алдааны зохицуулалтыг сайжруулах, маск дээр суурилсан виртуал хостуудыг тодорхойлох зэрэг орно.

250 ба 500 (хаалтанд) зэрэгцээ хүсэлтүүдийг ("ab -k -c 250 -n 10000 http://localhost/") ажиллуулах үед ab хэрэгслээр хийсэн синтетик гүйцэтгэлийн туршилтын үр дүн (тохиргооны оновчлолгүйгээр):

  • hisightd/0.9.17 - секундэд 63035.01 хүсэлт (54984.63)
  • lighttpd/1.4.67 - секундэд 53693.29 хүсэлт (1613.59)
  • Apache/2.4.54 - секундэд 37474.10 хүсэлт (34305.55)
  • Caddy/2.6.2 - секундэд 35412.02 хүсэлт (33995.57)
  • nginx/1.23.2 - секундэд 26673.64 хүсэлт (26172.73)

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх