The Artima Developer Community
Sponsored Link

.NET Buzz Forum
MEST infrastructure looking for a name

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
Udi Dahan

Posts: 882
Nickname: udidahan
Registered: Nov, 2003

Udi Dahan is The Software Simplist
MEST infrastructure looking for a name Posted: Nov 14, 2005 2:07 PM
Reply to this message Reply

This post originated from an RSS feed registered with .NET Buzz by Udi Dahan.
Original Post: MEST infrastructure looking for a name
Feed Title: Udi Dahan - The Software Simplist
Feed URL: http://feeds.feedburner.com/UdiDahan-TheSoftwareSimplist
Feed Description: I am a software simplist. I make this beast of architecting, analysing, designing, developing, testing, managing, deploying software systems simple. This blog is about how I do it.
Latest .NET Buzz Posts
Latest .NET Buzz Posts by Udi Dahan
Latest Posts From Udi Dahan - The Software Simplist

Advertisement
After Savas has oh so gently prodded me (again) to continue writing about my MEST infrastructure, I thought that first of all I need a name for it. I'm waffling between the cute "MEST-up" and the ego-centric "UdiBus". Let me know what name you like.

Anyway, alpha testing has been going well. There are currently three configurations in which the product can be run: Client, DbService, and ComplexService. As for benchmarks, it's not really that interesting what happens in Client mode (it runs fast), but DbService and ComplexService are what matters. On my 2-year old hardward at home, DbService runs at around 45 messages per second (sustained) and ComplexService comes in around 100 messages per second (sustained) with the ability to handle bursts of around 600 messages in one second without adversely affecting latency.

Just so we all understand what's going on, the purpose of this product is to provide an infrastructure for developing robust distributed systems. This means that despite various environmental failures, no information will be lost and data consistency will not be compromised. These failures include network outages, server reboots at the worst of times... the usual suspects.

In DbService mode, the use of the DTC and transactional messages queues gives the required robustness characteristics, but adversely affects throughput. ComplexService mode splits message handling into a 2 phase process, the first in-memory with message sending tied to the original message receipt with queue level transactions, the second phase acting the same as the DbService. Of course, when handling new information coming into the service, Ids must be generated by phase one, and durably passed to phase 2 for persistence along with all the regular message data.

Finally, as a programming model I've based the infrastructure around 3 major elements:

IMessage which represents what messages look like - this being more of an envelope in that it has a header with all the relevant information, but the body isn't bundled into a separate part - it's just data on the message.

IMessageHandler represents that code which will run when the appropriate message arrives at the current service.

IServiceBus represents the API to the outside world - subscribe/unsubscribe, publish, send (with it's many variations...

Let's talk about send for a second:
you can just send a message and be done with it.
you can send a message to a specific service, regardless of whether you know if that service can understand the message.
you can send a message specifying the code that you want to run when a response arrives, or that the timeout you set has elapsed.

Timeout is an important part of any time-critical process. It can be as little as 1/10 of a second, or as much as several days.
Of course, a service may reject a message (send back the original message with the reject code set in the header) specifying why it did that, and have that information return to the sender. Conversely, a service may acknowledge that it has processed the message successfully.

The really interesting thing I learned (from one of the projects that this product is being used in) is how it looks to implement a broker style architecture with a bus style product.

Anyway, I'll be looking for beta testers in the coming weeks. Let me know if you're interested and what kind of system you're considering using it in. If you want to know more about features, or how it's built, drop me a line and I'll put up a post so that everyone will keep updated.

Read: MEST infrastructure looking for a name

Topic: [Development] Konferenzen, Konferenzen, Konferenzen Previous Topic   Next Topic Topic: Original Xbox Games Playable on Xbox 360

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use