views:

652

answers:

2

I want to develop a multi-server clustered framework that will work similarly to the steps below for message flow.

From Client

  • Gateway Server Recieves Message
  • Gateway Server sends an ACK Message (UDP)
  • Message is custom deserialized from binary into an object via a factory
  • Message is then routed to a secondary server in the cluster (config based) and sends the object to the secondary server via WCF
  • Message is handled on the secondary server.

From Server

  • Secondary Server builds a Message and sends to the gateway server
  • Gateway server binary serializes the Message
  • Gateway server sends the binary to the client and waits for an ACK message (UDP)

The servers will be configured via .config files for pointing to the services, either locally in the same application (the WCF will be initialized) or other systems.

Has anyone worked to create any type of architecture like this, and if so, what are some of the issues you have run into?


EDIT
The system is going to be the server side to an already pre-existing protocol, so any of the client to server protocol is essentially untouchable, but it does include state management (client sends session with every call), encryption, server routing, and packet protection.


Edit
Can someone even provide a link to an open source project that uses clustering in .Net?

+1  A: 

Maintaining session state across long running transactions can become a major hurdle. You will need to ensure that your load balancing solution is able to consider or accommodate a session starting on one server and completing on another. This can be achieved by sharing state via an external source, such as a cookie on the browser/client or an entry on a common database server. Alternatively, many of the hardware load balancing solutions will use "sticky sessions" to ensure the client always returns to the same server (based upon IP address for example)

Jon Simpson
The client is in charge of saving their own session id, and this will be retrieved from a cache on the server side when a new request comes in.
Tom Anderson
A: 

Edit Can someone even provide a link to an open source project that uses clustering in .Net?

Check this sample application out. According to the site ...

Technologies Demonstrated Service-oriented, n-tier design with ASP.NET and WCF

  • Clean separation of UI, business services and DB access
  • Design and tuning for performance
  • Horizontally scalable via dynamic clustering
  • Centralized configuration management of clustered service nodes
JP Alioto