Согласованность данных в распределенной системе
От: BillyBoy Россия  
Дата: 05.05.20 16:28
Оценка:
Добрый день!
Имеется мастер система, создающая DTOшки (упрощенные представления сущностей в мастер системе) и передающая их в интеграционную шину, которая в свою очередь передает данные в 1С и другие подсистемы.
В 1С для этих DTOшек создана staging area (по сути копия справочников интеграционной шины), из которой уже берутся необходимые данные и копируются в базу 1С.
Как видите, цепочка довольно длинная. Периодически возникают ошибки в каждом из звеньев этой цепочки.
Разработчики правят ошибки, но потом появляются новые.
Пока удалось выкрутиться с помощью костылей:
1) на стороне 1С раз в сутки запускается процесс, который ищет в staging area ссылки на несуществующие записи в связанных справочниках; после этого делаются запросы к интеграционной с uid'ами недостающих записей;
2) т.к. есть "корневые" справочники в иерархии справочников без указания на них ссылок, то для них придумана "витрина данных" на стороне мастер системы, отдающая uid записи и ее дату обновления; соответственно, на стороне 1С процесс, запускающийся раз в сутки, лезет в "витрину данных" и ищет расхождения, восстанавливая целостность данных.
Мне подобная схема не нравится (но реакция со стороны бухгалтерии и руководства мне не нравится еще больше ), хотелось бы каких-то внутренних механизмов проверки целостности без костылей. Разработчики ничего предложить не могут.
Поэтому обращаюсь к сообществу: как в указанной архитектуре снизить процент потери данных от мастер системы в подсистему и уменьшить время рассогласованности данных?
Примечание: для увеличения скорости обмена, он производится в асинхронном режиме, поэтому допускается небольшой интервал времени, в течение которого данные могут быть рассогласованы.
Никогда не спорь с дураком, а то люди могут не заметить между вами разницы.
интеграционная шина Servicebus
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.