DME – What is it?
AT&T’s DME (which stands for Direct Messaging Engine) is a Java-based open source library for performing service lookups with built-in support for a file-based service directory, AT&T’s GRM (open source version GRM-Edge which is slightly different and will be explained in another post), or hooks for custom service directories.
DME provides client or server location-based (or custom) endpoint ordering with customizable failover support that provides minimal overhead for HTTP, JMS (over HTTP) or JDBC communications. Basically, this allows for accessing redundant systems in a fault-tolerant capacity whether the system is focused on transactions, data retrieval or fire-and-forget data insertion.
Aren’t there already tools that do this?
Probably! I’m not aware of them (and quite honestly I haven’t searched very hard for them), but please leave some info in the comments if you’re aware of similar tools and I can get some comparisons/contrast. I’m only providing this information because DME is something I’m quite familiar with, having worked on it directly.
This is a basic overview of the flow of how DME works:
1) Client requests communication via DME, which talks to a service registry
2) Service Registry returns relevant information about the services (host, port, path, etc.)
3) DME selects the closest endpoint(s) and attempts to contact them
4) If failure occurs talking to the closest set, DME can talk to those farther away as a back up. For instance, in the image, if DC A goes down, it will failover to DC B.