Ok, thanks for taking the time to respond to my thoughts. That’s pretty much what I assumed but I hadn’t considered Bonjour. Your point about updates every 3 seconds is interesting - doesn’t scale well for many peers or need for “real-time.”
I’ll just shove this back into my head and get back to work on current projects. Have a great weekend. > On Jun 20, 2015, at 3:49 PM, Jens Alfke <[email protected]> wrote: > > >> On Jun 20, 2015, at 1:01 PM, Mark <[email protected]> wrote: >> >> Jen’s session at Couch Connect and subsequent p2p mesh replication app >> brought forward some background ideas for a project. For this project one >> of the things I’ve been stuck on is the idea of presence information. > > Glad you liked the presentation. One of the things I worked on in the past > was iChat, including the Bonjour IM system, so I’m definitely interested in > presence. > >> 2. Create a single heartbeat doc per device/person and continue updating it >> when online. Pro: less documents Cons: Lot’s of revisions; possible but >> unlikely revision collisions. > > I think this is the better of the two approaches, but it’s still not ideal. > > Problem 1: Lots of revisions, as you point out. The ForestDB storage in 1.1 > handles this a lot better than the SQLite-based one does, because it > proactively prunes old revisions when new ones are added. The default > maxRevTreeDepth is 20, so at most 20 revisions of a doc will be kept around. > But regardless of storage, the more frequently state is updated, the more > replication traffic there will be. > > Problem 2: When a device goes offline (app is backgrounded) it has to update > its presence document, and then replicate it to other peers. But there are > cases where that isn’t possible, like if the app moves out of range of the > LAN or otherwise loses connectivity, or if the app crashes. The typical way > around this is to put a timestamp on the presence document and give it a > fairly short time-to-live, so that if the peer keeps updating it, they’re > assumed to have gone offline. But now you have a conflict between timely > notifications of offline state, vs. the number of updates. (If you have 20 > peers each updating their state every minute, that’s an update every 3 > seconds.) > > If everyone’s on the same LAN, it works better to use Bonjour alone. That’s > what iChat does. Your app’s published replication service is its presence. > Bonjour is pretty good at keeping its state of the world up to date (well, in > Yosemite it wasn’t, but apparently 10.10.4 fixed the regressions.) > > —Jens > > -- > You received this message because you are subscribed to the Google Groups > "Couchbase Mobile" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/mobile-couchbase/19F8D395-BECE-4D01-8C5C-DB43AF812D9F%40couchbase.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Couchbase Mobile" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/mobile-couchbase/A97EA3D9-AE91-4737-A099-41F6FDD26BF5%40gmail.com. For more options, visit https://groups.google.com/d/optout.
