0
votes

I'm about to start a project that requires very fast response times and high availability, i have done a few service fabric projects before so i'm feeling pretty confident about that.

I'm currently leaning towards a specific design, based on stateful content services as main datasource with a single data persistance service saving to a database of some sort.

Read operations are done by web-api Write operations are done by Azure service bus communication with Rebus as handler.

Content services

  • The content services are stateful services which on commit sends a message to the persistance service with the object saved in the reliable dictionary, serialized as json.

  • The content services them selves will be responsible for json deserialization in the event that they need to restore the data.

  • Restore scenarios could be when the entire dictionary for some reason is lost or when a reset message is put on the bus.

Persistance service

  • Recieves a message from the bus and stores the included entity, to a data store (Not yet decided, maybe table storage).
  • Serves an entire repository of data when a service need to reload data.
  • Only concerns itself with storing and retrieving data, no integrity checks

I'm really unsure about whether this is a feasible way of designing a system, that also has a high amount of user data.

what are your thoughts on this design?

1
What is your question?Dismissile
Try it and let us know!Mardoxx
The question really was, if any of you had tried something similar or had any concerns about this design. My main concern is that there really isn't a way to validate the data in the reliable dictionaries.Kenneth Jakobsen

1 Answers

0
votes

I ended up pursuing this solution and it works quite well and performs very well but it needs extensive testing in order to make sure that everything works as expected.