Twemproxy flow
13
Twemproxy Flow [email protected]
-
Upload
dae-myung-kang -
Category
Documents
-
view
4.655 -
download
0
Transcript of Twemproxy flow
![Page 1: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/1.jpg)
Twemproxy Flow [email protected]
![Page 2: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/2.jpg)
Twemproxy • Server Side Proxy For Memcache, Redis
• Made by Twitter.
• Github.com/twitter/twemproxy
![Page 3: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/3.jpg)
Recv Loop(common)
core_loop
core_core
core_recv
msg_recv
![Page 4: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/4.jpg)
Recv Loop(client-server)
![Page 5: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/5.jpg)
Send Loop(common)
core_loop
core_core
core_send
msg_send
![Page 6: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/6.jpg)
Send Loop(client-server)
![Page 7: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/7.jpg)
Message • Using Memory Pool
• Using mbuf
![Page 8: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/8.jpg)
Message-req_get
req_get
msg_get
rsp_get
_msg_get
Processing ……
req_put rsp_put
![Page 9: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/9.jpg)
mbuf • Using chained buffer
• Using sendv, writev
![Page 10: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/10.jpg)
mbuf
struct iovec array[]
Mbuf->pos array[0].iov_base
array[0].iov_len mlen
Mbuf->pos array[n].iov_base
array[n].iov_len mlen
![Page 11: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/11.jpg)
mbuf
![Page 12: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/12.jpg)
Why is Twemproxy Fast? • Using mbuf and avoiding buffer copy.
– Just forward packet.
![Page 13: Twemproxy flow](https://reader034.fdocuments.net/reader034/viewer/2022042614/554f3e16b4c905cd048b5288/html5/thumbnails/13.jpg)
Thank you