áá¬áá¬á¡áá áºááẠááŒáá·áºáá¬ážáá±á¬á áœááºážáá±á¬ááºáááºá áá¯á¶ááŒááºá áááºáá»áááŸá¯ááŸáá·áº á¡ááá¯ááºážá¡áá¬ááá¯áááŸáááẠáááºááœááºáááºá Dendrite ááẠSynapse ááᯠá áœááºážáá±á¬ááºááá¯ááºáááºá áááºáááºááẠáááááá¬áᬠáááºážáá«ážáá±á¬ ááŸááºáá¬áẠááá¯á¡ááºááŒá®áž node á¡áá»á¬ážá¡ááŒá¬ážááŸá load balancing ááŸáááá·áº á¡ááá¯ááºážá¡áá¬á¡áá áá¯ááºáá±á¬ááºááá¯ááºáááºá Dendrite áááá¯áá¬ááẠá¡áá»á¬ážááá¯áẠá¡ááá¯ááºážá¡áá¬ááᯠáá¶á·ááá¯ážáá±ážáᬠmicroservices á á¶ááá°áá¬áá áºáá¯á á®ááœáẠáá±áá¬áá±á·á áºááœáẠáááºážáááá¯ááºááá¯ááºááá¬ážáá»á¬áž áá«ááŸáááá·áº ááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá¯á¶á á¶ááŒáá·áº ááá¯ááºááœááºáá°áá»á¬ážááᯠááœá²áá¯ááºááŒááºážá¡áá±á«áº á¡ááŒá±áá¶áá¬ážáááºá load balancer ááẠmicroservices áá»á¬ážááá¯á· áá¯ááºážáá±á«áºááá¯ááŸá¯áá»á¬ážááᯠáá±ážááá¯á·áááºá áá¯ááºá¡ááœááºážááŸá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºáááºá áááºážááá¯á·ááᯠáá®ážááŒá¬ážáá¯ááºáááºážá ááºáá»á¬ážá¡ááŒá Ạááœá²áááœá²áá² CPU cores áá»á¬ážá¡á¬ážáá¯á¶ážá á¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážááá·áº threads (go routines) ááᯠá¡áá¯á¶ážááŒá¯áá¬ážáááºá
Dendrite ááẠmonolithic ááŸáá·áº polylith áá¯á¶á
á¶ááŸá
áºáá»áá¯ážááᯠáá¶á·ááá¯ážáá±ážáááºá monolithic áá¯ááºááœááºá microservices á¡á¬ážáá¯á¶ážááᯠexecutable file áá
áºáá¯ááœáẠáá¯ááºááá¯ážáá¬ážááŒá®ážá áá¯ááºáááºážá
ááºáá
áºáá¯áááºážááœáẠáá¯ááºáá±á¬ááºááŒá®áž áá
áºáá¯ááŸáá·áºáá
áºáᯠááá¯ááºááá¯áẠá¡ááŒááºá¡ááŸáẠáá¯á¶á·ááŒááºáá«áááºá á¡á
áááºá¡ááá¯ááºážáá»á¬ážá
áœá¬ (á¡á
á¯á¡áá±áž) áá¯ááºááœááºá ááá°áá®áá±á¬ node áá»á¬ážáá
áºáá»áŸá±á¬áẠááŒáá·áºáá±ááŒááºážá¡áá«á¡ááẠááá¯ááºáááá¯áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá®ážááŒá¬ážá
á®ááœáá·áºááá¯ááºáááºá á¡á
áááºá¡ááá¯ááºážáá»á¬ážá á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯
Multi-component áá¯ááºááᯠinternal HTTP API ááŸáá·áº platform ááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá±á¬ááºáááºá
ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááẠMatrix áááá¯ááá¯áá±á¬ áááºááŸááºáá»ááºáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á áá¯ááºáá±á¬ááºááŒá®áž á
ááºážáááºááŸá¯á¡á
á¯á¶á¡ááẠááŸá
áºáá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒááºáž - Synapse á¡ááœáẠá¡áá¯á¶ážáá»á¬ážáá±á¬ á
ááºážáááºááŸá¯áá»á¬áž
áá®áᬠá ááºážáááºááŒááºáž á¡ááá·áºááẠDendrite ááẠáááŠáž á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á¡ááœáẠá¡áááºááá·áºááŒá áºáá±ááŒá®ááŒá áºááŒá®áž áá¯ááºáá±ááŸá¯á¡áá áºáá»á¬ážááᯠá¡áá«á¡á¬ážáá»á±á¬áºá áœá¬ ááœá²á·á ááºážáᬠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááá¯á· áá°ážááŒá±á¬ááºážááœá¬ážááŒá±á¬ááºáž ááœáŸááºááŒáááºá áá¯ááºáá±ááŸá¯áá»á¬ážááŒá¬ážááœááºá áá±áá¬áá±á·á áºááŸá áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯á¡á á®á¡á ááºááᯠááᯠá¡ááºááááºáá¯ááºááẠ(ááá¯ááŸá±á¬ááºááŸá¯á០á¡áá»ááºáá»á¬ážááᯠáááºáááºááŒááºážááŸáá·áº ááá°áá²á á¡ááºááááºááŒá®ážáá±á¬áẠáá±áá¬áá±á·á áºá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáá¯á¶ážááŸá¯á¶ážáááºááá¯ááº)á áá±á¬ááºááŒááºááá¯ááºáááºáá®ááŸá¯ááᯠáá»áá¯ážáá»ááºááá¯ááºáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá áá±áá¬áá±á·á áºááœá²á·á ááºážáá¯á¶ááᯠááŒá±á¬ááºážáá²ááẠááá¯á·ááá¯áẠááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž ááá¯á¡ááºááá·áº á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠá¡ááŒá®ážá á¬ážáá¯ááºáá±ááŸá¯áá»á¬ážááœááºáᬠáá±ážáá±á¬ááºáááºááŒá áºáááºá áá±ážáááºáá±á¬ homeservers ááŸáá·áº P2P nodes ááá¯áááºáá®ážááẠPostgreSQL DBMS ááŸáá·áºááœá²áááºáá±á¬ monolithic áá¯ááºááœáẠDendrite ááᯠáááºááŸáá¡áá¯á¶ážááŒá¯ááẠá¡ááŒá¶ááŒá¯áá¬ážáááºá áá áºááŒáá¯ááºáááºáááºáž áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠááá¯ááºááœááºááŒá±ááŸááºážááŒááºáž áááŒá¯ááá±ážáá±á¬ ááŒá¿áá¬áá»á¬ážááŒá±á¬áá·áº SQLite á¡áá¯á¶ážááŒá¯ááŒááºážááᯠá¡ááŒá¶ááŒá¯ááá¯ááºááŒááºáž áááŸááá±ážáá«á
Dendrite ááœáẠá¡áá±á¬ááºá¡áááºááá±á¬áºááá±ážáá±á¬ á¡ááºá¹áá«áááºáá»á¬ážááœáẠáááºáá±á·áá»áºáááºáá¶á¡áááºááŒá¯áá»ááºáá»á¬ážá áááºááŸááºáá»á¬ážá ááœááºážá¡á¬ážáá±ážááŸá¯áá»á¬ážá OpenIDá á¡á®ážáá±ážááºáá»áááºáááºááŸá¯á áá¬áá¬áááºááŸá¬ááœá±ááŸá¯á á¡áá¯á¶ážááŒá¯áá°áááºážááœáŸááºá á¡áá¯á¶ážááŒá¯áá°á á¬áááºážáá»á¬ážááᯠáá»á áºáá»á°ááŸá¯ááŒááºážá á¡á¯ááºá á¯áá»á¬ážááŸáá·áº á¡ááá¯ááºážá¡ááá¯ááºážáá»á¬ážáááºáá®ážááŒááºážá áá¯á¶ážá áœá²áá°á¡áœááºááá¯ááºážáá±á¬ááºááŸáááŸá¯ááᯠá¡áá²ááŒááºááŒááºážá á§áá·áºáááºááá·áºááœááºážááŸá¯áá»á¬ážá Third-party ááœááºáááºáá»á¬ážááŸáá·áº á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯á
á¡áá¯á¶ážááŒá¯áááºá¡ááœáẠáááŸáááá¯ááºáá±á¬ á¡ááŒá±áá¶áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸá¬ áá»ááºáááºážáá»á¬áž (áááºáá®ážááŸá¯á ááááºáá±á«áºááŸá¯áá»á¬ážá á¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážááá¯ááºáᬠá ááºážáá»ááºážáá»á¬áž)á á¡áááºážáá»á¬ážááœáẠáá«áááºáá°áá»á¬ážá¡áááºážáá»á¯ááºáááºážáááºážáá»á¬ážá á¡á±á¬á·ááºááá¯ááºážá០ááŒááºáá¬ááŒá®ážáá±á¬áẠááŒá áºáááºáá»á¬ážááᯠáááºáá°ááŒá¯ááŒááºážá á¡áá±á¬áá·áºáá»á¬ážá áááá¯ááá¯ááºáá»á¬ážá áá¯ááºážáá±á«áºááá¯ááẠá¡áá»ááºááŒááŒááºážá ááá¯ááºáá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºááŒááºážááŸáá·áº á¡ááºáá¯ááºáá¯ááºááŒááºáž (Media API)á áááºáá±á·áá»áºáá»á¬ážá ACL áá»á¬ážááá¯áááºážááŒááºááŒááºážá áááºáá»áááºááœá²ááŒááºážááŸáá·áº á¡áá¯á¶ážááŸá¡áá¯á¶áž áá¯ááºááŸááºááŒááºážá¡ááœáẠá ááºáá»á¬ážááŸáá·áº áá±á¬á·áá»á¬ážá á¬áááºážáá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºááŒááºážá
áááá¯áá»á¯ááºááá¯ááºááŸá¯áá»áŸá±á¬á·áá»áá¬ážáá±á¬ áááºááœááºáá±áž Matrix ááᯠá
á¯á
ááºážáááºá¡ááœáẠááááºáá±á¬ááºážááẠWebSockets ááá¯á·ááá¯áẠáááá¯ááá¯áá±á¬ááᯠá¡ááŒá±áá¶á á¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº áááºáá°ááá¯á·áá±á¬ááºáá±ážá¡ááŒá
ẠHTTPS+JSON ááᯠá¡áá¯á¶ážááŒá¯áá¬ážááŒá±á¬ááºáž ááááááŒáá«á
áá¯á·á
ááœááºáááºáá
áºáá¯áá¯á¶ážááœáẠáá»áá¯á·ááœááºážáá»áẠááá¯á·ááá¯áẠáááºáá±á·áá»áºááááºážáá»á¯ááºááŸá¯ áá
áºáá¯áááºážáá±á¬á¡áá»ááºáááŸááá«á ááœá±ážááœá±ážááŸá¯á០á¡áá»á¯á¶ážáááºáá±á¬ áá¬áá¬áá»á¬ážá¡á¬ážáá¯á¶ážááẠáá
áºáá¯ááŸáá·áºáá
áºáᯠáá°áá®áá«áááºá
á¡áá¯á¶ážááŒá¯áá°ááá¯ááºážááẠáááºážááá¯á·áááá¯ááºááá¯ááºáá¬áá¬ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž áááºážááᯠáá¯á¶ááœááºáááºáá
áºáá¯ááá¯á· áá»áááºáááºááá¯ááºáááºá áááºáá®ážááá¯á· ááŒá
áºááá¯ááºáááºá
áááºáá®ááœááºáááá·áºáá»á¬áž á
á®á
ááºááŒááºážá á¡áá¶ááŸáá·áº áá®áá®ááá¯áá±á«áºááá¯ááŸá¯áá»á¬áž ááŒá¯áá¯ááºááŒááºážá á
á¬ááá¯ááºááŒááºážááá¯ááºáᬠá¡áááá±ážáá»ááºá áá¯á¶ážá
áœá²áá°á¡áœááºááá¯ááºážáá±á¬ááºááŸááá±ááŸá¯ááᯠá¡áá²ááŒááºááŒááºážá á¡áááºááŒá¯áá»ááºááᯠáááºááŸá¯ááŒááºážá ááœááºážá¡á¬ážáá±ážááŒááºážááá¯ááºáᬠá¡áááá±ážáá»ááºáá»á¬ážá áá¬áá¬áááºááŸá¬ááœá±ááŸá¯á ááŸááºáááºážááŸáá·áº áá¯á¶ážá
áœá²áá°á¡ááŒá±á¡áá±ááá¯á·ááᯠáááºáá°ááŒá¯ááŒááºážá
ááá·áº á¡ááá·áºááŒáá·áºá¡ááºá¹áá«áááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
source: opennet.ru