Система комментирования/отзывов — на чем?


Appassionato
413

Собственно задача: нужны предельно быстрые аяксовые отзывы для сайта (нужно именно так). Т.е. страница продукта (айтем) заточена статически, а система отзывов навешена к ней через аякс и закрыта от индексации.

Требуется:

1. удобная админка с привязкой к айтемам.

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

3. читаемость кода

4. импорт/экспорт

5. авторизация через социалки и через номера телефона (смс)

6. связь с срм (апи, коллбэки и т.п.)

7. возможность поправить логику самому

Почему не устраивают какли, шмакли или прочие дискусы:

1. медленно

2. невозможно кастомизировать

Бэкграунд мой личный:

1. джава/c++ (4 года работал J2ее-разрабом, но это было 10 лет назад)

2. php/perl

3. js

Под боком есть приемлемые писаки на пайтоне.

Вопросы:

1. может быть есть какой-то полуготовый код, который можно кастомизировать? Можно/лучше платно.

2. а если писать, то на чем? Джава (ой, молодость), Пайтон (тяжело мне его читать), Нод ДжС (странный зверь для меня), пхп (как-то не вяжется с быстро и качеством code-maintance)?

3. опять же вопрос БД

Ну и да… Заказывать буду на стороне. Но так, чтобы часть мелких задач (которые быстрее самому исправить, чем писать ТЗ и проверять результат) хочу решать сам.

Собственно, буду признателен за мысли.


Sly32

Если предельно быстрые — то тут неплохо бы Nosql в сочетании с эластиком. В принципе это навешивается на что угодно, мне удобнее тот же пайтон+ постгрес, кто-то и на джаве сделает. На пайтоне будет дешевле. Если это планируется долгоиграющий проект — лучше кастомное решение.


ArbNet

Пишу XML + PHP + JavaScript фреймворк, довольно-таки быстрый.

Если большую часть хотите делать сами и PHP, JS вам знакомы, то можете рассмотреть мой вариант. Цену вопроса обсудим + моя поддержка объяснение работы, так как доку ещё не написал.

Код написан специфически, но после моего пояснения сможете легко его читать.

Движок написан на PHP который разбирает структуру страницы составленную на XML(замена шаблонам), компонентный подход(всё построено на узлах, в которых есть компоненты(PHP класс, HTML макет, CSS стили к макету, JS код при необходимости), в структуре XML просто прописывается что нужно на странице, движок автоматически всё подключает, при желании может кэшировать часть или всю страницу), данные в MySql через драйвер(класс для работы с сущностями), JS библиотека с подключением нужных модулей(не доделаны два модуля DragDrop и Animation), динамическое изменение страницы, загрузка файлов на лету.

Для контрольной панели решил написать приложение редактор кода с синхронизацией на сайте.

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

Для синхронизации кода с сайтом буду делать приложение публикатор с поддержкой версий и работы в команде. То есть два или более разработчиков берут текущую версию и каждый делает свои правки на своей машине. Затем создаётся «ревизия» — сравнение с исходным кодом версии. После чего ревизии разработчиков объединяются и выявляются «издание» — правки которые можно делать для новой версии и «конфликт» — правки которые конфликтуют и которые нужно исправить. После исправлений создаётся новая версия. Да и публикация кода с синхронизацией на сайте.


Sly32

ArbNet, Вот честно — ценю твое стремление влезть в интересные проект, но в сомневаюсь, что в данном случае твой предполагаемый движок будет полезен. Тем более ты его не тестировал под нагрузкой.

В данном случае нужны немного другие решения. ПХП кстати, вполне себе быстр и в некоторых случаях выиграет у пайтона. Но тут узкие места в основном в реквестах к БД и времени ожидания. носкл база это снимает, а эластику переварить такие обьемы — раз плюнуть. Работал с системой EDX — там как раз система комментирования вынесена из основной базы и все лежит в монге


ArbNet

Sly32, Моё решение было бы лучше, но в данном случае я зря его предложил, так как соглашусь тестов ещё не было при больших нагрузках и движок ещё сырой.


Sitealert

Appassionato:
пхп (как-то не вяжется с быстро и качеством code-maintance)

Некачественный код можно на любом языке написать.

А про «быстроту» – вообще не понял юмору. Отзывы – это не чат и даже не форум. Хрена ли там может быть тормозного? 😕


danforth

Appassionato:
сверхвысокая производительность, в т.ч. в условиях миллиона запросов в сутки.

Миллион запросов в сутки, это 11 запросов в секунду. Справится любая реляционная база. Если это преимущественно запросы на чтение — то тем более. Если нужно масштабирование и отказоустойчивость: смотрите в сторону Cassandra/Scylla (RF>2 и выше, можно в том числе и мультидц репликацию сделать). У нас сейчас в кластере сциллы около 30к запросов в секунду, было до 200к.

Appassionato:
а если писать, то на чем? Джава (ой, молодость), Пайтон (тяжело мне его читать), Нод ДжС (странный зверь для меня), пхп (как-то не вяжется с быстро и качеством code-maintance)?

На Go можно написать, просто и быстро. Я кидал уже сюда скрины, с одного сервера на го мы сейчас жмем около 70к рпс.

А вообще уже есть готовое решение, то же commento, скорее всего вам его с запасом хватит до поры до времени.


Sly32

danforth:
Миллион запросов в сутки, это 11 запросов в секунду.

Это если считать равномерное распределение, по факту будут пики.

danforth:
А вообще уже есть готовое решение, то же commento, скорее всего вам его с запасом хватит до поры до времени.

Го вообще очень быстр на фоне остальных, бесспорно. Хорошее решение. И вот косячок с портами убрать в последнем кормите в докер-компот)))


vandamme

тут гляньте https://widgetpack.com/pricing

в энтерпрайзе написано «Custom integration»

бесплатный тариф запросто держит 50 000 хитов в сутки.


danforth

Sly32:
Это если считать равномерное распределение, по факту будут пики.

По факту, у нас на одной ноде с MySQL было 30-50 тысяч rps, 80/20 рейт на чтение/апсерт. Это много или мало? Уже пора брать NoSQL?


hakuna matata

https://gitlab.com/commento/commento

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *