Processing
Public API
ES
Key: ProductId
Value: Product
Key:
(OrgProductId | ReferenceProductId , RegionId)
Value:
Обогащённый OrgProduct
ИЛИ
RefProduct со всеми обогащёнными OrgProduct'ами в рамках одного RegionId
Pacman
Processing
Public API
ES
Offers
Key: (OrgProductId | ReferenceProductId , BranchId)
Value: Обогащённый Offer
Pacman
Products
Offers
Pacman
offers
Processing
Public API
ES
Pacman
products
Pacman
offers
Converter
Processing
Public API
ES
Pacman
products
Pacman
offers
Converter
WebApi
Escobar
Processing
Public API
ES
Pacman
products
Pacman
offers
Converter
WebApi
Escobar
Pacman
branches
Pacman
Branches
OrgProducts
RefProducts
Pictures
RefProductsAgg
PublicApiProducts
Metadata
Используются локальные сторы на базе RocksDB.
Сторы восстанавливаются из кафка топиков.
Есть подобие топологии — это пайплайны. Каждый пайплайн читает топик или партицию.
Обработка сообщений делается в памяти, с использованным данных из сторов.
OrgProductsPipeline
RefProductsAggPipeline
BranchesPipeline
RefProductsPipeline
PicturesPipeline
RefProductsStore
BranchesStore
BranchOrgsIndex
BranchRefsIndex
OrgProductsStore
RefProductsAggStore
PicturesStore
PicturesOrgProductsIndex
Используется статичечский, а не рантаймовый ребаланс
Стор | Топик | Тип стора |
---|---|---|
RefProductsStore | ref-products | Global |
BranchesStore | pacman-branches | Global |
BranchOrgsIndex | org-products | Partitioned |
OrgProductsStore | org-products | Partitioned |
BranchRefsIndex | public-api-products | Partitioned |
RefProductsAggStore | public-api-products | Partitioned |
PicturesStore | pictures | Global |
PicturesOrgProductsIndex | org-products | Partitioned |
Все филиалы и эталоны будут на каждой ноде в глобальном хранилище.
Считаем, что эталоны и филиалы не удаляются никогда
Выходные сообщения попадают всегда в тот же номер партиции, что и входное сообщение.
При первом старте кластера топики с метаданными дочитываются до конца, и только потом начинают читаться топики с товарами.
Количество партиций входного топика с товарами и промежуточного топика совпадает.