Looking for reference designs and best practices that depict/describe
candidate software architectures for building a custom high
availability cluster. Very interested in best practices here, as it
relates to communication protocols, state machine design, state
replication, state consistency checking, and detection of new and
unavailable cluster nodes.
This will help me to implement a custom service in java or c# that can
be deployed on up to 16 nodes, that serve as an application-level
cluster. Individual services will perform lookups on a shared data
store for client read requests and then cache the results locally
(in-memory or disk). The cached state will then be replicated to one
or more of the cluster peer services. The overall system architecture
will be client-->service (clustered)-->shared datastore. Client write
request will cause an update to the shared storage and then state
invalidation (cache-eviction) for peer cluster services.
Not interested in frameworks for OS-level HA-Clustering, and not
interested in HPC (high performance clustering) frameworks or
methodologies; the goal is reliable state sharing between services
implemented in an object-oriented language running on separate
hardware, not parallel processing. |
Clarification of Question by
kindageeky-ga
on
10 Jan 2006 14:20 PST
Mostly, I'm looking for links to information rather than someone to
give me a full design or a lot of detail. After a lot of searching,
I've only come up with data on parallel computing. I know JBoss
supports clustering (along with lots of other app servers). It would
be great to get any info on how the development teams for one of these
app servers approached the problem, or a contact who worked on this
sort of project. Alternatively, I've heard Google's search technology
supports state replication of search indexes to distributed nodes, so
details on how the replication part of this works would be helpful.
Thanks,
Kindageeky
|