|
|
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Есть IdTCPServer. Нужно отправить сообщение конкретному клиенту из списка подключённых. Есть его IP адрес и порт. Как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 14:48 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Mizer73, никак. Клиент должен прислать запрос. Меняй технологию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 15:10 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Mizer73Как? Ищешь его в Threads, вызываешь Connection->WriteBuffer. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 15:33 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Mizer73Как? Ищешь его в Threads, вызываешь Connection->WriteBuffer. вопросов меньше не стало, хотя понятно, куда копать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:13 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
* клиент шлет запрос * ... сервер его получает и блокирует клиента * когда происходит нужное событие на сервере * ... сервер шлет ответ клиенту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:22 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev, не подходит. Клиент шлет разные данные онлайн. И на эти данные надо среагировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:25 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Mizer73Как? Ищешь его в Threads, вызываешь Connection->WriteBuffer. а через перебор Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. не найти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:26 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Mizer73 Dmitry Arefiev, не подходит. Клиент шлет разные данные онлайн. И на эти данные надо среагировать и ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:44 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev Mizer73 Dmitry Arefiev, не подходит. Клиент шлет разные данные онлайн. И на эти данные надо среагировать и ? что значит "блокирует"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 19:46 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Обработчик запроса на сервере вызывает TEvent.WaitFor и ... ждет чего-то там ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 20:10 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Dmitry ArefievОбработчик запроса на сервере вызывает TEvent.WaitFor и ... ждет чего-то там ... Это совершенно никому не мешает посылать данные в сокет. С любой стороны. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 20:18 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Mizer73, а тебе обязательно эти инди использовать? Есть готовые технологие, где асинхронная связь является просто фичей. Например, WebSockets... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 20:32 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Dmitry ArefievОбработчик запроса на сервере вызывает TEvent.WaitFor и ... ждет чего-то там ... Это совершенно никому не мешает посылать данные в сокет. С любой стороны. но следующий приход данных будет опять создавать ожидание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 20:33 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Mizer73 Dimitry Sibiryakov пропущено... Это совершенно никому не мешает посылать данные в сокет. С любой стороны. но следующий приход данных будет опять создавать ожидание Посмотри тут: http://flibustahezeous3.onion/b/255517/read#t66 - глава 2, "Сокеты Windows". Только там не глупая инди, а сокеты Windows. Есть и примеры реализации, в т.ч. и асинхронной связи между клеинтами и сервером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 20:53 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, что за ссылка, не открывается ни просто, ни через VPN. Это не вот это ли вот? http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1060 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 23:02 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
s62, это ссылка для Tor Browser. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 23:21 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2021, 23:57 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Итого, можно через перебор узнавать клиента с требуемым IP и слать ему послание. Код: plaintext 1. 2. 3. 4. 5. 6. 7. по крайней мере, выборочно отключать получилось. Попробую отсылать сообщение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 00:12 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Следующий вопрос будет про клиента. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 01:31 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Понаворотят обёрток, а потом ищут как делать тривиальные вещи... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 01:37 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
У нас в комьюнити организовалась группа по интересам Мы пилим сетевую библиотеку. На примере ТС представьте, что будет если клиентов несколько тысяч Если у кого-то есть желание поучаствовать - пишите мне в личку Пока нас 4 человека. Завели проект в гитлабе, юзаем джиру и конфлюенс. Договорились о встречах 3 раза в неделю, микро скрам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 09:36 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU У нас в комьюнити организовалась группа по интересам Мы пилим сетевую библиотеку. На примере ТС представьте, что будет если клиентов несколько тысяч Если у кого-то есть желание поучаствовать - пишите мне в личку Пока нас 4 человека. Завели проект в гитлабе, юзаем джиру и конфлюенс. Договорились о встречах 3 раза в неделю, микро скрам. Зачем это нужно? Чем имеющиеся не устраивают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 14:31 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer SOFT FOR YOU У нас в комьюнити организовалась группа по интересам Мы пилим сетевую библиотеку. На примере ТС представьте, что будет если клиентов несколько тысяч Если у кого-то есть желание поучаствовать - пишите мне в личку Пока нас 4 человека. Завели проект в гитлабе, юзаем джиру и конфлюенс. Договорились о встречах 3 раза в неделю, микро скрам. Зачем это нужно? Чем имеющиеся не устраивают? она должна быть супер-мега-быстрая, самая быстрая в мире ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 15:00 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator DmSer пропущено... Зачем это нужно? Чем имеющиеся не устраивают? она должна быть супер-мега-быстрая, самая быстрая в мире ! Самые быстрые - только асинхронные. Такие уже есть, например Overbyte ICS. Несмотря на это, большинство один хрен использует Indy10, ибо проще, кроссплатформенно, не нужно бороться с Callback hell или изобретать машины состояний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 16:02 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer, Я потратил множество времени, чтобы ознакомиться с текущими решениями Смотрел и Synopse, и ICS, и TMS, и RTC. И много чего другого Тот же ICS он только под винду Асинхронных сокетов нормальных нет почти нигде С веб сокетами тоже труба В Indy на каждый коннект создаётся поток. Будет на серваке 1000 соединений и всё - труба К нам в сообщество пришёл чувак, замерял тест ноды и TCP сервера Delphi Оказалось, нода в 500 раз быстрее. Что-то типа такого Для высокоуровневого маршаллинга нет ничего кроме SuperObject Но он только JSON и далеко не самый быстрый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 16:14 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU DmSer, Я потратил множество времени, чтобы ознакомиться с текущими решениями Смотрел и Synopse, и ICS, и TMS, и RTC. И много чего другого Тот же ICS он только под винду Асинхронных сокетов нормальных нет почти нигде С веб сокетами тоже труба В Indy на каждый коннект создаётся поток. Будет на серваке 1000 соединений и всё - труба RTC держит сотни тысяч коннектов одновременно при этом у них в демках есть софтина для стресс-тестирования и да, иди снова изучай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 16:49 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Тот же ICS он только под винду Автор вроде пилит кроссплатформу. Не знаю, на каком сейчас этапе. В Indy на каждый коннект создаётся поток. Будет на серваке 1000 соединений и всё - труба Неправда. Если мы разрабатываем 64-битное приложение, то Indy может держать десятки тысяч подключений. На каждое подключение создаётся доп. поток, но ОЗУ он жрет не более 100 КБ. К сожалению, максимальное количество подключений на одном (и даже на двух компьютерах) не измеришь. Чтобы измерить, нужно один комп "сервер" и десяток компов-клиентов. Может Indy и 100 тыс. одновременных TCP-коннектов потянет (здесь конечно большие затраты будут на работу системного планировщика). Но, конечно, скорость обработки http-запросов в Indy значительно меньше, чем у других. Оказалось, нода в 500 раз быстрее. Что-то типа такого Видимо, он сравнивал с Indy. Там очень большие расходы из-за создания и уничтожения доп. потоков. Ну и по другим причинам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:00 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU В Indy на каждый коннект создаётся поток. Будет на серваке 1000 соединений и всё - труба Даже в 32-битном процессе можно создать сильно больше потоков, не говоря уж о 64-битном. DmSer (здесь конечно большие затраты будут на работу системного планировщика) Ожидающие событий от системных объектов потоки на производительность не влияют. DmSer Видимо, он сравнивал с Indy. Там очень большие расходы из-за создания и уничтожения доп. потоков. Ну и по другим причинам. В инди есть поддержка пула потоков, вообще то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:20 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator, Ну RTC по сравнению с другими либами очень даже ничего Но во-первых, он платный Во-вторых, держать то он может и держит, но работает неэффективно, а значит реальная пропускная способность небольшая. На сайте тесты до 5000 соединений Ну и в-третьих, там ещё что-то было, сходу не вспомню В целом во многих либах, в том числе бесплатных, есть что почерпнуть. Но общая картина удручает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:21 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer, Kazantsev Alexey, Потоки - это объекты операционной системы, которым нужно отводить тик времени, адресное пространство, оркестрировать Поэтому в сколько-нибудь серьёзных проектах переходят к задачам поверх пула потоков, например Но поскольку дельфийские задачи тоже далеки от идеала - лучше использовать узкозаточенную реализацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:25 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU defecator, Ну RTC по сравнению с другими либами очень даже ничего Но во-первых, он платный Во-вторых, держать то он может и держит, но работает неэффективно, а значит реальная пропускная способность небольшая. На сайте тесты до 5000 соединений Ну и в-третьих, там ещё что-то было, сходу не вспомню В целом во многих либах, в том числе бесплатных, есть что почерпнуть. Но общая картина удручает что там тебя удручает ? есть zeroMQ, который сверхбыстрый, и с прекрасной обёрткой https://github.com/grijjy/DelphiZeroMQ разве ты сможешь написать что-то быстрее этого ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:30 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Потоки - это объекты операционной системы, которым нужно отводить тик времени, адресное пространство, оркестрировать 1. Ожидающим потокам тик не нужен. Они из планирования исключаются. 2. Адресное пространство на 64-битах не проблема, а на 32 оно скорее будет исчерпано под хранение состояния, если, конечно, речь не идёт о примитивном эхо-сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:32 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator, ZeroMQ тоже может не всё Тем более он зависим от динамических библиотек По поводу производительности... Ты юзал мой CPF, как сам думаешь? Вопрос не в моих навыках оптимизатора Вопрос в том, хватит ли мотивации, сил и времени на реализацию И в этом смысле командная работа как решает данный вопрос Получится нет - увидим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:43 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Ну давай сравним 5000 соединений на ноде и 5000 соединений на дельфийских потоках Создавать поток на каждое соединение - это древность. Не знаю, сейчас кто-то использует этот подход кроме наших или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:45 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU defecator, ZeroMQ тоже может не всё не может всё - это чего же такое это "всё" ? SOFT FOR YOU Тем более он зависим от динамических библиотек любая твоя библиотека всё равно будет зависима от системных библиотек SOFT FOR YOU Вопрос не в моих навыках оптимизатора Вопрос в том, хватит ли мотивации, сил и времени на реализацию И в этом смысле командная работа как решает данный вопрос Получится нет - увидим вопрос - зачем ? оптимизация ради оптимизации ? или тебе просто нечем больше заняться ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 17:55 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
авторZeroMQ тоже может не всё Тем более он зависим от динамических библиотек Дайте ему селёдки! - (с). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:07 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator, Очень хороший вопрос Если говорить про сейчас, то у нас 4 человека (как будет дальше - посмотрим). Мотивации следующие: 1. На имеющемся серваке растёт количество клиентов, сервак начинает захлёбываться. Нужно добавить асинхронные сокеты + добавить поддержку REST/JSON (через http.sys) 2. Человек является начальником отдела разработки, много кода на Delphi, очень много клиентов. Есть желание продолжить на Delphi, но подчинённые прислали тест, где Node выигрывает Delphi на порядки 3. Интерес в профессиональном росте: погружение в сетевые технологии, инструменты и особенности командной разработки 4. У меня есть 2 потенциальных клиента (компании), которые активно пишут сервера на Delphi. Мне хотелось бы сотрудничать с ними, но предложить пока нечего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:08 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Ну давай сравним... Сравнивай на здоровье... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:12 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Ну не я же говорю, что потоки это не проблема ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:14 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU defecator, Очень хороший вопрос Если говорить про сейчас, то у нас 4 человека (как будет дальше - посмотрим). Мотивации следующие: 1. На имеющемся серваке растёт количество клиентов, сервак начинает захлёбываться. Нужно добавить асинхронные сокеты + добавить поддержку REST/JSON (через http.sys) 2. Человек является начальником отдела разработки, много кода на Delphi, очень много клиентов. Есть желание продолжить на Delphi, но подчинённые прислали тест, где Node выигрывает Delphi на порядки 3. Интерес в профессиональном росте: погружение в сетевые технологии, инструменты и особенности командной разработки 4. У меня есть 2 потенциальных клиента (компании), которые активно пишут сервера на Delphi. Мне хотелось бы сотрудничать с ними, но предложить пока нечего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:17 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Ну не я же говорю, что потоки это не проблема Конечно не проблема, проблема в том, как их готовят. Уже и про сокетную асинхронщину разговоры пошли... Удачи, короче, вам. С джирой, конфлюенсом и скрамом три раза в неделю, она вам понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:23 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Не понял, к чему злорадство ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:27 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
s62, Совершенно верно IOCP под виндой epoll на Linux kqueue на FreeBSD/MacOS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:29 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Не понял, к чему злорадство Злорадство, это когда радуются чужой неудаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:38 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Заваливайся в сообщество Там такие темы, например, обсуждать сподручнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:43 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Kazantsev Alexey, Заваливайся в сообщество Там такие темы, например, обсуждать сподручнее а здесь ТАКИЕ темы обсуждать "несподручнее" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:47 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU 4. У меня есть 2 потенциальных клиента (компании), которые активно пишут сервера на Delphi. Мне хотелось бы сотрудничать с ними, но предложить пока нечего если они активно пишут сервера на Дельфи, то нафига им нужен ты ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:50 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Kazantsev Alexey, Заваливайся в сообщество Там такие темы, например, обсуждать сподручнее Категорически не советую: SOFT FOR (конкретно) - не просто токсичный пустозвон, он - опасен как партнёр. Например, напомню, что его "знаменитый" фри-опенсорсе менеджер памяти ... неожиданно заброшен с требованием заплатить ему $5000-$10000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:52 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator, Конкретно в данный момент тема является офтопом ТС спросил об одном, а речь о потоках и библиотеках Сервера - это большая нагрузка А большая нагрузка - это тонна оптимизаций Плюс у меня много наработок по RTTI. А значит с лёгкой руки можно упростить обмен сообщениями между клиентом и сервером. Упростить, ускорить, повысить надёжность и обратную совместимость ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:54 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Заваливайся в сообщество Телега не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:57 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU defecator, Конкретно в данный момент тема является офтопом ТС спросил об одном, а речь о потоках и библиотеках Сервера - это большая нагрузка А большая нагрузка - это тонна оптимизаций Плюс у меня много наработок по RTTI. А значит с лёгкой руки можно упростить обмен сообщениями между клиентом и сервером. Упростить, ускорить, повысить надёжность и обратную совместимость то есть ты уже заранее уверен, что у людей, которые пишут сервера на Дельфи - всё плохо в плане производительности ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 18:57 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Партнёрство, это не когда 1 пилит, а другой юзает Партнёрство это когда оба пилят, либо один пилит, а другой платит. Вот ты сколько заплатил, чтобы такое орать? ) P.S. я кстати всё лето фигачил новую версию менеджера на Си На данный момент процесс застопорился потому, что не могу найти WordPress-ника, который сможет наладить платную подписку на сайте. И тестового фреймворка пока нет, чтобы не обращался к менеджеру. Так что если кто может чем-то помочь (запартнёриться) - тоже жду в личке! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 19:03 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU ъъъъъ, Партнёрство, это не когда 1 пилит, а другой юзает Партнёрство это когда оба пилят, либо один пилит, а другой платит. Вот ты сколько заплатил, чтобы такое орать? ты ведь сам больше всех орал, что у тебя самый быстрый менеджер памяти в мире возможно, это так, но он почему-то так и не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 19:08 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator, Ты рассуждаешь простыми категориями Где простой бизнес-процесс и не так много клиентов Там основная оптимизация - это добавление пары индексов и закупка немного оперативной памяти Когда проекты действительно большие, когда клиентов тысячи, а производительность оседает в микросервисах, работающих с кешем данных - тогда сложности совершенно другие Производительность - весомая задача, но не единственная из весомых И речь не о серверных приложениях в Delphi. Это касается любых языков программирования Просто многие языки уже обзавелись хорошими библиотеками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 19:10 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU defecator, Ты рассуждаешь простыми категориями Где простой бизнес-процесс и не так много клиентов Там основная оптимизация - это добавление пары индексов и закупка немного оперативной памяти Когда проекты действительно большие, когда клиентов тысячи, а производительность оседает в микросервисах, работающих с кешем данных - тогда сложности совершенно другие Производительность - весомая задача, но единственная из весомых И речь не о серверных приложениях в Delphi. Это касается любых языков программирования Просто многие языки уже обзавелись хорошими библиотеками в Дельфи тоже полно отличных высокоскоростных сетевых библиотек - RTC и ZeroMQ тому примеры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 19:12 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator SOFT FOR YOU defecator, Ты рассуждаешь простыми категориями Где простой бизнес-процесс и не так много клиентов Там основная оптимизация - это добавление пары индексов и закупка немного оперативной памяти Когда проекты действительно большие, когда клиентов тысячи, а производительность оседает в микросервисах, работающих с кешем данных - тогда сложности совершенно другие Производительность - весомая задача, но единственная из весомых И речь не о серверных приложениях в Delphi. Это касается любых языков программирования Просто многие языки уже обзавелись хорошими библиотеками в Дельфи тоже полно отличных высокоскоростных сетевых библиотек - RTC и ZeroMQ тому примеры RTC - чисто дельфийская библиотека, а zmq - хотя и бесплатная, но лишь дейфийские оболочки над сишным ядром (dll или obj). Функционал и возможности довольно близки)вывод по результатам моих верхоглядных оценок). Я бы, наверное, для своих задач выбрал RTC (функционал именно в нужной мне части богаче), если бы давным-давно не юзал zmq. :) К zmq "прилагаются" интересные книги и статьи, которые, хоть и опираются на zmq, рассматривают общие принципы разработки и построения высокопроизводительных распределенных систем, и нигде не решаются "проблемы", плавающие в мутни воспалённого мозга пустозвона - "оптимизатора". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 19:30 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 19:32 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
ъъъъъ defecator пропущено... в Дельфи тоже полно отличных высокоскоростных сетевых библиотек - RTC и ZeroMQ тому примеры RTC - чисто дельфийская библиотека, а zmq - хотя и бесплатная, но лишь дейфийские оболочки над сишным ядром (dll или obj). Функционал и возможности довольно близки)вывод по результатам моих верхоглядных оценок). Я бы, наверное, для своих задач выбрал RTC (функционал именно в нужной мне части богаче), если бы давным-давно не юзал zmq. :) К zmq "прилагаются" интересные книги и статьи, которые, хоть и опираются на zmq, рассматривают общие принципы разработки и построения высокопроизводительных распределенных систем, и нигде не решаются "проблемы", плавающие в мутни воспалённого мозга пустозвона - "оптимизатора". Задачи сетевых оптимизаций решаются всегда алгоримами обмена и выбором топологий, а вовсе не в "оптимизаци кода микросервисов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 19:36 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
ъъъъъ ъъъъъ пропущено... RTC - чисто дельфийская библиотека, а zmq - хотя и бесплатная, но лишь дейфийские оболочки над сишным ядром (dll или obj). Функционал и возможности довольно близки)вывод по результатам моих верхоглядных оценок). Я бы, наверное, для своих задач выбрал RTC (функционал именно в нужной мне части богаче), если бы давным-давно не юзал zmq. :) К zmq "прилагаются" интересные книги и статьи, которые, хоть и опираются на zmq, рассматривают общие принципы разработки и построения высокопроизводительных распределенных систем, и нигде не решаются "проблемы", плавающие в мутни воспалённого мозга пустозвона - "оптимизатора". Задачи сетевых оптимизаций решаются всегда алгоримами обмена и выбором топологий, а вовсе не в "оптимизаци кода микросервисов". Хотя, как-то было дело... :) Отлаживал алгоритм протокола загрузки файлов из хранилища mega.nz ... на питоне. Вымораживала постоянная задержка, что только не пытался... оказалось, что это питон "в чистом виде" такой плавный... (выполнялось дешифрование данных на лету) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 19:41 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer (здесь конечно большие затраты будут на работу системного планировщика) Ожидающие событий от системных объектов потоки на производительность не влияют. Нагрузка ложится на планировщик, который при каждом срабатывании таймера лопатит все потоки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 21:30 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer Нагрузка ложится на планировщик, который при каждом срабатывании таймера лопатит все потоки. Насколько я помню, используются разные списки потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 21:35 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт. Вот честно ничего не понял. И Indy не единственная библиотека, с помощью которой можно делать сетевые сервисы. Вот специально для тебя пример описания создания в делфи высокоскоростного UDP сервера на виндах и линуксе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 21:43 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:15 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт. Мне кажется, здесь смешались кони и люди Если ты подразумеваешь концепцию задач - то она как раз есть в Delphi. Может быть там не всё идеально по производительности, но с заложенной функциональностью справляется, и юзать удобно. Там пул потоков, список задач, замыкания (анонимки). Если говорить про сетевой буст (IOCP/epoll/kqueue, http.sys и др.) - то они в Delphi худо-бедно, но тоже есть. Если говорить про высокую нагрузку, то неплохие решения от TMS и RTC Но Node их всё равно сделает, причём в разы. К тому же придётся заплатить бабла Я же хочу сделать бесплатно и примерно на уровне В теории, с учетом особенности менеджера в ноде, можно и быстрее. Но меня сейчас опять заклюют, типа я говорю о неосуществимых вещах ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:36 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU DmSer Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт. Мне кажется, здесь смешались кони и люди Если ты подразумеваешь концепцию задач - то она как раз есть в Delphi. Может быть там не всё идеально по производительности, но с заложенной функциональностью справляется, и юзать удобно. Там пул потоков, список задач, замыкания (анонимки). Если говорить про сетевой буст (IOCP/epoll/kqueue, http.sys и др.) - то они в Delphi худо-бедно, но тоже есть. Если говорить про высокую нагрузку, то неплохие решения от TMS и RTC Но Node их всё равно сделает, причём в разы. К тому же придётся заплатить бабла Я же хочу сделать бесплатно и примерно на уровне В теории, с учетом особенности менеджера в ноде, можно и быстрее. Но меня сейчас опять заклюют, типа я говорю о неосуществимых вещах ) почему заклюют ? Ждём супер-быструю библиотеку, и если она будет ещё и самая быстрая в мире - почему бы и нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:41 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator, Другой разговор А я жду, что вы не только будете ждать Но и участвовать как-то Ну не конкретно ты А вообще люди, которым интересна тема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:45 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey DmSer Нагрузка ложится на планировщик, который при каждом срабатывании таймера лопатит все потоки. Насколько я помню, используются разные списки потоков. Это касается только потоков, готовых к немедленному выполнению (ready-потоки). Таких обычно немного. Это те потоки, у которых закончился таймаут ожидания, или которые ожидали на объекте синхронизации ядра и были разбужены (например при вызове SetEvent или ReleaseMutex из другого потока). Такие потоки заранее помещаются планировщиком в очередь для какого-то ядра, поэтому дальнейшая процедура их пробуждения очень проста и действительно не зависит от количества других потоков. Остальные потоки (спящие) в ready-очереди не помещаются, но планировщик при каждом срабатывании системного таймера анализирует по ним информацию (как минимум, проверяет, не закончился ли sleep-интервал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:54 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU defecator, Другой разговор А я жду, что вы не только будете ждать Но и участвовать как-то Ну не конкретно ты А вообще люди, которым интересна тема я тебе уже говорил, что сначала нужно понимание - зачем это всё нужно одно дело, когда для решения какой-то конкретной задачи, а другое - абстрактные оптимизации ради оптимизаций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:54 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator, Совершенно верно У нас 4 человека Я описал мотивацию каждого из них. Вполне конкретно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:55 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU defecator, Совершенно верно У нас 4 человека Я описал мотивацию каждого из них. Вполне конкретно ага, что ты решил потренироваться в эджайле и командной разработке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 22:57 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
asutp2 DmSer Во всех популярных ЯП появилось асинхронное программирование (на основе async / await или наподобие). Это полностью устранило проблему высокой сложности разработки серверов на асинхронных алгоритмах. В Delphi такого механизма на уровне языка пока нет. Поэтому юзаем Indy. Очередная асинхронная сетевая либа не спасёт. Вот честно ничего не понял. И Indy не единственная библиотека, с помощью которой можно делать сетевые сервисы. Вот специально для тебя пример описания создания в делфи высокоскоростного UDP сервера на виндах и линуксе Лично мне пока хватало возможностей Indy. У меня не было необходимости решать задачу обслуживания 10000 http-запросов в секунду. Я считаю, что возможности "писать асинхронный код в стиле синхронного" не хватает. Но я понимаю, что в Delphi этой возможности никогда и не будет, поскольку если её реализуют, будет только хуже (кучу всего поломают в угоду задач, которые на Delphi решаются очень редко). Имеющиеся библиотеки для Delphi позволяют писать асинхронный код в стиле промайзов из JavaScript (например, OTL с его функциями async и await). Но промайзы в чистом виде в JS сейчас никто не использует, т.к. появился async / await, который гораздо нагляднее, в синхронном стиле, и не приводит к callback hell. Это при том, что в JS нет многопоточности. Всё работает в рамках одного потока! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:03 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
defecator, Я практикуюсь в эджайле и командной разработке у себя на работе - у меня роль Скрам Мастера Нафига ты набрасываешь - не понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:04 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU defecator, Я практикуюсь в эджайле и командной разработке у себя на работе - у меня роль Скрам Мастера Нафига ты набрасываешь - не понятно ты сам писал про это, жаль, что потёрли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:08 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer, Многопоточность в JS есть, просто она сильно спрятана Никто не мешает похожий подход использовать и в Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:08 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU DmSer, Многопоточность в JS есть, просто она сильно спрятана Никто не мешает похожий подход использовать и в Delphi Похожий на что? На промайзы или на async/await ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:35 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer Это те потоки, у которых закончился таймаут ожидания, или которые ожидали на объекте синхронизации ядра и были разбужены (например при вызове SetEvent или ReleaseMutex из другого потока). WSAEventSelect, а потом ожидаем события. Таким образом поток переходит в состояние ожидания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:49 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Но Node их всё равно сделает, причём в разы. К тому же придётся заплатить бабла Бесплатный мормот делает ноду . Это было семь лет назад. В комментах трех, угар и содомия, но почитать стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2021, 23:56 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey SOFT FOR YOU Но Node их всё равно сделает, причём в разы. К тому же придётся заплатить бабла Бесплатный мормот делает ноду . Это было семь лет назад. В комментах трех, угар и содомия, но почитать стоит. не лишай оптимизатора надежды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 00:04 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Думаешь за 7 лет ноду не оптимизировали Но инфа огонь Было бы интересно проверить на текущих версиях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 00:10 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer SOFT FOR YOU DmSer, Многопоточность в JS есть, просто она сильно спрятана Никто не мешает похожий подход использовать и в Delphi Похожий на что? На промайзы или на async/await ? Я конечно могу быть неточен Но по-моему, всё это рутина вокруг задач (тасков) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 00:16 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 00:29 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Честно говоря, не особо распарсил Но я часто говорю, что менеджмент памяти на высоконапряженных приложений - это один из ключевых факторов, влияющих на производительность А мне не верят ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 00:56 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Честно говоря, не особо распарсил Чего там парсить: Conclusion: – when using indy + threadpool + scalemm2, the same high throughput as node can be achived! (12000/s). При использовании инди с тредпулом и менеджером памяти, который умеет в потоки, достигается та же производительность, что и у ноды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 01:19 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU что менеджмент памяти на высоконапряженных приложений - это один из ключевых факторов, влияющих на производительность Не надо под нагрузкой - память просить, потоки создавать, соединения создавать, RTTI использовать. И прочей хренью заниматься, когда реально есть чем заняться ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 01:21 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Эти тесты уже семилетней давности, как бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 01:39 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Во-первых, я не понимаю, чего ты уцепился в потоки на каждого клиента. Очевидно, что это бесперспективный путь Во-вторых, я не знаю, что значит Indy + ThreadPool. То есть они научились использовать задачи вместо потоков? Кстати ScaleMM2 жрет очень много системной памяти В-третьих, это было 7 лет назад. Надо тестировать сегодня Главное. Что ты имеешь против телеги? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 09:28 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev, Если у тебя пик 10 клиентов и апи из пары команд - да Но не все же работают над такими проектами ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 09:30 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Во-первых, я не понимаю, чего ты уцепился в потоки на каждого клиента. Очевидно, что это бесперспективный путь Этот бесперспективный путь работает не хуже перспективного. SOFT FOR YOU Во-вторых, я не знаю, что значит Indy + ThreadPool. То есть они научились использовать задачи вместо потоков? Нет, пул это не таски, это просто пул. Инди в него умеет с бородатых времён. SOFT FOR YOU Кстати ScaleMM2 жрет очень много системной памяти Во-первых, он не единственный, кто умеет в потоки. Во-вторых, плевать. SOFT FOR YOU В-третьих, это было 7 лет назад. Надо тестировать сегодня Тестируй. Можете вместе с начальником отдела разработки. SOFT FOR YOU Главное. Что ты имеешь против телеги? ) Ничего не имею. Она просто не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 10:31 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Ну чтобы делать выводы, что работает не хуже - надо взять и замерить Сделай миллион подключений и возьми современную ноду Вангую 100х превосходство ноды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 10:44 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Кому надо, тот берёт и тестирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 10:52 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Бесплатный мормот делает ноду . Это было семь лет назад. В комментах трех, угар и содомия, но почитать стоит. А сейчас разработчик мормота выпустил свой супер быстрый и реально работающий менеджер памяти, который, скорее всего, не оставит ноде никаких шансов. Нода все-таки - тяжёлый JS, жрёт память вагонами. Хотя в простейших ситуациях может демонстрировать чудеса скорости (если мерять количеством http-запросов в секунду). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 10:57 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey SOFT FOR YOU Честно говоря, не особо распарсил Чего там парсить: Conclusion: – when using indy + threadpool + scalemm2, the same high throughput as node can be achived! (12000/s). При использовании инди с тредпулом и менеджером памяти, который умеет в потоки, достигается та же производительность, что и у ноды. Я несколько лет назад пытался использовать threadpool в Indy10, однако столкнулся с тем, что работает это очень нестабильно. Реально кто-нибудь использует Indy10 с тредпулом ? В инете чрезвычайно мало информации на эту тему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 11:02 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Меня многие убеждали, что файловая система в современных операционных системах умно управляется с менеджментом и кешированием в ОЗУ, а значит, никаких кеш-буферов не нужно. Я проверил и получил превосходство в 1562 раза К чему я это говорю. Есть некие базовые принципы, которые закладываются в архитектуру, которые существенно влияют на производительность. Почему-то ты уверен, что создание 100500 потоков это эквивалентный путь. Ну дай бог, считай. Но мне не интересно тратить время на такие тесты ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 11:03 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Нода - всё-таки - не для высоконагруженных серверов! Это шанс разрабатывать бэкенд JS-разработчикам, которые ничего другого не знают. Думаю, GoLang порвёт ноду в десятки раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 11:04 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer, Delphi порвёт и ноду, и голанг, и джаву Если этим заняться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 11:11 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer Реально кто-нибудь использует Indy10 с тредпулом ? В инете чрезвычайно мало информации на эту тему! DataSnap. SOFT FOR YOU Но мне не интересно тратить время на такие тесты ) Цирк с конями, блин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 11:33 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU DmSer, Delphi порвёт и ноду, и голанг, и джаву Если этим заняться Каким образом Delphi порвёт GoLang? Его даже C# не смог обогнать, хотя там есть поддержка асинхронного программирования на уровне языка (а в GoLang эквивалентного асинхронного программирования нет, зато есть Go-рутины :-). У нас в Delphi какую операцию не возьми - она блокирующая. Читаем файл, пишем файл, копируем файл, делаем запрос к БД, работаем с сетью - везде мы блокируем поток, поэтому вынуждены их создавать в большом количестве, компенсируем эту проблему с помощью пулов, PPL и т.д. Чтобы порвать GoLang, необходимо, чтобы любая операция была неблокирующая и при этом стиль кодирования должен оставаться синхронным (иначе это нафик никому не нужно, ибо становится слишком сложно). А для этого нужна поддержка async / await. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 11:47 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU DmSer пропущено... Похожий на что? На промайзы или на async/await ? Я конечно могу быть неточен Но по-моему, всё это рутина вокруг задач (тасков) Промайзы в JS это примерно следующее: https://github.com/VSoftTechnologies/VSoft.Awaitable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 11:56 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Цирк с конями, блин. Пургу несёшь ты, а цирк с конями у меня? Ну ок Мне не интересно это обсуждать Кстати один из членов команды сказал, что такие тесты будут проводиться Так что можешь подождать N времени и увидеть результаты Ну либо сделать что-то самостоятельно и убедиться в несостоятельности подхода, который предлагаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 12:18 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
DmSer, Конечно, языки различаются. На скриптовых «однопоточных» языках специальный упрощённый синтаксис, заточенный под особенности архитектуры Но под капотом это тот же самый пул потоков, на котором исполняются задачи В Node, Golang, Python и иже с ними используется специфичный менеджер памяти, с отложенной сборкой мусора, дефрагментациями, есть хендлы, дополнительные проверки, дополнительные синхронизации. На Delphi всё это можно провернуть оптимальнее Опять таки можно - не значит, что это будет Вопрос в том, какому количеству людей было бы интересно поучаствовать в таком проекте И постепенно шаг за шагом добиваться большей производительности и удобства Оглядываясь конечно на другие удачные решения. Того же мормота, ноды, rtc и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 12:31 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Кстати один из членов команды сказал, что такие тесты будут проводиться Это первое, с чего нужно было начинать - искать причину затыков, если они есть, а не бросаться сразу пилить своё, передовое, в угаре собственных представлений о прекрасном. Потому и цирк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 12:47 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Я программирую 20 лет Весь мой гитхаб утыкан бенчмарками Ни одна крупная сетевая библиотека не создаёт поток на каждое соединение Что тебе не хватает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 13:04 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
простите что врываюсь... может я скептик, но все же... автор1. На имеющемся серваке растёт количество клиентов, сервак начинает захлёбываться. Нужно добавить асинхронные сокеты... а как сделали вывод что асинхронщина поможет? было профилирование, которое показало, что проблема в обработке сети? автор2. Человек является начальником отдела разработки, много кода на Delphi, очень много клиентов. Есть желание продолжить на Delphi, но подчинённые прислали тест, где Node выигрывает Delphi на порядки на порядок это 10x, на порядки это 100x и более возникает резонный вопрос - что в тесте? это был тест, который копирует текущее поведение системы? с авторизацией, валидацией, с обращениями к другим системам, субд, записью логов и пр.? или это тест в духе смотри какой крутой в ноде http сервер, как он быстро возвращает "hello word"? если второй, то да, io-bound задачи это то с чем event loop справляется на ура... в реальных задачах присутствует логика иногда много и она дает нагрузку на cpu, что в однопоточной модели ноды может стать проблемой, надо масштабироваться, что не всегда просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 13:29 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Что тебе не хватает? Выдержки, пожалуй. Но я работаю над собой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 13:33 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Да Это всем нужно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 13:34 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Дегтярев Евгений, Ты ожидаешь, что я тебе расскажу про других людей Я не знаю, какие тесты делались, какие нет Асинхронщина сети - это асинхронщина сервера Есть малое количество ядер, выполняющих полезную работу. И есть огромное количество вещей, которые предстоит им выполнить Есть огромное количество оверхеда, который накладывается на работу потока. Переключение контекстов, регистрация объектов операционной системы, оркестрация. Наверняка есть много других весомых оверхедов, необходимости в которых просто нет. Те же лишние прерывания, например, раздутое адресное пространство Другая проблема многопоточного кода - синхронизация. Поэтому особое внимание при разработке серверных приложений уделяется lock-free и wait-free алгоритмам. В крайних случаях пытаются нивелировать количество блокировок. Большая проблема многих сетевых библиотек в том, что не достаточно эффективно используется синхронизация. В примере того же ТС для поиска нужного клиента во-первых, блокируется сразу весь список, а во-вторых происходит линейный поиск Самый интересный момент серверных приложений и сетевых библиотек в частности - менеджмент памяти. Дело в том, что обычно каждое обращение к менеджеру памяти приводит к блокировке, о которой только что говорил. Есть менеджеры с минимальным количеством блокировок, оптимизация происходит за счёт локальной кучи, ассоциированной с потоком. Поэтому многопоточные приложения со ScaleMM2, например, показывают значительно более интересные результаты, нежели с FastMM. Но есть ещё более эффективные подходы к работе с памятью через буферы и/или стек. Большое количество наработок в этом направлении у меня кстати уже сделано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 13:59 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, авторАсинхронщина сети - это асинхронщина сервера необязательно авторЕсть малое количество ядер, выполняющих полезную работу. И есть огромное количество вещей, которые предстоит им выполнить Есть огромное количество оверхеда, который накладывается на работу потока. Переключение контекстов, регистрация объектов операционной системы, оркестрация. Наверняка есть много других весомых оверхедов, необходимости в которых просто нет. Те же лишние прерывания, например, раздутое адресное пространство еще раз, оно оправдано для io-bound задач, где вышеописанный оверхед больше чем обработка очередного пакета действительно ли борьба идет с проблемой, которая имеет место быть? все что написано про блокировки и менеджеры памяти справедливо и для не асинхронного кода вот поэтому мне не понятна мотивация людей, у которых проблемы с существующим кодом (не nginx же они свой пишут) потому и спросил про профилирование, именно оно может показать проблемы и места для приложения усилий когда сервер не держит нагрузку, наряду с поиском способов оптимизации, я бы уже смотрел в сторону масштабирования, т.к. эффект от оптимизации не бесконечен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 15:51 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Дегтярев Евгений, Я конечно люблю беседы, но честно говоря не очень понимаю, что ты спрашиваешь У всех своя мотивация. Я её перечислил Конкретно я планировал сотрудничать с крупными компаниями, занимающимися разработкой серверных приложений на Delphi. Я знаю их внутренние сложности и планировалось придти к ним с готовыми эффективными решениями. Для этого хотелось взять готовую сетевую библиотеку и поверх неё запилить сериализацию под разные форматы и дополнительные утилитарные механизмы типа утентификации или автоматического перехода от сети к пайпам/расшареной памяти при возможности Поэтому я погуглил самые ходовые сетевые библиотеки, стал изучать и пришёл к выводу, что в каждой есть серьёзные недостатки. Что конкретно - мне сейчас сложно сказать потому, что ресёрч был давно Если пилить сетевую библиотеку, то она должна быть конкурентноспособна. Не только с дельфийскими решениями, но и с нодой, например Поскольку я фанат оптимизаций, подобная задача для меня представляет интерес, есть наработки, есть желание дальше развиваться в этой сфере Получится или нет в итоге - зависит от множества факторов. Все самые крутые вещи делаются командой. Оптимизация хоть и моя сильная сторона, но есть огромное количество областей, в которых я слаб. Кроме того в командной работе присутствует эффект синергии, что невероятно важно. Получится/нет - увидим Если ответил - ок Если нет - извини ) Но вообще говоря, на мой взгляд это переливание из пустого в порожнее Мне нравится тратить время на более конструктивные вещи и на людей, которые не столько говорят, сколько делают. Сказано немало. Кому интересна тема - стучитесь в личку - всегда можно придумать, каким образом быть полезным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 16:20 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
авторПоэтому я погуглил самые ходовые сетевые библиотеки, стал изучать и пришёл к выводу, что в каждой есть серьёзные недостатки. я бы даже сказал фатальные )) про то что надо заткнет всех нода (1 core) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. другое решение (1 core) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2021, 20:43 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
А TLS тоже сами будете делать?)) а то ж все эти rps попугаи при наличии хендшейка сразу становятся очень грустными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2021, 12:01 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, к кому вопрос был? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2021, 11:13 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Дегтярев Евгений к кому вопрос был? К soft4u. Правда, его забанили почему-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2021, 12:09 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal К soft4u. Правда, его забанили почему-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2021, 22:03 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
bk0010 Fr0sT-Brutal К soft4u. Правда, его забанили почему-то да и не только тут :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2021, 09:36 |
|
||
|
IdTCPServer отправить сообщение клиенту
|
|||
|---|---|---|---|
|
#18+
по поводу TLS а так ли это необходимо внутри сервиса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2021, 12:54 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2037708]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
216ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 625ms |

| 0 / 0 |
