Мы строим систему обработки заказов. У нас есть кластер серверов обработки. Нам нужно присвоить читаемые числа заказам (например, ORD-000001, ORD-000002).Последовательные номера в распределенном слове
Основная проблема в том, что для нас трудно реализовать системный замок. Я думаю о схемах с истечением срока блокировки. Но все имеет в виду все еще узкие места.
Мы приближаемся к DDD, поэтому прямой доступ к базе данных затруднен. Мы используем NHibernate. И мы используем UnitOfWork.
Pls, помощь с некоторыми идеями. Каждая идея будет ценной. Любые ссылки на что-то читать по теме?
ОБНОВЛЕНИЕ: Я хочу подчеркнуть, что мне нужны последовательные номера. И поэтому нельзя использовать алгоритмы hi/low. В настоящее время я рассматриваю сценарий, когда
- Я назначаю «вероятно, хорошее число»;
- Нажмите его в базу данных;
- Если ошибка, попробуйте назначить другое «вероятно, хорошее число»;
- Если успех, совершите;
Но я не могу найти технологию goot для этого.
Я думаю об идее использования MPI (см. Реализацию boost и C#), но не уверен, что это поможет. Одна из идей заключается в том, что каждый коммуникатор знает свой собственный ранг (т. Е. Nth появляется в распределенном env). Не уверен, что это помогает, но я считаю, что он считается «некоторой» и «каждой» идеей ;-) – queen3
Кстати, у вас есть одна база данных или многие на серверах? Если он один, почему нельзя использовать автоматическую учетную запись использования базы данных?(если вы не можете использовать таблицу ордеров, используйте специальную таблицу OrdersPK, вставьте строку и получите свой уникальный порядковый номер). Если они несколько, как вы тестируете «push to database» для отказа? – queen3
queen3, я не могу использовать ПК, в основном потому, что мы используем несколько арендаторов. Мы используем одну и ту же базу данных для хранения заказов для нескольких пользователей. И пользователи должны иметь разностные последовательности. –