The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Cloudflare перешёл с NGINX на прокcи Pingora, написанный на языке Rust, opennews (??), 16-Сен-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


169. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Ivan_83 (ok), 16-Сен-22, 16:06 
И попутно.
Всякие libev, libevent и прочее что я видел это были решения как раз для построения модели:
1 поток - один kqueue()/epoll()/poll().
А дальше крутись как хочешь.

Это системная проблема индустрии, которую С програмисты в опенсорце не решили.
Или я плохо искал.
Отчасти это потому что epoll()/poll() разделяют события записи/чтения на дескрипторе, и один сокет может тригернуть сразу два разных потока, и их нужно между собой синхронизировать. (а может и больше двух, там ещё ошибки тригерят пробуждение потоков).
kquque() может тригерить а может не тригерить несколько потоков, зависит от флагов указанных при добавлении дескриптора.

В целом конечно же раздельное тригирение потоков на запись/чтение оно должно было увеличить производительноть, типа в сокет можно и писать и читать сразу, но на практике там же в ядре тоже какие то блокировки для этого есть, и к этому нужны блокировки в приложении, чтобы один поток не грохнул данные связанные с сокетом пока второй с ними работает.

Вот о чём речь, когда доходит до построения рабочего решения: куча потоков на одном kqueue()/epoll()/poll().

Ответить | Правка | Наверх | Cообщить модератору

180. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +1 +/
Сообщение от Аноним (-), 16-Сен-22, 16:35 
> В целом конечно же раздельное тригирение потоков на запись/чтение оно должно было увеличить производительноть, типа в сокет можно и писать и читать сразу, но на практике там же в ядре тоже какие то блокировки для этого есть, и к этому нужны блокировки в приложении, чтобы один поток не грохнул данные связанные с сокетом пока второй с ними работает.

Специализация раста как раз в том, чтобы такие вещи отслеживать статически, и ругаться на тебя, когда у тебя не получилось. Чтобы ты помыкавшись с борроу-чекером и так и эдак, понял бы наконец что ты плохо продумал менеджмент ресурсов, и туд бэ надо воткнуть костылей Arc/Mutex/RefCell/... потому что без них статически управлять не выходит никак. Или даже выкинул бы всё, и начал заново со структур данных, которые позволяют статически следить за памятью.

В C это практически невозможно. Теоретически да, но практически тебе senior'ы руки оторвут и в ж засунут, и выставят за дверь без выходного пособия, если ты попытаешься что-то такое сотворить. Потому что хрен ты такой код отладишь, и никто не хочет возиться с ним после того, как тебя уволят. Лучше сразу выкинуть такой код вместе с автором.

Ответить | Правка | Наверх | Cообщить модератору

227. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +1 +/
Сообщение от Ivan_83 (ok), 16-Сен-22, 21:45 
Сплошная пропаганда раста в ваших словах.

Написать на С такой код возможно, не писали его до сих пор потому что хватало и более простой модели.
Те экономилась куча усилий ценой небольших потерь в редких случаях.
И в общем то были и есть костыли как перераспределять нагрузку между такими потоками-эвентлупами.

В случае нгинха костыли с перераспределением не канают или они совсем сложные получаются, потому что межпроцессное взаимодействие.

У меня в msd  потоки активно обменивались и сообщениями и работой, потому что всё было в рамках одного процесса.

Те тут претензия большей частью к тому что у нгинха по процессам разнесено.

Ответить | Правка | Наверх | Cообщить модератору

231. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +1 +/
Сообщение от Аноним (-), 16-Сен-22, 22:46 
> Написать на С такой код возможно,

Это ты на личном опыте? Я ссылался в том числе и на личный опыт: если ты попробуешь какие-то неочевидные сразу правила владения объектами внедрить в C, тебя уволят. Потому что документировать такие вещи крайне сложно, ещё сложнее держать документацию актуальной, и практически невозможно уследить за каждым программистом, чтобы тот следовал бы этим правилам. Как следствие никто не будет полагаться на то, что это будет работать.

Ответить | Правка | Наверх | Cообщить модератору

246. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Ivan_83 (ok), 17-Сен-22, 02:14 
Я говорю про код.
Не знаю что подразумевается под "неочевидные правила владения".
Делается либа/фрейворк подобный тому что в nginx и работа с сокетами и прочее делаются через неё, оно же дёргает калбэки при пооступлении событий.
Ответить | Правка | Наверх | Cообщить модератору

327. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Прохожий (??), 17-Сен-22, 17:21 
> Написать на С такой код возможно, не писали его до сих пор потому что хватало и более простой модели.

И почему же никто до сих пор не написал?

Но ок, соглашусь, что на Си реально было бы написать этот код. Только стОил бы такой код ГОРАЗДО дороже, чем на Rust. Почему? Да потому что в Си пришлось бы днями и ночами дыры вылавливать там, где Rust их существование делает абсолютно невозможным. В такой конторе, как Cloudflare, подобные дыры приводили бы к ОГРОМНЫМ убыткам.

