Sobes.tech
Middle+

Դուք համակարգի վերլուծաբաց եք իրավաբանական անձանց հաշվեհամարների բացման ծառայության համար: Դուք ստացել եք գործարար հաճախորդից առաջադրանք՝ բացել հաշվեհամար ծառայությունը իրականացնել: Բացման ծառայությունը ներառում է պայմանագրի ստեղծում և հաշվեհամարի ամրագրում: Հաշվեհամարի բացման ժամանակ, հաճախորդի պայմանագիրը հաջողությամբ ստեղծվեց (վերահիշատակվեց տվյալների բազայում), բայց ամրագրման ծառայությունը վերադարձրեց տեխնիկական սխալ: Որ պահանջները, որպես համակարգի վերլուծաբաց, դուք կներկայացնեք պայմանագրի և ամրագրման համար: Ինտեգրացիոն սցենարի իրականացման տարբերակներ՝ հաշվի առնելով տարածված միկրոսերվիսային ճարտարապետությունը։

sobes.tech AI

Պատասխան AI-ից

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

Требования к ФП Договор:

  • Обеспечить атомарность операции создания договора с точки зрения локальной БД (транзакция).
  • Предусмотреть возможность отката или компенсации в случае ошибок на последующих шагах (например, если резервирование счета не удалось).
  • Логировать статус создания договора и результат взаимодействия с сервисом резервирования.

Требования к ФП Резервирование:

  • Обеспечить идемпотентность операций резервирования счета.
  • Возвращать детализированные ошибки с кодами и описаниями для корректной обработки.
  • Поддерживать возможность компенсации (отмена резервирования) в случае отката.

Варианты реализации интеграционного сценария:

  1. Оркестрация с использованием саги:

    • Сервис открытия счета инициирует создание договора.
    • После успешного создания договора вызывается сервис резервирования.
    • Если резервирование завершается ошибкой, запускается компенсирующая транзакция — удаление или аннулирование договора.
    • Такой подход требует реализации механизма саги и управления состояниями.
  2. Хореография через события:

    • Сервис создания договора публикует событие "Договор создан".
    • Сервис резервирования подписывается на это событие и пытается зарезервировать счет.
    • В случае ошибки сервис резервирования публикует событие "Ошибка резервирования".
    • Сервис договора реагирует на это событие, выполняя компенсирующие действия.
  3. Транзакции с двухфазным коммитом (2PC):

    • В распределённых системах редко применяется из-за сложности и производительности, но возможен при наличии поддержки.
  4. Использование очередей и повторных попыток:

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

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