{"action":"created","issue":{"url":"https://api.github.com/repos/coreos/etcd/issues/5493","repository_url":"https://api.github.com/repos/coreos/etcd","labels_url":"https://api.github.com/repos/coreos/etcd/issues/5493/labels{/name}","comments_url":"https://api.github.com/repos/coreos/etcd/issues/5493/comments","events_url":"https://api.github.com/repos/coreos/etcd/issues/5493/events","html_url":"https://github.com/coreos/etcd/pull/5493","id":157529024,"number":5493,"title":"proxy: cache range request in proxy","user":{"login":"mqliang","id":12423751,"avatar_url":"https://avatars.githubusercontent.com/u/12423751?v=3","gravatar_id":"","url":"https://api.github.com/users/mqliang","html_url":"https://github.com/mqliang","followers_url":"https://api.github.com/users/mqliang/followers","following_url":"https://api.github.com/users/mqliang/following{/other_user}","gists_url":"https://api.github.com/users/mqliang/gists{/gist_id}","starred_url":"https://api.github.com/users/mqliang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mqliang/subscriptions","organizations_url":"https://api.github.com/users/mqliang/orgs","repos_url":"https://api.github.com/users/mqliang/repos","events_url":"https://api.github.com/users/mqliang/events{/privacy}","received_events_url":"https://api.github.com/users/mqliang/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":28,"created_at":"2016-05-30T16:12:01Z","updated_at":"2016-06-15T01:00:38Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/coreos/etcd/pulls/5493","html_url":"https://github.com/coreos/etcd/pull/5493","diff_url":"https://github.com/coreos/etcd/pull/5493.diff","patch_url":"https://github.com/coreos/etcd/pull/5493.patch"},"body":"Did not try to full implement this, This pr is just for reviewing and discussion: \r\n1) use groupcache to support cache invalidation\r\n2) this cache could cache response for a single key.\r\n\r\n@xiang90  To cache Range request, it seems that we must write an interval tree with max leaf numbers and lru? Or maybe you have any better ideas? "},"comment":{"url":"https://api.github.com/repos/coreos/etcd/issues/comments/226060734","html_url":"https://github.com/coreos/etcd/pull/5493#issuecomment-226060734","issue_url":"https://api.github.com/repos/coreos/etcd/issues/5493","id":226060734,"user":{"login":"xiang90","id":4479947,"avatar_url":"https://avatars.githubusercontent.com/u/4479947?v=3","gravatar_id":"","url":"https://api.github.com/users/xiang90","html_url":"https://github.com/xiang90","followers_url":"https://api.github.com/users/xiang90/followers","following_url":"https://api.github.com/users/xiang90/following{/other_user}","gists_url":"https://api.github.com/users/xiang90/gists{/gist_id}","starred_url":"https://api.github.com/users/xiang90/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiang90/subscriptions","organizations_url":"https://api.github.com/users/xiang90/orgs","repos_url":"https://api.github.com/users/xiang90/repos","events_url":"https://api.github.com/users/xiang90/events{/privacy}","received_events_url":"https://api.github.com/users/xiang90/received_events","type":"User","site_admin":false},"created_at":"2016-06-15T01:00:38Z","updated_at":"2016-06-15T01:00:38Z","body":"@mqliang Mirror is stateful (it is an etcdserver anyway) and has its cost. Proxy is stateless and easy to swap in and out. I would image to see most people just set up 10s of proxies and will handle their read/watch good enough. For the model you described, it is useful when you have a enough larger deployment or when sharding comes into play. These are all future plan. We now need to get the stateless proxy with caching/watch coalescing done. Then we can iterate on it."}}
{"actor":{"display_login":"xiang90"}}