ტექნოლოგიურმა საზოგადოებამ ახალი, მცირე ზომის და მაღალი წარმადობის HTTPS სერვერი — Zeroserve წარადგინა. მისი მთავარი უპირატესობა ე.წ. „zero-config“ მიდგომაა: სერვერი არ საჭიროებს რთულ კონფიგურაციულ ფაილებს, რადგან მთლიანი ვებ-გვერდი ერთ tarball ფაილშია მოთავსებული.
eBPF როგორც კონფიგურაციის ინსტრუმენტი
Zeroserve-ის გამორჩეული მახასიათებელია eBPF სკრიპტების მხარდაჭერა. ნაცვლად სტანდარტული კონფიგურაციული დირექტივებისა, მომხმარებელს შეუძლია დაწეროს eBPF პროგრამა, რომელიც თითოეულ მოთხოვნას მართავს. ეს მიდგომა საშუალებას იძლევა, მოთხოვნები დარეგულირდეს, დაშიფრდეს ან გადამისამართდეს რეალურ დროში.
პროგრამა მთლიანად მომხმარებლის სივრცეში (userspace) მუშაობს, რაც უზრუნველყოფს უსაფრთხოებასა და იზოლაციას. სკრიპტები JIT-კომპილირდება ნატიურ კოდში, რაც უზრუნველყოფს მათ მაღალ სიჩქარეს.
წარმადობა და io_uring
სერვერი სრულად ეყრდნობა io_uring ტექნოლოგიას, რაც ქსელური და დისკური ოპერაციების დამუშავებას მაქსიმალურად ამარტივებს. ტესტებმა აჩვენა, რომ Zeroserve მცირე ზომის ფაილების სერვირებისას Nginx-ზე 17%-ით სწრაფია.
| server | req/s | p99 |
|---|---|---|
| zeroserve | 36,681 | 5.4 ms |
| nginx | 31,226 | 7.8 ms |
| Caddy | 12,830 | 22 ms |
სერვერის დიზაინი ორიენტირებულია ერთ ნაკადიან (single-threaded) მუშაობაზე თითო პროცესისთვის. ეს სტრატეგია იდეალურია მასშტაბირებისთვის, რადგან დამატებითი პროცესების გაშვება მარტივი და ეფექტურია.
| server | req/s | throughput | p99 |
|---|---|---|---|
| zeroserve | 8,000 | 782 MB/s | 22 ms |
| nginx | 7,600 | 773 MB/s | 28 ms |
| Caddy | 6,084 | 590 MB/s | 44 ms |
eBPF vs Lua
| engine | req/s | p99 |
|---|---|---|
| zeroserve eBPF (10 ms) | 43,709 | 5.1 ms |
| zeroserve eBPF (2 ms default) | 31,334 | 6.7 ms |
| nginx Lua (header_filter) | 28,653 | 8.4 ms |
| engine | req/s | p99 |
|---|---|---|
| zeroserve eBPF (10 ms) | 46,945 | 4.5 ms |
| nginx Lua (content_by_lua) | 41,231 | 6.4 ms |
| zeroserve eBPF (2 ms default) | 32,393 | 6.7 ms |
ტრადიციულად, ვებ-სერვერებში სკრიპტირებისთვის Lua-ს იყენებენ. Zeroserve-ის შემთხვევაში, eBPF-ის გამოყენება 10 მილიწამიანი ინტერვალის პირობებში აჩვენებს უკეთეს შედეგებს როგორც შუალედური დამუშავების (middleware), ისე დინამიური JSON პასუხების გენერირებისას.
სერვერი მხარს უჭერს თანამედროვე სტანდარტებს, მათ შორის TLS 1.3-ს, HTTP/2-ს და JA4 თითის ანაბეჭდების ტექნოლოგიას. ეს ყველაფერი ერთ ბინარულ ფაილშია თავმოყრილი.
| proxy | req/s | p50 | p99 |
|---|---|---|---|
| zeroserve | 26,486 | 3.3 ms | 8 ms |
| nginx | 21,761 | 4.2 ms | 10.5 ms |
| Caddy | 7,683 | 10.3 ms | 33 ms |
როდის გამოვიყენოთ Zeroserve?
| proxy | req/s | throughput |
|---|---|---|
| nginx | 5,882 | 585 MB/s |
| Caddy | 4,285 | 406 MB/s |
| zeroserve | 3,631 | 359 MB/s |
Zeroserve განსაკუთრებით ეფექტურია მცირე ზომის მოთხოვნების მქონე სერვისებისთვის. თუმცა, დიდი მოცულობის ფაილების გადაცემისას Nginx კვლავ ინარჩუნებს უპირატესობას მისი დახვეწილი ბუფერული სისტემის გამო.
პროექტი უკვე ხელმისაწვდომია GitHub-ზე ღია კოდის სახით და განკუთვნილია დეველოპერებისთვის, რომლებიც ეძებენ მსუბუქ და პროგრამირებად ალტერნატივას არსებული ვებ-სერვერებისთვის.



დისკუსია
0 კომენტარი
ჯერ კომენტარი არ არის — იყავი პირველი.