Как стать автором
Обновить

Комментарии 53

История интересная, но у меня вопрос из «области общих знаний» :)
По моим воспоминаниям из прошлой жизни, вот такое требование:
чеки, пробитые на кассе магазина, должны быть видны в центральной системе 1С не более, чем через 1 секунду от момента его «фискализации» на кассе при наличии (исправной работе) связи

в основном нужно для гордой демонстрации, и слабо нужно для реальной жизни.
Т.е. когда люди хотят оперативно иметь z-отчеты — понятно, когда чеки используются в системах лояльности — тоже плюс/минус понятно, а вот когда для «оперативного принятия управленческих решений» — тогда не очень
А ваш клиент озвучил, зачем ему данные с такой точностью? Или мои воспоминания можно сдать в архив и чековая лента из 650-ти точек в базе может чему-то реальному помочь?
Чеки нужны оперативно. Зачем — ну можно много придумать зачем. Те же резервы товаров, например. В данном конкретном случае, 1 секунда это не бизнес-критичная величина. И 1.5 секунды и 5 секунд, на самом деле, подойдут. Просто у нас получалось за секунду. Не замедлять же теперь )
Придумывать неинтересно :) Резервы в продуктах на розничных точках — это что-то новое :)
Андрей, речь не о вашем решении, как таковом. Речь идет о том, чем заказчик мотивировал необходимость такой оперативности обменов.
Если вы не вникали и решали такую задачу просто как технологический вызов — это тоже ответ и он ± понятен.
Резервы в продуктах на розничных точках — это что-то новое

Видимо вы мало работали с ритейлом. Обычное дело, вообще-то. Разве что с едой пример неудачный. А в целом по торговле — запросто.

«Просто технологический вызов» — это мимо. Любое внедрение начинается с целей, это аксиома. Я не участвовал на самом старте проекта и природу цифры в 1сек. уже не назову (или напутаю). Думаю, коллеги, которые больше в теме, подтянутся в топик и расскажут.
НЛО прилетело и опубликовало эту надпись здесь
А какие были сложности в администрировании 2000 RMQ серверов?
При администрировании любых серверов возникают сложности, а уж если их несколько сотен или тысяч, да еще на Винде, тогда совсем непросто :)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Переоценка. Несколько раз в день. А вот интересно как заказчик проблему с ценниками решил?
— Продавцы эти (бумажные) ценники несколько раз в день переписывают?
— Покупателю если что говорят «Вы мне ценник и что там — дешевле, не показывайте! У нас в базе другая цена! Компьютер не может продать по той что на ценнике» (при том что по закону — должны продать по цене на ценнике...)
— Ценники сами обновляются с того самого компьютера товароведа (потому что они на eInk).
Ой что-то мало верится в последний вариант. Больше — во второй.
Непонятно, зачем было тянуть полифиллы в кассовое ПО. Если там есть поддержка ES3 — ее вполне достаточно, чтобы выбрать данные о чеке и переслать их дальше. Добавление ES5/6 выглядит как бессмысленное усложнение. Тем более что ничего незаменимого там не добавлено. Или ваши разработчики не знают отличий версий JS и не способы писать под определенную версию?
Я наверное непонятно донес. Там не JS, там весьма специфичное микрософтовское видение этого языка. Там даже не ES3
Что мешало использовать Node.js?
Где именно?
там даже до es3 было далеко. Это майкрософтовский JScript ХРшного разлива с выпиленными библиотеками к тому же. Там не то, что какого-нибудь Math нет, там даже JSON пришлось целиком полифилить
Где-то треть полифилов была добавлена действительно для удобства эээ меня в том числе, как привыкшего к typescript и es6 и с содраганием вспоминающего эпоху pre-es5. Но остальное приходилось добавлять для реально нужных вещей или для работы других более высокоуровневых полифилов (не переписывать же официально рекомендованные от Mozilla)

Если честно, я не понимаю изначального «наезда». Ну скопипастили несколько готовых полифилов, они все упакованы в немешающие функции где-то «внизу», на производительность влияют минимально, а скорость и стоимостью разработки сокращают. В чем проблема-то?

P. S. На скриншотах в статье не все полифилы, которые были добавлены.
Интересно было бы узнать исходную бизнес-задачу.
С технической стороны все в выигрыше — и клиент доволен, и исполнитель за счёт клиента «прокачался».
НЛО прилетело и опубликовало эту надпись здесь
Я к тому, что в исходной задаче, например, было не 1 секунда, а 1 минута. И тогда логичен вопрос — а стоило ли такой огород городить? Но решение хорошее, конечно, знание что «так можно» пригодиться.
Вообще-то очереди сообщений, это давно известный и общеупотребимый паттерн.
Насчет оперативности, ну представьте, что вы торгуете чем-нибудь в розницу и у вас 4000+ торговых точек по стране. Кроме того, люди покупают товары у вас на вашем же сайте и оформляют там доставку. Покупает человек, например, розовый айфон с доставкой. Откуда ему удобнее привезти? С центрального склада за 2-3 дня? Или с магазина в его собственном же подъезде, сократив таким образом расходы на логистику и обеспечив сервис «доставка за 20 минут»?

Чтобы такое сделать- вам нужно оперативно понимать, какие остатки розовых айфонов есть магазинах поблизости, зарезервировать на какое-то время, пока толпа других страждущих розовый айфон тоже серфит сайт, ну и т.п.

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

