Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EvCache + Eureka #3

Closed
pparth opened this issue Jul 10, 2013 · 4 comments
Closed

EvCache + Eureka #3

pparth opened this issue Jul 10, 2013 · 4 comments
Assignees

Comments

@pparth
Copy link

pparth commented Jul 10, 2013

Hello,
We already integrate many Netflix components to our architecture and Eureka is, of course, one of them. So, i'm particularly interested in the EvCache setup using Eureka. Some questions:

  1. In the relevant setup example, you keep mentioning about a single instance of an EvCache Client per Zone. What exactly do you mean by this? That it is mandatory for the Client to be inside a Service app that acts as a proxy for all cache calls of our architecture and only one instance of this Service app is allowed per zone? Because, i was thinking of setting up a Hystrix wrapper over an EvCache Client instance and use it from every service that needs to get data from the cache. So, in my setup, if we have 4 Domain Service types and 3 instances of each of this service type spanned across multiple zones, can i use an EvCache Client embedded inside each one of these, in order to get data from the cache?
  2. Are you planning to release the EvCache Server any time soon?
  3. Due to the fact that EvCache Server is not yet released, we opted to go with ElastiCache. How do you imagine that a Eureka-based EvCache client setup can work with ElastiCache? I guess that the problem is, how do we report to Eureka about the ups and downs of the ElastiCache instances? Or maybe the Eureka-based setup does not really work with ElastiCache and we need to wait for EvCache Server to get released? Or maybe we can use this sidecar Java app you mention? Can it work for ElastiCache instances somehow or is strictly specific to EvCache Server?
@pparth
Copy link
Author

pparth commented Jul 10, 2013

I tried to build the project but with no success. I get test errors:

Test Summary
3
tests
3
failures
0.012s
duration
0%
successful
• Failed tests
• Packages
• Classes
Failed tests
• EurekaEVCacheTest. runTest
• SimpleEVCacheTest. runTest
• ZoneBasedEVCacheTest. runTest
Packages
Package
Tests
Failures
Duration
Success rate
com.netflix.evcache.test
3
3
0.012s
0%
Classes
Class
Tests
Failures
Duration
Success rate
com.netflix.evcache.test.EurekaEVCacheTest
1
1
0.008s
0%
com.netflix.evcache.test.SimpleEVCacheTest
1
1
0.002s
0%
com.netflix.evcache.test.ZoneBasedEVCacheTest
1
1
0.002s
0%
Generated by Gradle 1.6 at Jul 10, 2013 10:40:26 AM

I think you might be running into timeout. The default timeout is 100msec. If you are running this on your desktop instance trying to access and ElastiCache instance in AWS you might need a longer timeout.
Can you run the SimpleEVCacheTest by setting the follown System property?
EVCACHE.EVCacheClientPool.readTimeout=20000
Also make sure the System property EVCACHE.EVCacheClientPool.hosts has the ElastiCache hosts and the Domain Services can talk to ElastiCache instances on the specified port (default is 11211)

@pparth
Copy link
Author

pparth commented Jul 16, 2013

Anyone responding? Is this project dead?

@codefromthecrypt
Copy link

no I suspect the delay is related to folks on holiday.. not dead, just fishing :)

@smadappa
Copy link
Contributor

  1. In the relevant setup example, you keep mentioning about a single instance of an EvCache Client per Zone. What exactly do you mean by this?
    Ans: You can have more than one instance of EVCache per zone, but for If replication of the data is needed then you need at least one evcache instance per zone. A zone is a logical grouping of EVCache servers. For setup in AWS you can map this to an AWS Availability zone.

That it is mandatory for the Client to be inside a Service app that acts as a proxy for all cache calls of our architecture and only one instance of this Service app is allowed per zone?
Ans: I am not sure i quiet understand the above statement. Can you give more details on it?

Because, i was thinking of setting up a Hystrix wrapper over an EvCache Client instance and use it from every service that needs to get data from the cache. So, in my setup, if we have 4 Domain Service types and 3 instances of each of this service type spanned across multiple zones, can i use an EvCache Client embedded inside each one of these, in order to get data from the cache?
Ans: Yes you can embed the client in each of these. I don't recommend using Hystrix wrapper as EVCache calls tend to be very fast. EVCache calls either succeed or fail fast(low milli seconds typical response times).

  1. Are you planning to release the EvCache Server any time soon?
    Ans: Yes, We are wroking on it
  2. Due to the fact that EvCache Server is not yet released, we opted to go with ElastiCache. How do you imagine that a Eureka-based EvCache client setup can work with ElastiCache?
    ANS: https://github.com/Netflix/EVCache/blob/master/evcache-client/src/test/java/com/netflix/evcache/test/SimpleEVCacheTest.java
    Make sure the System property EVCACHE.EVCacheClientPool.hosts has the ElastiCache hosts and the Domain Services can talk to ElastiCache instances on the specified port (default is 11211)

I guess that the problem is, how do we report to Eureka about the ups and downs of the ElastiCache instances?Or maybe the Eureka-based setup does not really work with ElastiCache and we need to wait for EvCache Server to get released?
ANS: You cannot report the status of ElastiCache to Eureka. It has to be an EVCache Server instance

Or maybe we can use this sidecar Java app you mention? Can it work for ElastiCache instances somehow or is strictly specific to EvCache Server?
Ans: I don't think the side car app works with ElastCache. The side car is what makes EVCache Server work.

@ghost ghost assigned smadappa Jul 16, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants