Разработка распределенного приложения на C - PullRequest
0 голосов
/ 04 января 2019

В настоящее время у меня есть монолитный процесс, написанный на C, выполняющий следующий набор операций

a.Принимать данные от пользователя (в определенном формате полезной нагрузки).

ЕСЛИ пользователь предоставил данные в первый раз, подтвердите, если они соответствуют стандарту, и сохраните их в хранилище данных пользователя

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

IF DUPLICATE Пропустить

ELSE Проверить данные, предоставленные пользователем, и обновить предыдущую информацию в хранилище данных пользователя.

b.Всякий раз, когда пользовательское хранилище данных обновляется,

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

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

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

Добавление pthreads было бы следующим шагом для масштабирования приложения, которое иногда усложняет базу кода, и необходимо соблюдать осторожность в отношении блокировки для согласованности.

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

Process-01: Contains logic to accept data from user and does all standard verification's and update the shared data-store.

Process-02: whenever the shared data-store is updated, contains logic to process the data in it and create final output.

Process-03: Takes care of replicating share-datastore.

process-01 ==== (shared-datastore) === process-02
                        ||
                      process-03

Кажется, мне нужно общее хранилище данных, в котором process-01 и process-02 будут запрашивать данные, предоставленные пользователем для обработки.Не создаст ли это узкое место, так как мне нужно создать копию запрошенного сообщения и поделиться ею с процессами?Для процесса-02 мне нужно создать целое хранилище данных как копию, чтобы оно могло работать с данными независимо.

В идеале, процессу-01 нужны разрешения на чтение и запись, а процессу-02 нужны только разрешения на чтение данных.в общем хранилище данных.

Поскольку мы используем C для нашего приложения, пожалуйста, предложите, есть ли у планируемого нового дизайна еще какие-то оговорки?Есть ли лучший дизайн для того же?Даже любые другие дизайнерские предложения будут очень полезны.Указание на похожий дизайн приложения в Си также будет полезно.

...