Skip to content
Permalink
Branch: master
Commits on Jan 13, 2020
  1. proxygen: bump up stderr logging for mcrouter ProxyDestinationBase code

    shodoco authored and facebook-github-bot committed Jan 13, 2020
    Reviewed By: stuclar
    
    Differential Revision: D19377854
    
    fbshipit-source-id: 28a4db9c92bd105d470b7e070f4f6258843e7067
Commits on Feb 17, 2018
  1. mcrouter: provide option to enable event base time measurement

    shodoco authored and facebook-github-bot committed Feb 17, 2018
    Summary: This is sometimes useful to debug latency issues in bigcache.
    
    Reviewed By: andreazevedo
    
    Differential Revision: D7004793
    
    fbshipit-source-id: 6f35995223ff1ac8f91581fa32efad785779907d
Commits on Oct 11, 2017
  1. mcrouter: supply stable tags for Rendezvous hashing

    shodoco authored and facebook-github-bot committed Oct 11, 2017
    Summary: Titled. Rendezvous hashing needs a list of stable tags matching route handles. This can be supplied in the config of pool route.
    
    Reviewed By: spalamarchuk
    
    Differential Revision: D5910343
    
    fbshipit-source-id: bef4adc13efb58aa352717bd5e8832b18e9b414b
Commits on Sep 26, 2017
  1. mcrouter: add test cases for Rendezvous hash

    shodoco authored and facebook-github-bot committed Sep 26, 2017
    Summary: Test cases for Rendezvous hash. A few sanity checks plus a test case for rehash.
    
    Reviewed By: brianwatling
    
    Differential Revision: D5878906
    
    fbshipit-source-id: a66ba5c728950c86c49a7e9fef585eb41711d78f
  2. mcrouter: add Rendezvous hash as a hash route

    shodoco authored and facebook-github-bot committed Sep 26, 2017
    Summary:
    Titled.
    
    The Rendezvous hash used is a modified version. The major difference is we don't hash on mixed keys (endpoint name + key) directly. Instead, we mix the endpoint hash and the key hash. The motivation is efficiency since we don't want to apply the hash function for each and every endpoint (we have ~500 of them in a large cluster). With a reasonably good mixer, we can achieve pretty good load balancing.
    
    I also tried two other implementations, consistent hashing ring and maglev hashing. Consistent hashing ring has comparable disruption when a backend server joins/leaves, but requires a much larger lookup table. On the other hand, maglev hashing priortizes load balancing over minimal disruption. Thus the disruption is much worse compared to Rendezvous hashing.
    
    Thanksfully with a good mixer, we don't have to worry about clock cycles spent in Rendezvous hashing. It was a major concern with a relatively large pool size (several hundred of servers).
    
    andreazevedo jmswen spalamarchuk Let me know if I need to do anything special since this is the open source code.
    
    Reviewed By: brianwatling
    
    Differential Revision: D5878868
    
    fbshipit-source-id: d74f9608a8e577d5ae4dde4865d7cdaf781b0c44
Commits on Mar 7, 2017
  1. proxygen: use customized bigcache request/reply

    shodoco authored and facebook-github-bot committed Mar 7, 2017
    Summary:
    Titled.
    
    1). Take different code paths depending on whether we are using the new RPC. There should better ways or patterns to handle this, let me know.
    
    2). Allocate the request on the heap since we don't have the convenient wrapper `MemcacheClientIOBuf`. We also use `folly::MoveWrapper` to ensure the request lives long enough.
    
    3). The lambda callbacks are not executed in mcrouter proxy threads. We need to explicitly enqueue the callback into the event base of proxygen worker thread for GET callbacks.
    
    jmswen spalamarchuk I am not sure whether I should use pooled connection or internal connection. What's the difference and their use cases? Right now each proxygen thread holds its own cache client.
    
    Reviewed By: jmswen
    
    Differential Revision: D4632684
    
    fbshipit-source-id: 015c292506a49c040b406ebc5573bff4349d8475
You can’t perform that action at this time.