Ответить | Правка | К родителю #227 | Наверх | Cообщить модератору

336. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Ivan_83 (ok), 18-Сен-22, 02:33 
Вам тоже пора таблетки принимать.

У них этого кода на С просто тоннами, начиная с линуха и заканчивая тем же самым nginx.

И на чём там раст написан?

Ответить | Правка | Наверх | Cообщить модератору

337. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +1 +/
Сообщение от Аноним (337), 18-Сен-22, 03:05 
Ты казался мне как минимум на одно среднеквадратичное отклонение адекватнее среднего опеннетовца. Но этот тред и особенно этот коммент показали мне, что я ошибался. Может перепутал с кем?

Испытываю досаду. Столько бисера насыпал, и всё для заурядного мамкиного тролля.

Ответить | Правка | Наверх | Cообщить модератору

356. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Прохожий (??), 18-Сен-22, 13:08 
Никому неизвестный не отягощённый интеллектом аноним, которому по делу сказать абсолютно нечего, испытал досаду. Вот горе-то!
Ответить | Правка | Наверх | Cообщить модератору

360. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Ivan_83 (ok), 18-Сен-22, 14:55 
Откуда берётся компелятор раста?


https://www.rust-lang.org/tools/install
> curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Это же мать его антипаттерн безопасного использования курла.
Осталось только дождатся когда на sh.rustup.rs положат что то более интересное и потом растовики будут объяснять своим босам почему у них вся инфраструктура полегла под шифровальщиками, майнерами или все данные упёрли.

Самая шиза что при таком способе установки у смузихлёбов там 1/6 скрипта занимает дрючиво с выбором бизапасного набора крипты для курла/вгета.


И я бы может и не ругался так на раст, если бы его компилятор был как то компатнее, но нет, каждый раз оно тратить кучу моих ресурсов собирая в начале llvm а потом себя.
Но без llvm оно не может.
И не может без компилятора установленного в системе, это к вопросу о том что раст написан на расте.

Ответить | Правка | К родителю #337 | Наверх | Cообщить модератору

382. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Аноним (-), 19-Сен-22, 22:00 
> Откуда берётся компелятор раста?

Оттуда же откуда и gcc:

emerge dev-lang/rust

Ответить | Правка | Наверх | Cообщить модератору

344. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от freecoder (ok), 18-Сен-22, 07:48 
А на чем раст написан? Расскажи, пожалуйста.
Ответить | Правка | К родителю #336 | Наверх | Cообщить модератору

359. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Ivan_83 (ok), 18-Сен-22, 14:43 
Лучше расскажите мне как вы на новом железе забутстрапитесь, особенно если кроскомпилировать нечем.
Накорябаете раст на асме?

Или собирать раст при помощи и с кусками llvm это ок, но С/С++ не ок?

Ответить | Правка | Наверх | Cообщить модератору

355. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Прохожий (??), 18-Сен-22, 13:04 
Раст написан на Расте. Это во-первых. Во-вторых, мгновенно весь софт, который уже написан на Си (Плюсах), не перепишешь. Но! Если есть возможность переписать, то лучше это сделать, чем бесконечно рыться в поисках багов. Неужели такие простые вещи надо так долго разжёвывать?
Ответить | Правка | К родителю #336 | Наверх | Cообщить модератору

357. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Ivan_83 (ok), 18-Сен-22, 14:30 
О да.
Покажите бутстрапный компилятор раста на асме :)

50 лет индустрия как то жила, а тут надо всё резко переписать.
Современными средствами баги ищутся легко и просто, за исключением совсем уж редко воспроизводимой экзотики.

Ответить | Правка | Наверх | Cообщить модератору

375. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Аноним (375), 19-Сен-22, 12:56 
>Современными средствами баги ищутся легко и просто

А софт как был багованным, так и остался.

Ответить | Правка | Наверх | Cообщить модератору

235. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +1 +/
Сообщение от Аноним (235), 16-Сен-22, 23:09 
> В C этот практически невозможно. Теоретически да, но практически

На С целые операционные системы пишут, включая реалтаймовые, а ты ты про какое-то говно утверждаешь, что невозможно.

Ответить | Правка | К родителю #180 | Наверх | Cообщить модератору

237. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  –1 +/
Сообщение от Аноним (-), 16-Сен-22, 23:12 
> На С целые операционные системы пишут, включая реалтаймовые,

Ты внутрь заглядывал? Они делают не то, о чём я пишу. То о чём я пишу тщательно все избегают, потому что хрен кто справится с этим.

Ответить | Правка | Наверх | Cообщить модератору

248. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Ivan_83 (ok), 17-Сен-22, 02:30 
То что вы описываете - мало кому нужно, потому и не делают.
Ответить | Правка | Наверх | Cообщить модератору

254. "Cloudflare перешёл с NGINX на собственный прокcи Pingora, на..."  +/
Сообщение от Аноним (-), 17-Сен-22, 05:14 
Зелен виноград.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру