кто хочет писать микросервисы?

Европа - быстрые серверы на дисках NVMe от $5 / Русский датацентр от 199руб

Тема в разделе "Работа", создана пользователем grigori, 10 июл 2018.

  1. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.983
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    Кто-нибудь хочет написать со мной пару микросервисов?
    Удаленка. График свободный, то есть любой, - как договоримся, так и будет.
    ReactPHP/swoole/symfony microkernel, можно golang - но без ноды, пожалуйста :)
    пока REST, перестанет получаться - станет rpc

    рейт $10-20, depends

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

    хотелось бы конечно, со знакомыми по клубу
     
    Последнее редактирование: 10 июл 2018
    angor нравится это.
  2. флоппик

    флоппик promotor fidei Команда форума Партнер клуба

    Сообщения:
    4.907
    Ваш город:
    Павлодар, Казахстан
    Address:
    Pavlodar, Kazakhstan
    Country:
    Location on Map:
    Я бы попробовал мб. А то я последние полгода на жабаскрипте пишу в основном, и это слегка уже не ок, а очень утомительно.
     
  3. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.983
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
  4. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.882
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Как по мне, ReactPHP с его обязательными колбэками намного более утомителен, чем современный JS с async/await/rxjs.

    Или речь о фронтенде? :)
     
    флоппик нравится это.
  5. флоппик

    флоппик promotor fidei Команда форума Партнер клуба

    Сообщения:
    4.907
    Ваш город:
    Павлодар, Казахстан
    Address:
    Pavlodar, Kazakhstan
    Country:
    Location on Map:
    БИНГО!!11
    Ну, вебгл и вот-это-все, но это все равно браузер.
     
  6. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.882
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Я тут подумал, а ведь в reactphp мы можем просто стопать цикл. Какая фиг разница, все равно это кооперативка же, а не треды.
    Правда, не знаю, насколько из-за постоянных передергиваний цикла может просесть производительность, это надо проверять.

    В общем, вот идея:
    https://github.com/kbaryshnikov/reactphp-promise-await

    сделал только ожидание единственного promise-а, всякие all(), race() итд можно сделать аналогично, если эта идея вообще имеет смысл. :)
     
  7. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.983
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    да, надеюсь, в 8ке это появится в языке

    await нужен, конечно, для выпрямления последовательности написания кода, промисы без него тяжко заходят
    если одинарный еще ниче, то пачка непредсказуемого размера в цикле, да с ограничением по размеру одновременно исполняемых задач - тяжело
     
    Последнее редактирование: 11 июл 2018
  8. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.882
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Побенчил (php 7.1, pecl-ev, os x), с остановками цикла у меня получается процентов на 11-12 медленее:

    Код:
    » php bench.php
    500000
    Array
    (
        [promises] => 3.2847988605499
        [awaits] => 3.708899974823
    )
    
    Учитывая, какой ад приходится писать на промисах для того же цикла, оно того стоит, в любом случае для типичного reactphp-приложения время ожидания событий в event loop значительно превышает время собственно исполнения php-кода. Иначе вообще надо писать на том же golang.
     
    Последнее редактирование: 11 июл 2018
  9. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.983
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    к сожалению, только в https://github.com/spatie/async сделали await

    в приницпе, есть же генераторы, можно подумать как с ними выкручиваться, но это надо углубиться
     
  10. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.882
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    await() = $pool->wait() = while (...) usleep(...), это несерьезно.

    Ммм, ну, если сделать одну FSM на вообще все, и гонять ее на каждый tick... Наверное, сработает, но что-то мне подсказывает, что оверхед будет значительно выше, чем у моего костыля с остановкой цикла.
    А если заниматься кодогенерацией а-ля babel - можно обойтись и без генераторов, хотя с ними проще, да. (Вообще кодогенерация для PHP - если уж рассматривать ее - сильно усложняется тем, что, в отличие от JS, надо генерить еще и блок use() для closures, что в общем случае вообще нерешаемая задача (extract($array) etc)).
     
  11. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.983
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    у spatie/async другая цель - роутить тяжелые задачи воде обработки изображений между воркер-процессами
    там этот usleep теряется просто

    а для promiseAll напишешь? :)

    1. для php я уже поддерживаю образы, мне не нужен registry, и у меня нет опыта эксплуатации ноды - нелья просто взять официальный образ, надо жонглировать пакетами.
    Если есть рабочий образ на dockerhub, в который можно подмонтировать приложение - то можно что угодно, но деплоить бинарными образами слишком сложно.

    2. речь о микросервисах - пара endpoint-ов, какой-нибудь обсчет в фоне, очередь на редисе, и все
     
  12. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.882
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    В react/promise по сути уже все написано, но соответствующий сахарок не помешает, да. Добавил :)
     
    grigori нравится это.
  13. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.983
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    эта рекурсия меня всегда напрягала - у тебя хотя бы promisesCount есть, а если я не знаю количество?
    была у меня в браузере, на ecma5 без async/await, обработка сотен тысяч записей каталога, которые приходили с сервера.
    упрусь в размер стека вызовов, и все? в браузере цикл не остановить, решил через setTimeout
    а для сервера решение прикольное

    кстати, про кодогенерацию! вспомнил, где async реализована - https://preprocess.io/#async
     
    Последнее редактирование: 11 июл 2018
  14. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.882
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Rxjs подобные штуки позволяет делать очень элегантно. Но его надо осилить сначала, это целый новый мир. :) (Для php тоже есть реализация Rx, кстати).

    Тут есть большая проблема - без IDE-плагина этим пользоваться затруднительно.
     
  15. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.983
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    любопытно, попробую осознать реактивное программирование

    ты заходи, если что