Telegram Group & Telegram Channel
πŸ–₯ БобСсСдованиС: АрхитСктура ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий с ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠΌ состояний

## УсловиС Π·Π°Π΄Π°Ρ‡ΠΈ:

Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Java ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ систСму:

1. БистСма ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ событий (`EventStream`).
2. КаТдоС событиС (`Event`) ΠΈΠΌΠ΅Π΅Ρ‚ структуру:

class Event {
String entityId;
Instant timestamp;
String eventType;
Map<String, Object> payload;
}

3. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности (`Entity`), примСняя ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ события.
4. БистСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ состояния:
- ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ состояниС любой сущности Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ (`Instant timestamp`).
- ПослС ΠΎΡ‚ΠΊΠ°Ρ‚Π° систСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ события Π±Π΅Π· остановки ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

## Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования:

- ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий ΠΈ запросов Π½Π° ΠΎΡ‚ΠΊΠ°Ρ‚.
- Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² событий Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.
- Быстрый ΠΎΡ‚ΠΊΠ°Ρ‚ состояния (target: **< 100 мс**).
- Волько стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Java (`java.util.concurrent`, java.time, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚.Π΄.).
- АрхитСктура Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ событий Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°.

## Бонус:

- РСализация ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° снимков (`snapshot`) состояний для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠ².
- АвтоматичСскоС созданиС snapshot'ΠΎΠ² ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ N событий для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности.
- ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стратСгий ΠΎΡ‚ΠΊΠ°Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, быстрый ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΏΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ snapshot + события, ΠΈΠ»ΠΈ чистая ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° всСх событий).

---

πŸ“Œ Π§Ρ‚ΠΎ оцСниваСтся:

АрхитСктура: ЧСткая дСкомпозиция слоёв, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ систСмы Π±Π΅Π· сущСствСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ: Гарантия бСзопасности доступа ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ структурам Π΄Π°Π½Π½Ρ‹Ρ… Π² условиях ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, эффСктивная Ρ€Π°Π±ΠΎΡ‚Π° с большими ΠΎΠ±ΡŠΡ‘ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, оптимизация ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° ΠΈ использованию рСсурсов.

Чистота ΠΊΠΎΠ΄Π°: ΠŸΠΎΠ½ΡΡ‚Π½Ρ‹Π΅ ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ интСрфСйсы, чистая рСализация Π±Π΅Π· "грязных Ρ…Π°ΠΊΠ°", Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ риски: Π£ΠΌΠ΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ систСмС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рост ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ΅ событий ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС snapshot'ΠΎΠ² состояния, продуманная организация хранСния ΠΈ восстановлСния событий.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ: Π£ΠΌΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Π΅Π»Π° сСбя ΠΏΡ€ΠΈ сбоях, сСтСвых ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ высоких Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ….

---

# ΠŸΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ:

- ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π³ΠΎΠ½ΠΊΠΈ состояний: Ссли ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ событиС ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ΠΊΠ°Ρ‚ β€” Ρ‡Ρ‚ΠΎ происходит?
- Рост памяти: Ссли Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС события, ΠΊΠ°ΠΊ Π½Π΅ "ΡƒΠ±ΠΈΡ‚ΡŒ" ΠΏΠ°ΠΌΡΡ‚ΡŒ?
- ΠŸΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Π΅ таймстСмпы: Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли события приходят с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ ΠΏΠΎ порядку?
- ОбновлСниС Ρ‚ΠΈΠΏΠΎΠ² событий: ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ eventType Π±Π΅Π· пСрСписывания всСй Π»ΠΎΠ³ΠΈΠΊΠΈ?
- ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Π΅: ΠΊΠ°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ событий Π·Π° Π³ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹?

---

# РСкомСндация ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ:

- Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ copy-on-write ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для состояний сущностСй.
- Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… (`ConcurrentHashMap`, ConcurrentSkipListMap ΠΈ Ρ‚.Π΄.).
- Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ "Event Handler" ΠΈΠ»ΠΈ "Command Handler".
- Π’Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ snapshot'ΠΎΠ² ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ событий.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/javatg/1810
Create:
Last Update:

πŸ–₯ БобСсСдованиС: АрхитСктура ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий с ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠΌ состояний

## УсловиС Π·Π°Π΄Π°Ρ‡ΠΈ:

Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Java ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ систСму:

1. БистСма ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ событий (`EventStream`).
2. КаТдоС событиС (`Event`) ΠΈΠΌΠ΅Π΅Ρ‚ структуру:


class Event {
String entityId;
Instant timestamp;
String eventType;
Map<String, Object> payload;
}

3. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности (`Entity`), примСняя ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ события.
4. БистСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ состояния:
- ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ состояниС любой сущности Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ (`Instant timestamp`).
- ПослС ΠΎΡ‚ΠΊΠ°Ρ‚Π° систСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ события Π±Π΅Π· остановки ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

## Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования:

- ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий ΠΈ запросов Π½Π° ΠΎΡ‚ΠΊΠ°Ρ‚.
- Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² событий Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.
- Быстрый ΠΎΡ‚ΠΊΠ°Ρ‚ состояния (target: **< 100 мс**).
- Волько стандартныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Java (`java.util.concurrent`, java.time, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚.Π΄.).
- АрхитСктура Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ событий Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°.

## Бонус:

- РСализация ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° снимков (`snapshot`) состояний для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠ².
- АвтоматичСскоС созданиС snapshot'ΠΎΠ² ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ N событий для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности.
- ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стратСгий ΠΎΡ‚ΠΊΠ°Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, быстрый ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΏΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ snapshot + события, ΠΈΠ»ΠΈ чистая ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° всСх событий).

---

πŸ“Œ Π§Ρ‚ΠΎ оцСниваСтся:

АрхитСктура: ЧСткая дСкомпозиция слоёв, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ систСмы Π±Π΅Π· сущСствСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ: Гарантия бСзопасности доступа ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ структурам Π΄Π°Π½Π½Ρ‹Ρ… Π² условиях ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, эффСктивная Ρ€Π°Π±ΠΎΡ‚Π° с большими ΠΎΠ±ΡŠΡ‘ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, оптимизация ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° ΠΈ использованию рСсурсов.

Чистота ΠΊΠΎΠ΄Π°: ΠŸΠΎΠ½ΡΡ‚Π½Ρ‹Π΅ ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ интСрфСйсы, чистая рСализация Π±Π΅Π· "грязных Ρ…Π°ΠΊΠ°", Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ риски: Π£ΠΌΠ΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ систСмС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рост ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ΅ событий ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС snapshot'ΠΎΠ² состояния, продуманная организация хранСния ΠΈ восстановлСния событий.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ: Π£ΠΌΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²Π΅Π»Π° сСбя ΠΏΡ€ΠΈ сбоях, сСтСвых ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ высоких Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ….

---

# ΠŸΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ:

- ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π³ΠΎΠ½ΠΊΠΈ состояний: Ссли ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ событиС ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ΠΊΠ°Ρ‚ β€” Ρ‡Ρ‚ΠΎ происходит?
- Рост памяти: Ссли Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС события, ΠΊΠ°ΠΊ Π½Π΅ "ΡƒΠ±ΠΈΡ‚ΡŒ" ΠΏΠ°ΠΌΡΡ‚ΡŒ?
- ΠŸΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Π΅ таймстСмпы: Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли события приходят с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ ΠΏΠΎ порядку?
- ОбновлСниС Ρ‚ΠΈΠΏΠΎΠ² событий: ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ eventType Π±Π΅Π· пСрСписывания всСй Π»ΠΎΠ³ΠΈΠΊΠΈ?
- ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Π΅: ΠΊΠ°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ событий Π·Π° Π³ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹?

---

# РСкомСндация ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ:

- Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ copy-on-write ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для состояний сущностСй.
- Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… (`ConcurrentHashMap`, ConcurrentSkipListMap ΠΈ Ρ‚.Π΄.).
- Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ "Event Handler" ΠΈΠ»ΠΈ "Command Handler".
- Π’Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ snapshot'ΠΎΠ² ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ событий.

@javatg

BY Java


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/javatg/1810

View MORE
Open in Telegram


Java Telegram | DID YOU KNOW?

Date: |

Can I mute a Telegram group?

In recent times, Telegram has gained a lot of popularity because of the controversy over WhatsApp’s new privacy policy. In January 2021, Telegram was the most downloaded app worldwide and crossed 500 million monthly active users. And with so many active users on the app, people might get messages in bulk from a group or a channel that can be a little irritating. So to get rid of the same, you can mute groups, chats, and channels on Telegram just like WhatsApp. You can mute notifications for one hour, eight hours, or two days, or you can disable notifications forever.

Traders also expressed uncertainty about the situation with China Evergrande, as the indebted property company has not provided clarification about a key interest payment.In economic news, the Commerce Department reported an unexpected increase in U.S. new home sales in August.Crude oil prices climbed Friday and front-month WTI oil futures contracts saw gains for a fifth straight week amid tighter supplies. West Texas Intermediate Crude oil futures for November rose $0.68 or 0.9 percent at 73.98 a barrel. WTI Crude futures gained 2.8 percent for the week.

Java from pl


Telegram Java
FROM USA