Commit c725dfe1 authored by mohammad.salama's avatar mohammad.salama

ReadMe and System Arch

parent 10bb86fe
......@@ -6,7 +6,7 @@ docker pull redis:latest
docker pull mongo:latest
docker pull jaegertracing/all-in-one:1.59
docker pull jaegertracing/all-in-one:latest
docker pull steeltoeoss/eureka-server
......@@ -18,9 +18,9 @@ run instance of redis on port 6379 // name it insert-sort-redis
run instance of redis on port 6400 //name it final-consumer-redis
run instance of Mongo on port 27017 //name it scheduled messages
run instance of Mongo on port 27017 //name it scheduled-messages
run instance of Mongo on port 27020 // name it Accounts
run instance of Mongo on port 27020 // name it accounts
run instance of Jaeger as follows:
......@@ -37,7 +37,7 @@ Then Run Project as follows:
6- GRPCMessagesNode
7- FinalMessageConsumer
and check everyone for exceptoins thrown (Happens only when a funamental service not working like database or redis)
and check everyone for exceptions thrown (Happens only when a fundamental service not working like database or redis)
////////////////////////////////////////////////////
monitor with jaegar : http://localhost:16686/search
......
# Project Title
Distributed Message Real Time Transferring System supporting multi-protocol connections and message priority with scheduing.
## Description
Distributed App build with ASP.NET Framework in microservices architecture aims to recieve messages with some information from
devices using different communication protocols where each one can set message priority and message sending date and provider.
My System assumes there are some gateways whcih are the real network to export the messages (Cellular Network , Internet Network , ...)
each provide a certain sms_rate which represents the number of messages per second it can send out.
Using redis streams , MongoDB and Indexing, GRPC Communication and Tracing with Eureka Discovery and Registry Server.
It is my Graduation Project.
some points are still improvable but it is steady and tested using K6 Tool.
## Images and Designs
check out the System Architecture Folder for more information about Desing
## Getting Started
how to run project
Docker:
docker pull redis:latest
docker pull mongo:latest
docker pull jaegertracing/all-in-one:latest
docker pull steeltoeoss/eureka-server
/////////////////////////////////////////////////////
run instance of eureka on port 8761 // name it service-discovery
run instance of redis on port 6379 // name it insert-sort-redis
run instance of redis on port 6400 //name it final-consumer-redis
run instance of Mongo on port 27017 //name it scheduled-messages
run instance of Mongo on port 27020 // name it accounts
run instance of Jaeger as follows:
docker run -d --name jaeger -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 14250:14250 -p 9411:9411 jaegertracing/all-in-one:1.59
////////////////////////////////////////////////////
Then Run Project as follows:
1- Validator
2- Schdeuler
3- ScheduledMessagesHandler
4- PriorityStreamExtractor
5- HTTPMessagesNode
6- GRPCMessagesNode
7- FinalMessageConsumer
and check everyone for exceptions thrown (Happens only when a fundamental service not working like database or redis)
////////////////////////////////////////////////////
monitor with jaegar : http://localhost:16686/search
Services in Eureka : http://localhost:8761/
/////////////////////////////////////////////////////
Then in the Projects HttpEndUSer and Http2EndUser:
go to bin\Debug\net6.0-windows and run the exe
Enjoy!!
////////////////////////////////////////////////
## Authors
Contributors names and contact info
* Name: Mohammed Salameh
* email : mohammedsalameh37693@gmail.com
* LinkedIn : www.linkedin.com/in/mohammed-salameh-8b4811313
<mxfile host="Electron" modified="2024-08-20T21:36:45.247Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="gX_YunRhqJIByXkd6pB9" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">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</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-20T20:47:55.131Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="vMHyg1AcgzDblVWHx6dq" version="13.9.9" type="device"><diagram id="mYM2sXOG6Rdds38tvbGm" name="Page-1">7VvbbuM2EP0aA+1DDF2six/jJJss2i5SeIEmfTFoiZHZlUSVpmN5v75DiboriRNbttx4gY3F4VVzzgzJITXQr4L4lqFo8Qd1sT/QFDce6NcDTVMVbQQ/QrJJJcZYSwUeI64sVAim5CfOakrpirh4WSnIKfU5iapCh4YhdnhFhhij62qxJ+pXe42QhxuCqYP8pvQv4vJFKrUNpZDfYeItsp5VReYEKCssBcsFcum6JNJvBvoVo5SnT0F8hX2hvEwvab0vL+TmA2M45NtUsH5OR9bt7ff47gFzRL/e/PYnvpCtPCN/JV9YDpZvMg0wugpdLBpRB/pkvSAcTyPkiNw1YA6yBQ98mc0oR5zQEJIXYwUETzTkElVNpGV/mHEcv/giaq4e4BWmAeZsA0WyCqY1HKeVJKmsUS5ZFyAZmjG0U+miDNFYAoIkNby8h0J78CAV+A5lNnWHXSCTTFLGF9SjIfJvCumk0K7QTlHmd0ojqdN/MOcbqUO04rSqcRwT/lB6fhRNDQ2Zuo5ly0liIxPtoIjBvg4JvBtdMQe/ogNd2ihiHuavEc9sx5hhHwj0XB3I3pHS36Y9WkapP3kiscBnEmFGoHfMQAZdgAPC94WoDAnyiScswAHtJXm56Qtlu2i5yAEXSFxRn7KkU32kWdZkAnIfzbE/Qc4PLyFIqchT8q8FxCUYJQm97wlvdBCQIPFt2e81CTxQlk/m8JfMA/iLgGgbTpwlPLv4mTh4louGy2dvP/aqKxVjNUdGw1RNpWmnZldmOjoVMwX9ss1DOfFYThSVktQBjNs4CeM2zsZ9NOO2Rspxjds8PeMeakZP7Nva1r6tHe07qXrJGNqUCkSUhHxZavleCAqqaUqVa+ORXl3wvlHe1pU3ymuvlYeHdMQFOfNX/zhfrbOzSpxVFPnESbYOyyRJZuCzsE/hXWcRmCTyO/NZY1UbHnlJYp+g1+qL0xr322nVyKYq2gG8yvjsVY7uVcZHXgllEbTjk+BdyCFHGOPMJQxGRoUevng4hDE4syVmgJBErIPAkm7WFrN2y7SgDs0miKraGYpbROjOKL6G4tjoAYraGcXdUDS1Fnd6aBT1/izTtA+FjopF2+HXaaq57UJN23GhthvIpx4ePA2MlaNibPQHY+t/DPILLv5AIJtvz7nZ5FdCqW0edGDynSHGxSMNohVMsmI/MU3mwJmq2TH8H0ZhR3NhfmKZBaaU5lxot2wt7M4mwraolelz+foVHZv/rmiWcbFMFHMJBeD940Q7WT48efI3aWi+Uyt3Ivee0XiTtQcvOq/3AbJ0vJm4Rg+AjFfZseSM/sDZdjWkoWDPE/H9mqixIhMEgK2ofykzAuK6iVtpO1CvupouGGWNhkYt2mlaLVGwfDFV5lV2gLd/Xtnd8WqKQxfyrxFHogeCcqKxndq9okEw3FNbQFhOHSr09Ev8654a/fRkt2o7iZbAjGocNDLTFp77pDR/PNO8G5q3hT0OS3PtHIB8b9DD1quuqmWhd+igh3YOQL4TxVEWQuhR6CoD7Yzi1ijWbg9Y5vHDyFpv7i2eDIq6WkWxB0c62ZX4M4oftcWx3gMUe3PN8GRQrNliHw7mtLYg4Z62Ytk25wIKPX767Ul9bWu3bMPHLdsTvTPoOwxilqH/+wx9DXpVMY+NfYeBxjL2D2fsa9hb+rGh3+JuHA7dS/HtYKHlBjDZx4BmDRVxg812sOM0IIScuW2MDKWhdo8hl+DKRTmMzLlpvgjJ2+d4TUDKX8a1KDyTve86ZPO+o11dqjUOodLjRVmrwPLNhtQ8wJW1lJ4/Nlra1x1KvS18tY+zqZsYDDVEYgDfMF9T9iOpsJ/Q6mruEwdKfL0fiLADZCjX36bth2CfxgdVmaQbTRektp2ffmTZCcnik96UisWH0frNfw==</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-20T21:40:06.019Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="5xpV4aIe0Z8_xvqzj0Qw" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">7Vrdc9o4EP9reISxLdvYjymkudwkN0no3NF7ySi2sNUYi8oiwP31t7Jl/BkaSiB0ah6MtFp97P5WuyvZPTSar684XoS3zCdRz9D8dQ+Ne4ahmzaCP0nZZBTHtDNCwKmvmArChP5HFFFT1CX1SVJhFIxFgi6qRI/FMfFEhYY5Z6sq24xF1VkXOCANwsTDUZP6D/VFqKQwhgX9D0KDMJ9Zt92s5Ql7zwFny1jN1zPQLP1lzXOcj6UETULss1WJhC57aMQZE1lpvh6RSOo2V1vW7/Mrrdt1cxKLt3S4fDRv+zR0J+ObOZ1eP98/CNw3nGyYFxwtSS5HulqxyTWUykjkKHoPfVqFVJDJAnuydQU2AbRQzCPVzJnAgrIYqn1XA8KMxUKhbsh6c9lKkhfCBVmXSEqMK8LmRPANsOSt9nCgQFBGNzS3lFUBomVYAyVfWIbQVYhgZTrBdoZCfVBQGtxDm7r1Y23iZJGZ8YyupVI/LQinMD3hQIM5wO7JXUEq6xZHNJCK9UB1advWpKRifZyEKUqykgBANA6+MIBnjIBA5+k+yP/HdB6AiBF9gif2BH0hjz7lsDIm9fA5IDGswXtMCAdcBslLcBwoka1VgXSsBoy2PrBbUNSPhuKwQ/EwFF3rDFB8g2frUNyFop1Hrg9E0XBbULQjoTRQgdP+vmR5Qz9JdXMBDKCVdaqgvB1Kgfy/g1jFPCbXMElVm0BpMMjHf+IHjX67lDkMdC6PTrAXylFJunJJllQMKYShySDLE5FVWCw7spnMhkJZXKjFJvnyQJ2ZBrLpGrYNoIuqySaCs2cyYhGT5h3LKUAcGkU1UsO0pQlRyJguVMOc+r6cpjUXKLKFI0V/w3HzqK4M1XSahopyk6zYqXYsO0Wo8zZ7ehsHVb2NdlJvoztX8c3Lur8B6b+NJlfXoXvTb2JGfDgsqCrjImQBi3F0WVBr9l7w3LAUAYneNyLERqkPLwWrYgsq5Jup6p9WvsrKwMqr43W5cbxRtWytcoGvHggUKWFL7pFd1mtmjALzgKi+8R31gsfvf15PDWs+6/91fy94X9faMeUkwtKSKtO2wZN2veAcb0oMC0ZjkZRGvpOEwlRsVAtMQ6sM9Q/5HVPbyZ+3v8IPhWzFhWFtRT/AY5idx9jPY5i6eXb5CepOfPuiqNVOfPZJzwrtbs36EMe/pmJaKpfcPtQKry8rudM/LFj8VGyw94oNjYh06mDxMc7c7tzAnm4A6VU3cAYXP6i7+DnQmbvoDJy52TnzVy3c+bWceT2T1zV9dyr/a6T+3dXkgdHiHC6Y0QmuJvvA9PW3v/GrXxU5bvPg57Zc96FjQZ87jWND/28HfQ16XbM/Gnv9NNhPO+xr2A/RB0NvHRH6B+IRmUZJ5UnGi6UIQXWARvo1haF9AUjjVHghXyHNSZLIEC3fDFHGqUjTqvTd0SiiJF3N9fid3mW90zAPZBFtthJecs7keOkjJit43rYI9a4C/LZ7aWhrA630q6ZTtmE2dhYyWraW/h57a+eBo8uJ3wqpY9U/nWmCePKzd5uH7FDcheKwFuTsM0DR6FDcD0VXq76aOou92PZJwk9kK41g+jcA6GORxu3tpy1FmO4ibraxjdrN0rD5gaqhtcRYZ3+DgGrxHXF2S1V8rI0u/wc=</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-20T21:45:19.963Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="r1Ylj-ESZTggeJUpSNmJ" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">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</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-20T21:36:45.247Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="gX_YunRhqJIByXkd6pB9" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">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</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-20T21:50:19.313Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="C6eA2YO-4ksD7XcIS1N-" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">7VrbbuM2EP0aP0bQ3dZjfMm2QAKk6wU2fTJoiZbYSKJK0bf9+g4l6kpt7GDtNG2iAJE4pIbUnDPD4SQja5YcvjCURQ80wPHI1IPDyJqPTNM09DHchORYSm6MiVlKQkaCUmY0giX5gaVQl9ItCXDeGcgpjTnJukKfpin2eUeGGKP77rANjbuzZijEimDpo1iVficBj0rpxBw38t8wCaNqZsP1yp418p9DRrepnG9kWpviKrsTVOmSH5pHKKD7lshajKwZo5SXT8lhhmNh3Mps5Xt3P+mt181wys95YbGyH25I5C3n9wl5+v35j68c3VQfs0PxFlffUayWHysL0S2PSYpnNQD6yJpuaMpnNKasGGPBz52YdhoyFBDc9KU0xWI4iePWcLjsqQfynDP6jHuDA5RHOJAT7TDjBOC6R2scP9KccEJT6FtTzmnSGnAbk1B0cJqBFMmWD2vBoHsa8SSGtiHXLoloVt+ylN8r2ijPyg/dkINYxzSjRGhZ7EBZLpUAnJl4ITmEwjM0tM9tDccoF4vxI7zaULZiOCDwwlTFSsInFo8PLZHE7gumCebsCEMqV7N1zbK85pJASb8zbM8tBfuGxYZla44cF3VILGFH0nnCerqGQPAgOfQKPo2NAT65MZdW7hDL/XtLq46bvMDjFgaAnQ6Fyap+eArF/WthTFOfxdu8wPS2Ur1mv6gYiQ/7RhIMtwec5yJmmPqSM4wSkobVPGCS8ivK9xRPASh5l2qD/G47gxQpdO2zOiFBIKaZ7iPC8TJDvphzD9QDWRGFao/p0/sS5NMtzWtfdpd8rmEp5KsjfJt5E/1axLNPBzLVrzEDzAuDz2EO2HLwYyNq46jgU0dzvR+wcsAGOPNNhKG5BQKSFFtQdZ+TBAh1F5M1/EY+Jzu8CgiDlVFhh7sQp7AGf5VjBgBp+S68DqauZWiT0zHENTR3KIJcDUjnE8hXAul4PRhd/V+HceIoqOEAEi/ZpIxHNKQpiheNtBfHmjH3tMBA4PcX5vwoDYi2nHbRxQfCn1rPfwpVmiNb84PUXDSOFcydEA3JiV5cdU+VFZqvQS+nW+bjl2gu0eCIhZi/ZEipUVjvRTYwSD4EB7sZ8sXd0/10z1e658R5l3F2fJlMTcmmHhmhjPBjnUBh1s7aPnoq5Xhenw6Op8ZrYzKQPY2vRoYzjoE4DW7FeVuYFo45OfELUBDjqvinsL0cXsGq7PhUBWnRaAVw0WwieNE6vhamk9G2SiNPRtsWVM4AUpXs7KAsZ3gUJ82GLNbY1cbtvNvpMcfpMaLcd6SWdjGgp9h2Tyi2eopLyymKC7bVZvmFdEG/TDQaOt4tDpxB/G+OdiIcbRhN6giVF+WcHNze1GkqqFPGMPIDFdUGMEMcCkGUfPj4ZesvM8e21WBW18A6W5t+tdxzqAjxWdR6h0Ut4ICrJkeG5qj74ZuXsqo69v99T3w3W52tTdzeLmTamt3TdO4O55qQZzlNtVRR7Siqr73HWZ+Eek+5Uz+bPptZltFWXP2lqNH7xrQaOpF/ltz/63mWN1Z2RldXywZvW2WfnHFOPJnbtLAaTnPUmNXPS2KM0lWCsgyYomXbPFqhMjxeA4mJmqM4xsCJ3RpAon+MuhgS3hUPTN/hpNNySxEAOC00Dh6WHhndkUCUduQw2MTEcwQ+EkYf3pHHrpriWgP08S5T8IFm8z8F5R7T/OeGtfgH</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-20T22:01:12.395Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="A5GxXHecsrh4_yRsPwhJ" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">7Vlbb6M4FP41kWYfgsBcAo9Jms6sNJW605Fm9qlywQGrgLO2c9tfv8dg7rRNt5Oq0oRKJT42x/b3ffY5hom9zA6fOd4kNywi6QSZ0WFiX00QQpY5g5uyHEvL1PJRaYk5jUqb1Rju6L9EG01t3dKIiE5DyVgq6aZrDFmek1B2bJhztu82W7O02+sGx2RguAtxOrT+oJFMSquPZo39C6FxUvVseUFZ84DDx5izba77myB7XVxldYYrX3qiIsER27dM9mpiLzljsvyVHZYkVeBWsJXPXT9RW4+bk1ye8sDq3rmZ0iS4u/qa0Z9/Pv71TeKpZdqlnx1Ot6SaSDFceawgKiZJlBtrYi/2CZXkboNDVbsHVYAtkVmqqzmTWFKWQ3EamGBYs1xq2pEqD8etp7IjXJJDy6Tn8ZmwjEh+hCa61rFtwy8f0rKzAtc33NK0b2h0LMvwvdKctFn0TSPQM8daQHHdTQMi/NA4vgLTwHoZUiw2pZjX9KCQXWwIp9A94WCDPkD95LYxtQHGKY0VuiHgV9TVwlLoRlgkBVWqIIAlmsffGXB0ZYOBZsVqqO5XNIthiil9gP84lHRH7iPKYWRM4XAdkxzGEN4LwoEcQ+zi8/Dp+m5NR0WoP3MGdHqWMUZmtZX8eibRhcnXMemZ/pBJZ2xpvjuXJ2x0Fy47XNrBx1yV7stMsq1MaU6WddJQRaIlSxkv2tjwd626XcQcR5Q0dTnLFR1rmqat5nA5i0DxJzl7JL3GHYYVxhRSjK/4gaS3TFAdEB+YlCxrNZhr1UilhaGGWvrq81uU9XxVeShdRpWX1Q6cCe0ENLlRD2SHWGVzBt4LxyApFmowYULu14zfcxJR8YvitNkL0v5QPZbtGC4a009wLv14I/rxUqlR7QjJ+2fLqoqpKPCfQwPA5VBAVNXDr1jdvxXgIXOZbkXB4bxy/cDf6BiriX2HvQduN0QItVcg805ygjPYTqp+AJJyFuVzg5UB1MmutEb13Ba/Ng3k2VdxRqNIdTOaIjZJ5JmSQtisOpfX0R4yg6H26kNIW3j+2fat4Hy6Wx0kh1DRSEOJcM1hs6kkIoojiwAGkAmbEXjibAdHL/7bC8fy+9sUaGmYsNQHuc4uZZ5LLbXnS8Jy+jHC6icssOzHuHzvlMUyL2fCV58knCGZs49B5uVY+OqjxOCA/2FWpnO+qHxbh1jz0/wPFYoLnMVvH3JdzzFmqJWs9QLw6Dq33JEA7J5PGGPHzDMIY3ERRksYM89wvKeEAcoYFYY9M6rs/p204b8cAUgezdX3CQU2HLEFDQuaMJdD85NETpBtFlddU32kABAXgDM//oTC1DRMy6ssfyt+jLp4ddB8laVju9QKQaUxikn1WoFxmbCY5ThdNdbTSRdsy0PyDIrVexyAJCbylFRYje5ZFbVE8dxmwUmKVSzsjHdMJbqHW/UupREpsj3Dm5nNhXrbl9MTXgmF9tJob+DYDVxw3Hfmd52VcA2cgajwsdWseP8jnp6E03s5g0zHeXZwgwcsz+2tpHIMzbqqmXnDUrNOyJzfYan1Zf/yQnn7wvgocncsw3F7qkSWgVwn8LwZ8txZX6MnC37kw0+Aeqvnowi+Htn/FDwUm6+9ZfPmm7q9+g8=</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-27T16:47:56.313Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="wR20W-JnlmWFRCd5CZSG" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">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</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-27T16:50:00.887Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="q-sWWolRihKb-MlrpB1a" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">7Vxbc5s4FP41ntl9CMNVwGOu3dlpZzJNO80+ZRRbxmwBeQEndn/9HoFkQJJjO7Gp2+DO1NYBhDjfp3OTyMi5TJcfcjyffaITkoxsc7IcOVcj27YCE8EXk6xqyZljO7UkyuMJP6sR3MU/CBeaXLqIJ6TonFhSmpTxvCsc0ywj47Ijw3lOn7unTWnSvescR0QR3I1xokq/xZNyVksD22/kf5E4mok7Wyisjzzi8fcop4uM329kO9PqUx9OseiLP2gxwxP63BI51yPnMqe0rH+ly0uSMOUKtdXX3Ww4uh53TrJylwsuP88X+J7Sr9Po729h8fX+Lv1xxnt5wsmCiMeoBluuhIKqRySsE2vkXDzP4pLczfGYHX0GToBsVqYJP5zTEpcxzaB5FpogmNKs5KDbrK2OWgyB5CVZtkT8KT4QmpIyX8Ep/KjrOEZQX8RJZ4VeYHi16LkB0bUsI+D8nLUxDEwj5CzFnD7R+jaNCuEH1+IeGnXd7SrFxbym8jReMs1ezEkew+1JDjK4B3Cf3DaitoJxEkdMu2PQX3VsTSum3QkuZhVUrFEASnEWfaGA0ZUDgjit5oL4vorTCB4xiR/hfzwu4yfyMIlzGBlleriJSAZjGD8UJAdwjOIpOg6entkF0/VtBUpkGToghRE5PIregOJ+KPqOhKJ3AiiiAcX9ULRM9wQno6+BESUlV0EHT/TfgooDZ0WlnHM4AdSybA7Cr4h9340BoUUC2NnmXaXZQnT8mIuT4BunzM3V/6snfCJFASDCpeb1sswxw2xLh0n9fVMPX4glZgJkZZdwRZnT7+SSJpSRM6MZY9A0ThJJpBCTESCGmOecH0jjyYTdRuvOG4d/aAcuSOWFrkIqOzRVTgVHo1Sw3TLQRZnEGahbBJ5CHULbEPHBvxt224sox5OYNMc04MDp8HEvwk1IdiyGgOwjfiTJLS1iHlY90rKkqQbTks510LfoI0NZtfnzsrZqCmnMerl+gs4KwcEZnrML0mXEMgIDPxeuQRJcsMHAfHqY0vwhJ5O4OFB0gEzDccLmI9kn5CtUshzXEN6na6HCY9Ep3E4nkk3OWb7CwAF1FfG44gHOS1W8cc4Dh8zqsz4ikhZQ4QVZxuU9v479/ocBC4Fx3bpacpyrxko0JpAO8VHSvJzRiGY4uW6ku1uAgi7yMdnBH8NDR6TcYXqywb1IkhbqnsZ+CFkOBGU+tTNcHQv4HW4Z8VteMZRCVM92u33Uj84vaydhUk/rtLfxr1JPtW6Uniparh/89UwVGnmrL63cmOROP1ez3jYvk0VRGZ/ztvN7U8eYPdgXCMLgi/tb5mLLnOAU4qr361KFlbRCOSf2fEt1slafTtbbobqw1c21sNJ7PNUMyi4qITh7SPF8Dkwx5oti9oBri3sMJOzAk2Z4oAY7lqPBwTkaDvbx5vy3HNjeTMqiKt9VPbKpWVR1sgKYb5sAq23e5jGFK1bvfsLaruQInFATyOhiYv9oNHG2T9chW26DGHqWbHV18Wjf+bI3lCD3BdKX0wpHdZ69w+gpqG0P1ruGqznnI60wYPj9S8pyxRWIF2CtO+i+JofYJ0c5XDbh7ZpNII7Q1mxi5zThbbgOVcm9q5Kmd5KG9liFySZM4jlOVUhcJ1bvPXgKNdkOUg22FfQaPu1QUuyjBpTBw9wLK80aLQvOmo0Jr1qrfWHaam5FHHkixRsUIiMwm48tEUfucddSjh8ghYSm1Nexizm6suOBEju+lNFN7aY55OTCJinJ3by2WvGPegsAqCGJmGCWvnuL5dsKWVxLU5+xNfMAvN+RTBbSFQMlSIZVkFNYBbEcDYGQrdn00v/iB9qhzPc7OL6T8WeuEXjNepgvsSL0DNdU1sv29W6hG7bvYsvbAsCpvnCXI/s9pCtoDoz7WRGU+8oIipXP/IZCjhxNuXa/rNLVP4elsV899LLsUA3UfbV40O/aGNqhRvvbrY1ZliaKCTSJe6/LY0i31/NnLY/Rp3hS7UerTwMvxn7PYJZEs2Eqm2rO7Zoa/vS6boaGeu6eOHqBt96AL3AMfHWZvO96LtLVcwckX0ASmYGKpKt7GaN3LHcoxw5YdrB0wtOclUesclb+mblbsVv7kIH5ZPRy8RQz5843l2ePhby7/A03f+ZhRzkjqYgl4HcrwijefTDhesiQX1rxPZXujq4mGx6L7P5Qkv1FSrLyBq5Qu8+v72KsryvGDkWMX91YgWfufFCHe7ape6Gm13qGeE3sZJYiRSL9zomz3gOxNlPAJTU673nh0R+2mu6dMltycA6zXgdl3+G5v0Mlc8CymzS7Kpb+SWA5vPa+d9KslLJOZV7qypIH8sitOvUf53+OlJed36279ZBr+PbGt1VD7Sy3Xlq7PTwvDrRpdRsvLgZetHjhI8NFm3gBxNDywvENEdj3Q40T28J6ZhqmhUadzRXr5obNFVWr5X96f8lZVHC27pP1T2ufrO0gA/mbt3mErkS7Xbd5eKFnIF/uLOh2tmFvB3AKr1qnVYWfYvNDuFJVxjb532PaNDjlAosvBzfzqB7DQbea+LqSdv8TTSb99mny9mlxKmx3LcOV3tQNbcuwPTdEyLeR58sU3Znv1epmM48c+S7SPDoV6q9H9krqQ7P5a3b16c3fDHSu/wc=</diagram></mxfile>
\ No newline at end of file
<mxfile host="Electron" modified="2024-08-27T16:49:51.125Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.9.9 Chrome/85.0.4183.121 Electron/10.1.5 Safari/537.36" etag="TN2Nmsu1lFBzGwYzI_i7" version="13.9.9" type="device"><diagram name="Page-1" id="b5b7bab2-c9e2-2cf4-8b2a-24fd1a2a6d21">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</diagram></mxfile>
\ No newline at end of file
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
Create a redis.conf file inside each of the directories
-----------------------------------------------------------------------------------------
conf file:
port 7000 // change to port
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
-----------------------------------------------------------------------------------------
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \
--cluster-replicas 1
create 6 nodes with replication of 1 for each node (master node)
cluster-enabled : yes
cluster-config-file : "filename"
cluster-node-timeout : "in milliseconds"
cluster-slave-validity-factor : (value) when master fails the replica waits for value*timeout to take over
cluster-require-full-coverage :
cluster-allow-reads-when-down : //set to yes
/*examples:*/
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
best prcatice to make it 3 by 3 nodes [3 masters + 3 slaves]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment