|WikiProject Computing / Software / CompSci||(Rated Start-class, Mid-importance)|
- 1 Opening heading
- 2 Conflict of interest and outdated information
- 3 Adding a new paragraph
- 4 Real life examples?
- 5 Contrast with explicit subscribers, synchronous
- 6 Too many articles?
- 7 Observers vs publish/subscribe
- 8 Scale?
- 9 Requested move
- 10 Intro doesn't set out context
- 11 Behavioral or Concurrency pattern?
- 12 Pub sub
- I'm removing the following paragraph from the "Disadvantages" section. Broadcasting or multicasting messages does not typically lead to greater network load than traditional client/server (which normally uses Unicast). For any given volume of messages, broadcast or multicast will almost always lead to less network load than unicast since unicast-based systems must transmit a separate copy of each message to each subscriber. The whole point of multicast is to prevent this duplication of data. Perhaps the author was thinking of UDP or raw IP v.s. TCP. Most UDP or raw IP protocols do not have the sophisticated congestion control that TCP does. TCP will automatically slow down publishers to prevent network overload, whereas UDP protocols will not. Since broadcast and multicast protocols always UDP or raw IP, it might be easy to blame the addressing mode for the lack of congestion control. I thought about simply re-working the paragraph to reference UDP and raw IP, but the problem of network overload is far from universal even there. Some multicast pub/sub systems offer other methods of congestion control, such as rate limiters. In reality, network overload is a characteristic of individual implementations of pub/sub, not of the paradigm, addressing method, or underlying protocol. Here is the original paragraph I'm removing. Fordsfords 03:23, 11 March 2007 (UTC)
- Messages are often broadcast or multicast over a network, allowing for a more dynamic network topology. However as the volume of messages increase, this can result in overloading of the network without appropriate management or pruning strategies. This may be mitigated by the fact that hardware typically enjoys better economies of scale than software.
I'm sorry to all contributors, but that article is quite awful.
- The disadvantages section sounds like it was written by angry Linux wannabe admin who failed to solve all his problems by installing pub/sub DB.
- "Pub/sub" itself sounds awful. And it's not good as a google bait.
- The article fails to explain that guaranteed message delivery is something common... in good Publish/subscribe databases.
- Also, WTF has failure of some subscriber's logging system has to do with Publish/subscribe architecture? That could happen with any data source. I download something from FTP or MySQL or even Oracle and my computer crashes! I need to edit Oracle article because it's unreliable! /sarcasm.
- I'm not an expert, but I've worked with JMS in EAI area.
Conflict of interest and outdated information
I have removed the following paragraph, as it appears to be nontopical (nothing to do with pub-sub as such) and the writer, User:Ken Birman is biased (being one of the inventors and having a financial stake in it).
Furthermore, Publish-subscribe networks is a topic under heavy research. I'd update to the newest state of the art, but am having trouble finding sources that aren't behind pay walls such as ACM. Still, a lot of the disadvantages are simply incorrect. What should be done about them? Anaholic (talk) 12:54, 8 February 2008 (UTC)
First, and for the record: I have absolutely no "financial interest" at stake here whatsoever. I did once, 10 years ago, but for 10 years I have not held any kind of financial investment or had anything to sell in that field, and none of my personal investments are in any way connected to publish-subscribe. Even my textbook (which does discuss both technologies -- accurately -- is royalty free: when it gets sold, I get zero. I'm not sure how you can speak with authority about anyone's financial interests, but in my case, you are simply incorrect. I would like to request that you remove that claim from your comment (at which point you have my permission to remove this rebuttal from this paragraph). Thanks.
I understand your point, but the revision you have made creates a historical inaccuracy. The first publish-subscribe system was the "news" subsystem in the Isis Toolkit and was described in the 1987 ACM Symposium on Operating Systems Principles conference, in a paper "Exploiting Virtual Synchrony in Distributed Systems. 123-138". The publish-subscribe technology described there was invented by Frank Schmuck, who probably should get the credit as the first person to ever invent a fully functional publish-subscribe solution.
Encyclopedia articles need this sort of historical content or they basic write people out of history. I've studied the Wiki policy on POV and COI, and the rules are written to legislate against self-serving Wiki entries. They explicitly make it clear that experts (who will often have a COI) can and should participate, and they also make it clear that accuracy of the type expected from an encyclopedia outweighs superficial COI concerns.
True, Frank was my student, and indeed, the first paper really describing that work didn't actually have his name on the author list. Nonetheless, it was his work we're discussing here. Omitting that information has the effect of removing a critical first page from the history of publish-subscribe. Moreover, the reality is that publish-subscribe emerged from work on virtual synchrony.
I'm going to suggest that you fix the section to be historically accurate, thus avoiding any argument about COI. But eliminating references to Frank's seminal work is unfair to the real inventor who should get credit for inventing this entire field of research, and I certainly hope you'll fix the section in a way that does justice to his contribution!
As for disadvantages, I'll just note that many of the world's largest data center operators are reporting serious instability issues with publish-subscribe as implemented by some of the largest publish-subscribe vendors. This is just truth. I would hope that your edits don't somehow reduce the accuracy of the article... but again, I won't edit the article myself. I'm comfortable with others doing so. Ken Birman (talk) 13:25, 12 February 2008 (UTC)
- It appears that you are correct about no longer having a financial stake in things; I was working on outdated information. Obviously I should have checked first.
- Still, I don't believe this invalidates the rest of my reasoning. You still have a stake in virtual synchrony - you'd have t be superhuman not to - and it does not deserve to be mentioned in the /introduction/ any more than logical clocks does. It is simply one technique among many, not a technique that is central to implementing pub-sub systems or one that is only useful in pub-sub systems.
- You would be very welcome to add a historical perspective to the article, however, preferably in a section on history. It may well be right that it was the *first* practical pub-sub system, it simply is no longer a very central one. Anaholic (talk) 14:01, 12 February 2008 (UTC)
- In fact, I'll go ahead and move said paragraph to a historical section on my own. It will of course be a rather meagre one.. expansion would be good. I'm not going to remove any comments on this page, though. I'm a big believer in history, but consider the my claim that you have a financial stake officially redacted. Anaholic (talk) 14:08, 12 February 2008 (UTC)
Schmuck NOT inventor of "first" PubSub system. I'm changing the claim that Schmuck "invented" PubSub to simply say that he was one of the first to publicly document such a system. (Even that claim may be too strong...) I know that any claim to invent in 1987 was too late to be the first since I worked with systems that conformed to the definition of "publish/subscribe" as early as 1982. At Digital Equipment Corporation, Beat Marti and a number of engineers in the DEC Geneva office developed a system they called SDDB (Self Distributing Database) as a mechanism for improving the efficiency of updating email and telephone book addresses between DEC's worldwide offices. We later incorporated SDDB into various custom implementations of ALL-IN-1 as well as used a similar system for distributed file replication in the "New Notes" project that was one of the inspirations for Iris' Notes product (which later became Lotus Notes). SDDB allowed programs to "subscribe" to particular records in a database and then be notified over DECnet when those records changed. Schmuck may have been first to document such a system, however, such systems had been in use long before 1987. While I am unaware of any formal publications mentioning SDDB, I know that we presented it to customers on numerous occasions. Additionally, I discussed it in presentations at DECUS (DEC User Society) in the early/mid '80's. Bob Wyman (talk) 05:42, 24 November 2009 (UTC)
Adding a new paragraph
Real life examples?
The concept sounds a lot like feeds, alerts, newsgroups... Why aren't any of these mentioned? Or is this about something completely unrelated? —Preceding unsigned comment added by 220.127.116.11 (talk) 00:27, 28 October 2008 (UTC)
Contrast with explicit subscribers, synchronous
The article begins with a definition of what it's not: "Publish/subscribe (or pub/sub) is an asynchronous messaging paradigm where senders (publishers) of messages are not programmed to send their messages to specific receivers (subscribers). Rather..."
As well as being awkward to start by defining what it's not, do these other paradigms that it's being constrasted with have their own names and or articles that can be mentioned? I.e. is there a page/name for "asynchronous with specific/explicit subscribers", or "synchronous with specific/explicit subscribers" (or even "asynchronous with explicit subscribers", whatever exactly that would mean)?
The focus of the article also seems to be on networking (given the asynchronous nature), but it's linked to from places which describe it more as a general software pattern (i.e. one that might be used internally in a program). Is that actually true? If so, does it need addressing? 18.104.22.168 (talk) 03:48, 22 May 2009 (UTC)
Too many articles?
The article, "Publish/subscribe," has a box saying the article, "Observer pattern," should be merged into it. Event listener has been made into a redirect to observer pattern. Event pattern currently does not exist but is synonym for observer pattern from what I see. Event patterns and event listerners are closely related and currently link to event handlers, which has a box saying it should be merged into event (computing). Event handlers are also currently covered in depth in Event-driven programming.
Additionally, a few articles that link to event handler are up for merging: Event cascade, event model, Event notification. The event notification article says it is "sometimes a synonym for Publish/subscribe."
All of the articles are relatively small on content, and together, they already contain a lot of redundant information. I believe all of these articles cover bits and pieces of one concept that could be explained a lot better if they were merged into one article. What is everyone else's thoughts? I may be wrong on including some of the articles on here, correct me if I'm wrong, but I don't feel 8 small articles are needed if they share the same ideas or are pieces of one idea.
|Article||Google Hits||# of Wiki articles linked to it||Merge requested||Article size|
--I'm not sure Event pattern exists. Event model is based on Observer Pattern, however Observer Pattern could be used outside of events context. What I think is:
- "Publish/subscribe," and "Observer pattern," should not be merged (these are two different concepts). If finally they 've to be merged, it must be done into Design_pattern_(computer_science) article. But I don't think it's a good idea, since explaining each pattern inside a single article would make it too fat.
- Event pattern should not exists, and wouldn't be a synonym for 'observer pattern'.
- Event listener, event handlers, and event (computing) refer to the same concepts, and might be subject to merging.
Agreed with BiAiB. Merging "Publish/subscribe" and "Observer pattern" is not a good idea. Using events does not mean adhering to an Observer pattern. Smaller articles for each of the items above and have them all link into Event Model for a full rundown including historical coverage? Bdefore (talk) 17:04, 8 December 2009 (UTC)
Observers vs publish/subscribe
Having worked for almost 10 years on publish/subscribe-related technologies including programming language support, I agree that "observer" and "publish/subscribe" should not be merged. More precisely, I think it is important to make the difference between the observer design pattern and publish/subscribe, or at least between how the observer design pattern is implemented and the latter. With the observer design pattern, observers register directly with the subject; the subject retains thus explicit references to the observers which the subject uses to notify these one after another upon an update. One of the main goals of publish/subscribe is precisely to avoid such explicit references, allowing publishers and subscribers to remain anonymous to each other. This avoidance of explicit references is key to the scalability and decoupling of the publish/subscribe paradigm. A publish/subscribe mechanism can definitely be used to achieve observer-like interaction, but not vice versa. Note that if there is something like an observer pattern w/o "design" then than might be closer to publish/subscribe. But then I don't know what the definition of that would be.
I have been working with both publish/subscribe systems and systems that follow Observer-like patterns since the early 80's and would strongly argue that we should not merge the observer and publish/subscribe articles. While these two concepts have some similarities, they are very distinct. As Patrick Eugster points out, a key concept in publish/subscribe systems is the isolation of publisher and subscriber. This isolation is not taught by the observer pattern as commonly described. It is also important to understand that while the Observer Pattern is typically discussed in terms of "program design," the publish/subscribe pattern is typically discussed in "system design." Much of the complexity of real publish/subscribe systems (i.e. brokers, broadcast mechanisms, distributed hash tables, etc.) are simply nonsensical irrelevancies in most discussions where the Observer Pattern is useful.
What does this mean?
As noted above, while pub/sub scales very well with small installations, a major difficulty is that the technology often scales poorly in larger ones.
Personally I think this statement should be scrapped, as it is very vague. The statement assumes a comparison with some other technology, however it is not clear which. Also, scalability itself is a very vague concept. Pub/Sub has been successfully implemented in very large and complex systems with many nodes, for example in the command and control systems of large military ships. A naive implementation will at a certain amount of nodes run into scalability issues, but the pub/sub paradigm offers many strategies to solve these issues, whilst maintaining much looser coupling and greater flexibility than a service-oriented system.
Of course, this discussion assumes that a proper pub/sub implementation is used (e.g. RTPS), not a pub/sub system that is implemented on top of a service-oriented framework like CORBA.
Intro doesn't set out context
This article's intro assumes WAY too much familiarity with the field of computer software. Should at least start with something like "In software development, publish/subscribe is..." Denbosch (talk) 16:24, 13 February 2012 (UTC)
Behavioral or Concurrency pattern?
This article says that Publish/Subscribe is a messaging pattern which (I mean messaging patterns) fall under Concurrency patterns according to this article, but according to the same article Publish/Subscribe pattern itself falls under Behavioral patterns!! so, is it a Behavioral or Concurrency pattern?