----- Original Message ----- > I'm not exactly sure about why talking the same at the wire level is > an > explicit goal; if raw blazing speed is also equally important. > > Removing the wireformat from Kafka could be done through abstraction; > but > that would incur reinterpretation costs(talking native Kafka) and > take a > performance hit. > > I could make a similar argument over the second goal as well. It is > not > apparent that solving ALL problems through abstraction and then > universally > accepting a performance hit is that ideal. It may make > purchasing/acquiring > easier; but by adhering to the lowest common denominator. > > Wouldn't it be better to make explicit tradeoffs for one-offs based > on > specific needs? i.e. if your architecture doesnt require zookeeper in > Kafka > for coordination, reduce the complexity. Don't force complexity in > all > cases.
Sure but if AMQP solves all the goals then why do so-called best-of-breed "proprietary"? Who said lowest common-denominator? If AMQP is lowest common-denominator then it has failed. Not sure how this is complexity either. Surely reusing an existing tried and tested protocol instead of developing and maintaining a new one is less complex. > > In other words, Kafka is different enough from other messaging > systems that > to enforce a common contract (aka amqp) ,without incurring a > significant > performance hit, would be very challenging. There is no metrics to say this would be a performance hit at all. Again I'm not saying it is the right fit but I don't think we can conclude that without investigating. And I haven't seen anything that would suggest it can't fit. William > On Oct 2, 2012 3:22 PM, "William Henry" <whe...@redhat.com> wrote: > > > > > > > ----- Original Message ----- > > > I looked into AMQP when I was first starting Kafka work. I see > > > the > > > crux of > > > the issue as this: if you have a bunch of systems that > > > essentially > > > expose > > > the same functionality there is value in standardizing the > > > protocol > > > by > > > which they are accessed to help decouple interface from > > > implementation. Of > > > course I think it is better still to end up with a single good > > > implementation (e.g. Linux rather than Posix). But invariably the > > > protocol > > > dictates the feature set, which dictates the implementation, and > > > so > > > this > > > only really works if the systems have the same feature set and > > > similar > > > enough implementations. This becomes true in a domain over time > > > as > > > people > > > learn the best way to build that kind of system, and all the > > > systems > > > converge to that. > > > > +1 > > > > > > > > The reason we have not been pursuing this is that I think the set > > > of > > > functionality we are aiming for is a little different than what > > > most > > > message brokers have. Basically the idea we have is to attempt to > > > re-imagine "messaging" or asynchronous processing infrastructure > > > as a > > > distributed, replicated, partitioned "commit log". This is > > > different > > > enough > > > from what other system do that attempting to support a > > > standardized > > > protocol is unlikely to work out well. For example, the consumer > > > balancing > > > we do is not modeled in AMQP, and there are many AMQP features > > > that > > > Kafka > > > doesn't have. > > > > I need to understand your consumer balancing a bit more but AMQP is > > designed not to be another MOM like traditional broker based > > messaging > > systems, though it does support that model. > > > > I like to explain the goals of AMQP to be threefold (some may argue > > differently): > > > > 1) A Standard wire protocol for interoperability. i.e. have all > > messaging > > systems speak the same on the wire. > > 2) Handle all messaging use cases well - i.e. not just asynch, not > > just > > fanout, not just pub/sub but instead do it all so that AMQP is > > applicable > > to all use cases. Let's not have a "we do AMQP everywhere except X > > because > > it does do X very well. > > 3) Must be fast. Even if it does 1 and 2 very well it will not be > > adopted > > by a wide range of applications. > > > > So if by consumer balancing you mean multiple consumers feeding off > > a > > particular address/source/publisher/producer etc. then AMQP does > > manage > > that model. > > > > > > > > > > Basically I don't really see other messaging systems as being > > > fully > > > formed > > > distributed systems that acts as a *cluster* (rather than an > > > ensemble > > > of > > > brokers). > > > > This is exactly what we in the Qpid community are working towards > > right > > now. I think AMQP as a protocol under Kafka and exploiting Kafka's > > framework is a great idea. > > > > Please look at the new Qpid/Proton work and some of Ted Ross's > > (cc-ed) > > router work. > > > > > Conceptually when people program to, say, HDFS, you largely > > > forget that under the covers it is a collection of data nodes and > > > you > > > think > > > about it as a single entity. There are a number of points in the > > > design > > > that make this possible (and a number of areas where HDFS falls > > > short). I > > > think there is a lot to be gained by bringing to bear this modern > > > style of > > > distributed systems design in this space. Needless to say people > > > who > > > work > > > on these other systems totally disagree with this assessment, so > > > it > > > is a > > > bit of an experiment. > > > > This is very interesting to me and some of the customers (at least > > 2) I > > work with. > > > > > > > > I think an interesting analogy is to databases. Relational > > > databases > > > took > > > this path to some extent. They started out with a very diverse > > > feature set, > > > and eventually converged to a fairly standard set of > > > functionality > > > with > > > reasonable compatibility protocols (ODBC, JDBC). Distributed > > > databases, > > > though, are much more constrained and virtually always fail when > > > they > > > attempt to be compatible with centralized RDBMS's because they > > > just > > > can't > > > do all the same stuff (but can do other things). I think as the > > > distributed > > > database space settles down it will become clear how to provide > > > some > > > kind > > > of general protocol to standardize access, but trying to do that > > > too > > > soon > > > wouldn't really help. > > > > > > Another option, instead of making Kafka an AMPQ system, would be > > > to > > > try to > > > make Kafka a multi-protocol system that supported many protocol's > > > natively, > > > sharing basic socket infrastructure. I have been down this path > > > and > > > it is a > > > very hard road. I would not like to do that again. > > > > I understand that. > > > > > > > > That said it would be very interesting to see how well AMQP could > > > be > > > mapped > > > to Kafka semantics, and there is nothing that prevents this > > > experiment from > > > happening outside the main codebase. It is totally possible to > > > just > > > call > > > new KafkaServer(), access all the business logic from there, and > > > wrap > > > that > > > in AMQP, REST, or any other protocol. That might be a good way to > > > conduct > > > the experiment if anyone is interested in trying it. > > > > > > > I would love to take a look at this. Any pointer on where an > > integration > > point might be would be welcome. There is so much work in the AMQP > > and > > Qpid communities that Kafka could benefit from. You could > > concentrate on > > the "cluster" model and let Qpid/Proton handle the payload > > distribution on > > the wire. > > > > I'm willing to take the risk that I might be wrong but right now I > > don't > > see where AMQP would fall down in this case. > > > > Best regards, > > William > > > > > Cheers, > > > > > > -Jay > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Oct 1, 2012 at 12:07 PM, William Henry > > > <whe...@redhat.com> > > > wrote: > > > > > > > Hi, > > > > > > > > Has anyone looked at this email? Anyone care to express an > > > > opinion? > > > > > > > > It seems like Apache has ActiveMQ and Qpid, which are already > > > > working on > > > > integrating, and now Kafka. Kafka might benefit by using > > > > Qpid/Proton just > > > > as ActiveMQ is trying to integrate with Qpid/Proton. > > > > > > > > If folks are interested I'd be willing to take a look at the > > > > integration > > > > and help out. > > > > > > > > Best regards, > > > > William > > > > > > > > ----- Original Message ----- > > > > > Hi, > > > > > > > > > > > > > > > Has anyone looked at integrating kafka with Apache Qpid to > > > > > get > > > > > AMQP > > > > > support? > > > > > > > > > > > > > > > Best, > > > > > William > > > > > > > > > >