pablocastilla / NSB-StructureMap-NHibernate

0 stars 0 forks source link

RabbitMq, MassTransit + (Redis, GraphDb, ElasticSearch) = Questions :) #1

Open glikoz opened 9 years ago

glikoz commented 9 years ago

Hi Pablo,

First, I want to say thanks for all your effort.

This issue is not related to this repository only.

I'm planning the create architecture of my next Web Application Framework, there is the single server for now, but I want to make my plan for 100 million daily visits, so It must be ready for it :)

Details of framework:

UI side is a little confused because there are so many options to consider. (AngularJs, ReactJs for client, NodeJs+Express or Async WebApi for server) Only thing that I know I will use VS2015 for this project:) But for know I will start with VS2013.

I will use RabbitMq+MassTransit on the middleware.

Redis for Analytics, GraphDb as graph queries, and ElasticSearch for search. All of them must be synchronized. Not real time. Lazily. I guess all databases will consume same "Queue", but they will update themselves asynchronously. Maybe RedisConsumer could consume 100 messages from the queue, ElasticConsumer could consume 5 messages at the same time. But the end of the day all DBS are synchronized.

I could not find a better place to write these :)

I'm waiting your response impatiently.

Note: SignalR is used to push messages to UI.

pablocastilla commented 9 years ago

Hi Glikoz!

Well, first of all don't think about me as someone that can tell you exactly how to do a web page with heavy load. But we can think together about all those "depends" :).

Web framework: I think that the web framework depends on how the web page works.

Databases I would store events in an Event database, look Greg Young's EventStore. There you store your "commands", then you synchronize those commands with your "read" databases (Redis, GraphDb, ElasticSearch). https://cqrs.files.wordpress.com/2010/11/cqrs_documents.pdf Of course you could use a normal and transactional RDBS or a NoSql like mongo, but I would put something between Rabbit and the read databases.

Your questions:

I think you didn't look enough! :)

What do you think?

Regards

pablocastilla commented 9 years ago

http://stackexchange.com/performance

You will like this link.

glikoz commented 9 years ago

Yess, it is amazing!

glikoz commented 9 years ago

So My Web Application Technology Stack:

Dbs:

Middleware:

UI (Server):

UI(Client)

Any idea?

Thanks.