YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: CQRS and EventSourcing

CQRS & EVENT SOURCING IN REAL LIFE

Artsiom Miklushou, Evolution Gaming

Page 2: CQRS and EventSourcing

INTRO‣О себе

‣Что мы делаем

‣О чем вообще этот доклад?

Page 3: CQRS and EventSourcing

WHY?

Page 4: CQRS and EventSourcing

WHAT?▸ Play framework

▸ Circe JSON

▸ Akka - Persistence, Cluster, Sharding

▸ Protobuf for serialization

▸ Cassandra

Page 5: CQRS and EventSourcing

КУСОЧЕК РАСПИСАНИЯ

Page 6: CQRS and EventSourcing

CQRS▸ Все либо команда, либо запрос - другого не дано.

▸ Разные ноды

COMMAND CONTROLLERPOST /command

HANDLER (ACTOR)

QUERY CONTROLLERGET /schedule

MSSQL

JSON Response

JSON Response

Page 7: CQRS and EventSourcing

EVENT SOURCING▸ Immutable fact (event)

▸ Cassandra

▸ Recovery system state

▸ Implicit event log

▸ Use past data

Page 8: CQRS and EventSourcing

ACTORS

▸ Умеет принимать сообщения

▸ Умеет отвечать отправителю сообщения и не только

▸ Подробности тут: http://doc.akka.io/docs/akka/2.4.17/java/untyped-actors.html (Java version)

Page 9: CQRS and EventSourcing

PERSISTENT ACTOR▸ Тот же актор, но с плюшками

▸ Умеет сохранять свой стейт

▸ Умеет восстанавливать свой стейт на случай фейла или перезапуска

▸ persistentId

▸ Можем иметь несколько акторов для разных локейшенов, например.

▸ При старте или рестарте в актор прилетят все эвенты с этим persistenceId

Page 10: CQRS and EventSourcing

PERSISTENT ACTOR

EmployeeAgeUpdated

UserNameUpdated

EmployeeCreated

LocationActor(“Malta”)persistenceId = “Malta”

1

2

3

Page 11: CQRS and EventSourcing

AKKA CLUSTER SHARDING

Command EMPLOYEE SHARD

EMPLOYEE ACTOR (RIGA)

EMPLOYEE ACTOR (NY)

EMPLOYEE ACTOR (ORSHA)

Events

Events

Events

- Шарда сама поднимает актор для нужного persistenceId

- Т.к. это persistence actor, то в него прилетают все events-ы из БД и таким образом мы восстанавливаем state актора.

Page 12: CQRS and EventSourcing

PROJECTIONS▸ Предоставляем данные в структурированном виде.

Journal getEventsByPersistenceIdgetEventsByTag

StreamEVENT HANDLER STATE

Page 13: CQRS and EventSourcing

SNAPSHOTS▸ Каждый раз читать все эвенты и прогонять их через event handler - это

жирно.

▸ Persistence Actor умеет делать saveSnapshot(state).

▸ Persistence Actor на старте получает команду SnapshotOffer, если для него есть сохраненный снэпшот.

Page 14: CQRS and EventSourcing

LINKS▸ https://www.youtube.com/watch?v=JHGkaShoyNs - Greg Young - CQRS and

Event Sourcing

▸ http://doc.akka.io/docs/akka/current/java/persistence.html Akka Persistence (Java version)

Page 15: CQRS and EventSourcing

PALDIES!

Page 16: CQRS and EventSourcing

ЗА ЖИЗНЬ. ЛЮДИ.

▸ Половина людей говорт по-русски.

▸ Сложностей с общением никаких пока не испытывал.

▸ Дискриминации по языковому признаку тоже не встречал.

Page 17: CQRS and EventSourcing

ЗА ЖИЗНЬ. ЦЕНЫ.

▸ Квартира в месяц - 400 евро.

▸ Коммуналка - еще 100.

▸ Самый дешевый транспорт - такси.

▸ Проезд в трамвае - 1.15 евро.

▸ Машина - бесполезна, если живешь в центре.

▸ Пиво (нормальное) в баре (нормальном) - 3-5 евро.


Related Documents