The end game looks something like this: - One main API - Several smaller API's, mostly independant, but occasionally requiring to get data from the main API's in-memory repository. If I had had the liberty to do it, I would have used Redis or something similar instead of having one in-memory repo for each API, but it's not a possibility due to company standards etc.. That would have been easy :) .. because aside from sharing some data, my API's don't really need to communicate.
Nathan Minier wrote:
what is the exact nature of the communications that need to occur between the services?
Smaller API's would just request info, and the main API would reply, never the other way around.
Nathan Minier wrote:
Is the communication simplex or do we need duplex?
Simplex. Only from the smaller API's to the main API, never the other way around (otherwise I'd have seriously screwed up my architecture..).
Nathan Minier wrote:
What sort of update rate can we expect to see?
The actual update of the data in the memory of the main API is not an issue, I already have a flip-flop mechanism that prevents delivering data while it is being updated. So basically anyone asking data is only getting it from the "active" part of the memory, while the "inactive" is being updated. Thus the smaller API's would also query from the "active" part. And I'm not managing TB's of data either :)
Nathan Minier wrote:
Do we need to acknowledge connection (like TCP) or can we fire-and-forget (like UDP)?
Fire & forget could do (it's on the same server) as long as I can ensure that there is no data loss (which screams more TCP than UDP anyway :s)
Nathan Minier wrote:
Will you only ever have 2 communicating modules, or might you want to add more down the line?
One main, multiple "clients". They're not truly clients because all API's would be autonomous and managing their own set of data, but the whole thing is related, and in time, we will want to cover more business areas, so we will definitely have more "clients".