Enabling Redis protocol with Ignite

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Enabling Redis protocol with Ignite

Roman Shtykh
Igniters,
I was thinking on enabling Redis protocol with Ignite [1] so that any Redis client can use Ignite transparently.
Currently I have two ideas.
1. Implement it as a core functionality by adding GridRedisProtocol and appropriate commands/handlers, similarly to how it is done with REST and memcached, and use TCP binary protocol of the current implementation. For this I will probably have to do some refactoring in ignite/internal/processors/rest by creating ignite/internal/processors/ext to have other external protocols, like
ignite/internal/processors/ext `-- rest `-- memcached `-- redis
2. Implement it as an external module that is started on a local machine in a client mode by a user, interpreting Redis commands and sending to the Ignite cluster.
To be consistent with REST and memcached implementations, I prefer the 1st approach. Any objections or advice?
Another question -- at first glance memcached protocol is implemented as a part of REST implementation. For instance, GridTcpRestParser is essentially a memcached parser. Should it be refactored?
[1] https://issues.apache.org/jira/browse/IGNITE-2788
Reply | Threaded
Open this post in threaded view
|

Re: Enabling Redis protocol with Ignite

yzhdanov
Roman,

I like the idea! How complex is the protocol implementation? How long will
it take to implement?

As far as I remember TcpRestParser switches the correct mode on as soon as
it receives the first message over the connection.  You can try adding
Redis mode to it. Is that what you ask for?




--Yakov

2016-03-23 11:53 GMT+03:00 Roman Shtykh <[hidden email]>:

> Igniters,
> I was thinking on enabling Redis protocol with Ignite [1] so that any
> Redis client can use Ignite transparently.
> Currently I have two ideas.
> 1. Implement it as a core functionality by adding GridRedisProtocol and
> appropriate commands/handlers, similarly to how it is done with REST and
> memcached, and use TCP binary protocol of the current implementation. For
> this I will probably have to do some refactoring in
> ignite/internal/processors/rest by creating ignite/internal/processors/ext
> to have other external protocols, like
> ignite/internal/processors/ext `-- rest `-- memcached `-- redis
> 2. Implement it as an external module that is started on a local machine
> in a client mode by a user, interpreting Redis commands and sending to the
> Ignite cluster.
> To be consistent with REST and memcached implementations, I prefer the 1st
> approach. Any objections or advice?
> Another question -- at first glance memcached protocol is implemented as a
> part of REST implementation. For instance, GridTcpRestParser is essentially
> a memcached parser. Should it be refactored?
> [1] https://issues.apache.org/jira/browse/IGNITE-2788
>
Reply | Threaded
Open this post in threaded view
|

Re: Enabling Redis protocol with Ignite

Roman Shtykh
Yakov,
Thanks for the pointers, that's exactly what I needed.
RESP (REdis Serialization Protocol) is not that complex, but depending on my other tasks it may take a month or two. I plan to implement the integration iteratively starting with the most used generic commands.If you need it earlier, someone else can pick the ticket, or we can create a branch to collaborate.
-Roman
 

    On Thursday, March 24, 2016 12:44 AM, Yakov Zhdanov <[hidden email]> wrote:
 

 Roman,

I like the idea! How complex is the protocol implementation? How long will
it take to implement?

As far as I remember TcpRestParser switches the correct mode on as soon as
it receives the first message over the connection.  You can try adding
Redis mode to it. Is that what you ask for?




--Yakov

2016-03-23 11:53 GMT+03:00 Roman Shtykh <[hidden email]>:

> Igniters,
> I was thinking on enabling Redis protocol with Ignite [1] so that any
> Redis client can use Ignite transparently.
> Currently I have two ideas.
> 1. Implement it as a core functionality by adding GridRedisProtocol and
> appropriate commands/handlers, similarly to how it is done with REST and
> memcached, and use TCP binary protocol of the current implementation. For
> this I will probably have to do some refactoring in
> ignite/internal/processors/rest by creating ignite/internal/processors/ext
> to have other external protocols, like
> ignite/internal/processors/ext `-- rest `-- memcached `-- redis
> 2. Implement it as an external module that is started on a local machine
> in a client mode by a user, interpreting Redis commands and sending to the
> Ignite cluster.
> To be consistent with REST and memcached implementations, I prefer the 1st
> approach. Any objections or advice?
> Another question -- at first glance memcached protocol is implemented as a
> part of REST implementation. For instance, GridTcpRestParser is essentially
> a memcached parser. Should it be refactored?
> [1] https://issues.apache.org/jira/browse/IGNITE-2788
>


Reply | Threaded
Open this post in threaded view
|

Re: Enabling Redis protocol with Ignite

dsetrakyan
Roman, if you can implement it within a couple of months, it will be great.
I also think this feature is big enough to warrant a new branch. This way
we can all do periodic reviews and provide comments.

D.

On Wed, Mar 23, 2016 at 6:13 PM, Roman Shtykh <[hidden email]>
wrote:

> Yakov,
> Thanks for the pointers, that's exactly what I needed.
> RESP (REdis Serialization Protocol) is not that complex, but depending on
> my other tasks it may take a month or two. I plan to implement the
> integration iteratively starting with the most used generic commands.If you
> need it earlier, someone else can pick the ticket, or we can create a
> branch to collaborate.
> -Roman
>
>
>     On Thursday, March 24, 2016 12:44 AM, Yakov Zhdanov <
> [hidden email]> wrote:
>
>
>  Roman,
>
> I like the idea! How complex is the protocol implementation? How long will
> it take to implement?
>
> As far as I remember TcpRestParser switches the correct mode on as soon as
> it receives the first message over the connection.  You can try adding
> Redis mode to it. Is that what you ask for?
>
>
>
>
> --Yakov
>
> 2016-03-23 11:53 GMT+03:00 Roman Shtykh <[hidden email]>:
>
> > Igniters,
> > I was thinking on enabling Redis protocol with Ignite [1] so that any
> > Redis client can use Ignite transparently.
> > Currently I have two ideas.
> > 1. Implement it as a core functionality by adding GridRedisProtocol and
> > appropriate commands/handlers, similarly to how it is done with REST and
> > memcached, and use TCP binary protocol of the current implementation. For
> > this I will probably have to do some refactoring in
> > ignite/internal/processors/rest by creating
> ignite/internal/processors/ext
> > to have other external protocols, like
> > ignite/internal/processors/ext `-- rest `-- memcached `-- redis
> > 2. Implement it as an external module that is started on a local machine
> > in a client mode by a user, interpreting Redis commands and sending to
> the
> > Ignite cluster.
> > To be consistent with REST and memcached implementations, I prefer the
> 1st
> > approach. Any objections or advice?
> > Another question -- at first glance memcached protocol is implemented as
> a
> > part of REST implementation. For instance, GridTcpRestParser is
> essentially
> > a memcached parser. Should it be refactored?
> > [1] https://issues.apache.org/jira/browse/IGNITE-2788
> >
>
>
>
>