Title: memcached protocol filter with consistent hashing [feature request]
Description:
As I mentioned in slack, it would be helpful if envoyproxy has a filter with consistent hashing feature for memcached clusters.
AFAIU there's filter with that feature for Redis, but not for memcached. The required implementation seems not so difficult to me, so i would be happy to make a patch if anyone of maintainers support memcached filters.
Yeah I don't think doing memcached would be that hard, you could likely share most of the redis code in a common base class of some type.
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or other activity occurs. Thank you for your contributions.
This issue has been automatically closed because it has not had activity in the last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted". Thank you for your contributions.
@mattklein123 can we re-open and nostale this? I've started working on this Friday. Initial iteration is just parsing/stats but I'd like to extend it into a possible McRouter alternative
And as you mentioned, a lot of that infra can be shared with Redis.
@derekargueta reopened. Please coordinate with the folks in #envoy-redis since there is a ton of Redis dev going on right now. I would like to try to share as much code as possible since IMO what we wind up with is mostly the same.
After chatting w/ @derekargueta on Slack, we both started in different directions on this, which I think we can eventually start merging things together. I have to support the binary protocol, so I've started writing up a binary codec here.
A quick update, but I have a draft PR with a simple codec. Not entirely satisfied with the codec just yet, but I think I need to do some work on the redis proxy in order to try to reuse the connection pooling logic before I continue.
Ultimately, I'll try to see if I can generalize the connection pool to avoid being aware of the redis protocol. I'll ping back once I have something to review 馃槃
Synced up with @maximebedard this week about picking this back up. I'm working on the pass-through filter (no connection pooling magic, just something that sits in front of the TCP proxy filter to provide stats) supporting both the binary protocol (big thanks to Maxime for a lot of working code for this) and the ASCII protocol. This way the codecs can be reviewed independently from the connection networking. The latter part is where we'll start evaluating how to generalize the Redis infra.
I'll also send and email to the maintainers list to start the process of finding a shepherd for this extension. I'm also drafting up a design document similar to the Thrift/eCache design docs.
TL;DR
phase 1: passthrough stats filter for binary & ASCII protocols
phase 2: start working on connection/cluster features in coordination with Redis people
Most helpful comment
@mattklein123 can we re-open and nostale this? I've started working on this Friday. Initial iteration is just parsing/stats but I'd like to extend it into a possible McRouter alternative
etc.
And as you mentioned, a lot of that infra can be shared with Redis.