[infinispan-dev] HotRod?? [ISPN-29 and a "custom protocol"]
Manik Surtani
manik at jboss.org
Wed Dec 9 07:44:25 EST 2009
A few more comments:
1. Message IDs. Is this whap the client uses to match responses to requests sent, perhaps if sent in an async manner (NIO)? If so, is 4 bytes (a Java int) enough? Would we not want 8 bytes for this? Also, if it is unsigned, perhaps we could use a variable-length long?
http://lucene.apache.org/java/2_9_1/fileformats.html#VInt
Or maybe there is a better way to express this - UUIDs? Or is that too long/verbose?
2. Responses. How do you express hostname/IP (intelligence = 1) and hashes (intelligence = 2)? I presume the former is an IP represented as a String so that the client can open a connection to the node, and the latter is a 32-bit int since these are the hashes used by the ConsistentHash impl on the server nodes?
3. Responses. Number of owners - 4 bytes for this? Surely this is wrong, since you only have 2 bytes for number of cluster members? :) Personally I think you could use 2 bytes for the former and a variable-length int/long for the latter (see above).
Cheers
Manik
On 8 Dec 2009, at 19:36, Galder Zamarreno wrote:
> Hi all,
>
> I've updated with a very early draft of the hot rod protocol:
> http://www.jboss.org/community/wiki/HotRodProtocol
>
> As a reference, I've been using
> http://code.google.com/p/memcached/wiki/MemcacheBinaryProtocol to see
> what memcached did. Alex, as I emailed you yesterday, it'd be
> interesting to see what you did too.
>
> First, several operations are still missing from the spec: remove,
> removeIfPresent, *Async ops (putAsync, removeAsync...etc), putAll,
> putForExternalRead, evict, version, name (get cache's name).
>
> Also, I still need to think how to add flags into each operation sent
> across the network.
>
> There're some other operations that I'm consider whether to include or
> not. Here's what I'm thinking at the moment:
>
> - keySet, entrySet, values: I don't plan to include them since they'd be
> very expensive both from a cache iteration perspective and from sending
> that stuff back to the client.
>
> - containsKey: I don't plan to include it, you can figure it out with
> get command.
>
> - containsValue: No plan to include it since we don't support it.
>
> - size, isEmpty: Maybe include them as part of stats command like
> memcached does?
>
> Also, it might be wised to implement operations like replaceIfEquals
> using with a cas long, like memcached does
> (http://code.google.com/p/memcached/wiki/MemcacheBinaryProtocol), rather
> than sending the value cos that would be more network efficient. The old
> value could be much more longer.
>
> Another thing to note here is that for expiry and maxIdle, I followed
> the Java TimeUnit based definition. To make it easier for client
> implementers, we could follow the memcached style, where seconds are
> used always and if the number of seconds is bigger than 30 days, those
> seconds represent UNIX time (number of seconds since 1st January 1970).
> WDYT?
>
> Finally, memcached has this notion of getq where, as far as I can
> understand the spec, it's a quiet operation where the server holds up
> the return until you send a non quiet operation, i.e. a get or a noop. I
> need to look further into it to understand how exactly works, but it'd
> be interesting to know the thoughts of anyone who's dealt with this already.
>
> Cheers,
>
> On 12/03/2009 06:22 PM, Manik Surtani wrote:
>> Great, thanks Alex!
>>
>> On 3 Dec 2009, at 05:00, Alex Kluge wrote:
>>
>>> Hi,
>>>
>>>>> I'll see what I can do about documenting it...
>>>>
>>>> Yeah lets do that - I would recommend using the JBoss.org
>>>> wiki pages so that the designs can be distilled by all of us
>>>> and then linked to from the other Infinispan design pages.
>>>
>>> I've started this at
>>>
>>> http://www.jboss.org/community/wiki/RemoteCacheInteractions
>>>
>>> I will start with a description of what I have, which is a good multilevel cache implementation. Then get to a description of some of the additional motivations and requirements for a data grid, which is a bit more general, and use that to motivate changes in the protocol.
>>>
>>> Alex
>>>
>>>
>>>
>>> _______________________________________________
>>> infinispan-dev mailing list
>>> infinispan-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>
>> --
>> Manik Surtani
>> manik at jboss.org
>> Lead, Infinispan
>> Lead, JBoss Cache
>> http://www.infinispan.org
>> http://www.jbosscache.org
>>
>>
>>
>>
>>
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
> --
> Galder Zamarreño
> Sr. Software Engineer
> Infinispan, JBoss Cache
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org
More information about the infinispan-dev
mailing list