Since Redis is single threaded, you will probably want to use master-slave replication to separate writes from reads, since yes, writes will generally block reads.
Ок, т.е. завести глобальную переменную?) Правда - без БД?
По поводу того, как оно происходит. 50 писем в секунду на протяжении минуты 6 раз в день, с единоверменной доставкой Яндексом в веб и почтовые клиенты it-службы с оттяжокй в 0-96 часов. Вопервых, их можно посчитать.))
ElastiSearch, на quora.com очень хвалят. Компании раз в 100 тысяч больше нашей.
Это меня немного смущает, хотя я и теку на это решение. Но его внедрение я бы приурочил к переходу на тотальное логирование по сквозному ключу от access.log nginx c расширенными метриками по браузеру, во Front`а и API-ядра проекта, а закончил б уже на БД логах.
Тогда бы было понятно, на что мне такой комбаин.
Сейчас сердце клонится к "редиске", хоть с первого пинка она зваелась медленнее memcache, который уже есть в стэке, ситуацию с ним выправили. Но мои фобии упираются в то, как он начнет кашлять, когда на одну и ту же запись/обновление строки нападёт 3 сервера по 50/100/100 запросов к одной строке?
Признаюсь, тут моя матчасть хромает. Слово знаю - LOCK. А что оно будет значить для меня в такой вот попытке - не пойму.
Смотрите, SOAP-API — какая тут может быть единая точка входа? На SOAP-клиенте через БД создаются ключи сессий, доступ далее идет по ним. 30 wsdl сервисов, 30 - wsdl табличных методов. Что именно профилировали вы? На каком фреймворке вы это все реализовывали, что бы я понимал ваше окружение. Мы на ZF2.
Да, такой способ есть, но это... Не про проблему. Хоть и можно уравнять с решением, я его отклонил для себя. Файлов может быть сотня и контролировать их - головняк. Тут вопрос к браузеру и серверному конфигу, как мне кажется.
Станислав Макаров: Вы представляете, как под ZendFramework2 выглядит решение с двумя БД, что бы этот код и на девах и на проде был один? То, что я мечтал услышать - какое-то решение формата "прокси": sqlrelay.sourceforge.net/sqlrelay/images/replicated.png Причем очень давно мечтаю о таком решении. Но, оно не срывается с уст сообщества разработчиков, значит это решение недостаточно себе хорошее. Это что об одной таблице на всех. Структура очень простая - каждая транзакция, влекущая финансовые обязательства третьих лиц и перед этими лицами. Как клиентские, так и к поставщику. Думаю с логами на деве можно как-то распрощаться. Ваша правда.
За дыры тычок засчитан. Девелоперу, действительно, весь объем данных не нужен. А вот сама задача не хранить на боевом проекте все яйца в одной БД - гораздо интереснее. Но, возвращаясь к картинке выше, об это я только фантазирую. У меня есть стойкое ощущение, что логирование транзакций (запрос к поставщику/ответ) и сами сущностные транзакции (начисление/списание/билет/возврат) - нужно разносить. БД Отелей и номеров, допустим, в тройку гигабайт (там только отели и ссылки на статику, в виде картинок, странно держать вместе с транзакциями. Мне так кажется. А решения я пока не понимаю.
Станислав Макаров: Это таблица логов взаимодействия с API нашего проекта и API сторонних поставщиков. Так как иногда требуется расширение таблиц, добавление столбцов и пр., а сервис имеет SOAP-интерфейс и протоколы взаимодействия, задача синхронизации всего этого хозяйства немного усложняется. Объем таблиц, содержащих гигабайты данных поставщика, кеш отелей Букинга, например, позволяющий нам не гонять адовые объемы онлайн и платить за это мегабабки. И далее - это уже вообще ничего не имеющее общего с постановкой задачи.
Если я за неделю все это осознал - оно меня не сделало ближе к ришению. И третьим лицам оно тоже мало чем поможет (знание это).
1) Вчера писал - утром пришел убивать. Дампил один из разрабов из под phpMyAdmin, потому я сразу и написал, как узнал.
2)
— Он не сверх актуален, но я по факту смотрел список процессов в базе и таблицы, и по нему удивлялся
— Не боевой, а разработческий. Бывает, что сервисы системы, при появлении новых полей, начинаю сыпать ошибками о незаполненных сущностях, которых на мастере фронта просто нет, а в других ветках git'а идет оживленная разработка
3) Вот за это я только за. Вроде бы даже предпринимались попытки
4) Тут тоже согласен, я просто не бэкенд разработчик, меня попросили покараулить)))
Предложу руководству обратиться к вам за "давайте подумаем".
copal: Безусловно я этого хочу. И это будет Angular, потому что решения на нем более понятны рынку, нежели мое трехлетнее "понимание принципов". Но framework должен решать некоторую реальную потребность, а не наоборот: натянуть решение под идею фреймворка. Это все холиварная тема из разряда https://habrahabr.ru/post/253297/
«$product1->newProperty = "Новое свойство";
Но нужно отметить, что этот способ присвоения свойств объектам считается дурным тоном в объектно-ориентированном программировании и почти никогда не используется».
Владислав Турчинский: Неа. Обычно ответ саппорта - односложный и не дискуссионный. Это нормально, я всё понимаю. Людей же, с опытом удачного разрешения проблем или неразрешения - много больше. И они тут. Если ник.ру еще не написал faq по этому вопросу - проще тут найти ответ. Но пойду попробую спросить.
— третий абзац, скорее всего, намекает на отсутствие var перед answer. Т.е. если бы я так сделал счетчик вызовов counter1 и counter2, то переменная без var стала бы для них общей/глобальной, а каждый вызов моего замыкания переопределял answer (?)
P.S. Психический сахар, если кажется, что тема замыканий и ссылки - сложная затея habrahabr.ru/post/47418
Спасибо. Но! Если бы такой "формальный" подход издалека работал со мной, я бы нормально закончил первый ВУЗ, довольствуясь "докозательство тревиально". )) По ссылке Евгения на лекцию Кантора рассматривается глубже и объемнее, а в вашем примере больше обозначается, нежели проясняется. Не сочтите за занудство, просто я уже вгрызся и мне нужно "до костей". )