Можно ли называть это «огородом»? Обычно это называют качественным преимуществом.
Есть альтернатива — работа всех точек в общей базе, например Деловые линии пошли по такому пути. Ну и доставку в течении минуты можно и без очередей обеспечить. Если реально надо в течении секунды — да, скорее всего альтернатив очередям нет.
Не забывайте про разные торговые точки.
Были точки на селе, или на окраинах, где простые 3G-свистки, частенько работающие в режиме 2G.
Какая уж тут ЕБД??
Я безгранично уважаю ДЛ за умение работать с большой ЕБД на 1С в режиме Highload 24/7. Мой прагматизм говорит, что проще делать распределенные системы. Но это я исключительно за себя говорю. Возможно, ДЛ когда-нибудь опубликуют цифры — во что им обходится владение их системой. Я на коленке считал ЕБД vs МиниСервисы — получилось в пользу сервисов.
НЛО прилетело и опубликовало эту надпись здесь
Про ритейлера с единой базой — этот случай? infostart.ru/public/857978
Если этот — то они вроде как всем довольны :)
НЛО прилетело и опубликовало эту надпись здесь
Я конечно понимаю желание, когда хочется все сделать на встроенных компонентах системы, но всегда наступает момент выбора, или добавлять новый внешний компонент, или продолжать пытаться запихать сложный функционал в эту древнюю систему.
В итоге вы добавляете внешние компоненты для .NET и ODBC-провайдер на кассы, и при этом продолжаете писать магию на встроенном Jscript. Что мешало написать свой .net-класс и его вызвать из Jscript.
В любом случае будет наступание на грабли, как развернуть на все кассы .net-компоненты
Магия JS была обусловлена тем, что Фронтол позволяет его использовать.
В итоге было разделение — Net-часть обеспечивала работу с кроликом, а JS-часть — специфику Фронтола + обращение к серверу Кролика.

Мы как раз не стали смешивать в единую компоненту специфику Фронтола и специфику кролика.
Ну и напомню, что работа с «древней» системой — это одно из ограничений проекта.
Т.к. подобное ПО развернуто было давно и вполне себе успешно работало на всех кассах заказчика.
Ну блин… Писать текстовые сценарии всяко же проще, чем компилируемые сборки, не?
А пробовали ли для отправки сообщений использовать REST-интерфейс Рэббита? Сейчас хотим запустить своими силами интеграцию 1Ски с шиной — подписку на сообщения я реализую через прокси-сервер на Java, а вот отправку похоже что придется делать через REST.

Не советую. Rest не обеспечит вам ту пропускную способность, которую даст чистый amqp. Да еще и писать прокси-сервер. Кажется что дешевле будет просто купить наш адаптер к 1С

Обращались к вам. Мое руководство отложило все на 4й квартал (возможно). Поэтому быстрее свое решение сделать.
А как вам решение Связного?(привет бывшим коллегам).
Странное руководство у вас. Написать с нуля и отладить сервер, обучить админов его поддержке и мониторингу, передать падаванам компетенции по его развитию… Все это быстрее и дешевле покупки компоненты ценой в ползарплаты программиста?

Решение Связного также содержит внешний сервер и требует governance со стороны Java команды. А так хорошее решение все пользуются.
НЛО прилетело и опубликовало эту надпись здесь

Ну Андрей правильно понял — то которое с Apache Flume.

Которое с индийским комплектом + flume + mssql +

Кстати, а как должен был работать невзлетевший вустер? Про дживсы-то я в курсе, благо дорабатывал DRP)

Мы немного не узнаём вас в гриме )

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

В документации написано чуть иначе:)
Please note that the HTTP API is not ideal for high performance publishing; the need to create a new TCP connection for each message published can limit message throughput compared to AMQP or other protocols using long-lived connections.

Если мне память не изменяет, то в итоговой схеме федеративную очередь если не полностью выпилили, то минимизировали её использование и максимально задействовали showel (конкурс на лучший перевод этого слова). И наверное стоило добавить что был реализован еще и обратный канал: установка цен номенклатуры из центра.
НЛО прилетело и опубликовало эту надпись здесь
shovel — перебросчик
Поясните такие моменты.

1) С вводом онлайн касс у нас все ведущие поставщики касс имеют на борту ФН с отправкой данных напрямую в ОФД. Данные по чекам можно брать через их API. Или у вас ОФД без API? Вторая приходящая в голову причина — требуется детализация чека в разрезе содержания в нем товарных позиций. Или вы этот самый внутренний ОФД писали?

2) Как решается вопрос с длительной недоступностью кассы (по сути данных с неё), больше суток допустим, и построением отчета? Ведь он по сути искажен. Делалась ли какая подсветка/подсказка в духе "… по данным с ХХ% касс"? Делалась ли какая-то агрегация данных (часовая? суточная? месячная?) для отчетов данные по котором 100% докатились до центральной системы?

1) Эта история была до появления ОФД и онлайн-касс. Как сейчас обстоит дело, я не знаю.
2) отчеты были самые разные, в том числе и по "недогруженным кассам", но вообще — принимать какие-то стратегические решения по оперативным данным в течение дня, это вообще странноватое занятие. День в учете не зря формальным образом "закрывается" z-отчетом кассы. Даже безо всякой недоступности кто-то может просто придти и сделать возврат товара например.

1) Просто статья опубликована в 2018 году, а кассы ввели с середины 2017-ого. Видимо история еще более давняя?

Да, статья написана пост-фактум

НЛО прилетело и опубликовало эту надпись здесь
А я правильно понимаю, что плагин Federation по сути использовался для организации кластера и коробочный механизм кластеризации erlang-а не использовался? И очередь внутри RMQ находящегося в POS кассе (под управлением WinXP) через этот плагин просто переливалась в другую очередь другого RMQ сервера в моменты когда связь с торговой точкой восстанавливалась? А пока со связью были перебои пробитые чеки копились в RMQ кассы (по сути реализация ФН)?
НЛО прилетело и опубликовало эту надпись здесь
Совсем не просто.

На статью может потянет?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории