Server/Komunikace
Z JKwiki
< Server
- Docela zajímavé je porovnat zde uvedené a D-Bus.
Obsah |
[editovat]
Protokol
Něco velmi jednoduchého ve stylu pop3 či smtp:
- Výhody: nenáročnost na parsování, menší velikost obalujících dat
- Nevýhody: ?
[editovat]
Jak by mohla vypadat zpráva
MSG TO: id-cíle ID: jedinecny identifikator zpravy IN REPLY TO: id otazky TYPE: druh zpravy ARGS promenna=hodnota ... DATA: velikost v bytech, mime typ dat ... raw data ... END
- MSG TO
- Uvozuje zprávu a určuje adresáta.
- ID
- Identifikuje tuto zpravu.
- IN REPLY TO
- Identifikuje zpravu, na kterou je tato zprava odpovědí (nepoviné).
- ARGS
- Seznam parametrů. Každý na 1 řádek, na začátku řádku mezera. Ulehčí to předávání krátkých jednoduchých dat. (nepoviné, opakovatelné)
- DATA
- Uvozuje posílání dat v RAW tvaru. Jako parametr je uvedena velikost posílaných dat a jejich typ. (nepoviné, opakovatelné)
- END
- Ukončuje zprávu.
[editovat]
Lokální komunikace
[editovat]
Stručný popis
- Probíhá po UNIX socketu vytvořeném /tmp. Tento soket má každá instance serveru svůj.
- Zprávy a krátká data jsou posílány skrz UNIX soket. Podrobnosti v popisu protokolu.
- Velké objemy dat jsou předávány pomocí sdílené paměti.
[editovat]
Ukázka komunikace
C .. Klient
S .. Server
spojení navázáno C: Hi S: Hi | Hi-Hi Navázání spojení |
C: I'm Kopete 0.9.0, can you handle my data? S: Yes I can. | Can we speak? Dotaz klienta, zda jej server 'umí' |
C: Can you store something for me? S: What is data type? C: Contact. S: Shoot it. C: Here it goes. S: Got it. | Can I store something? Požadavek na uložení dat |
C: Can you give me something? S: What is data type? C: Appointment. S: Specify data idetifier (primary key). C: Key is WYGINWYW. S: OK. There you go. C: Got it. | Can I get something? Požadavek na dodání dat |
C: Can you delete an item? S: What is data type? C: Mail message. S: Specify data idetifier (primary key). C: Key is WYGINWYWFS. S: Two times in head and one in chest. C: Good boy. | Can you trash something? Požadavek na smazání dat |
C: Can you find someone for me? S: In what is data type? C: I used to chat with her. S: What are you looking for. C: Something about her pet dragon. S: Got two conversations on this topic. Which one of them? C: Last one. S: As you wish. C: Thanks a lot. | Can you look for something? Požadavek na vyhledání dat |
C: Can you alter some data? S: In what is data type? C: Contact. S: What you want me to change. C: Her address will change soon. S: Specify data idetifier (primary key). C: Key is SLMAIDRI. S: She's gone now. C: Thanks pal. | Can you change something? Požadavek na změnu dat |
C: Bye S: Bye spojení ukončeno | Bye-Bye Ukončení spojení |
[editovat]
Síťová komunikace
[editovat]
Stručný popis
- Pro klienta je síťová komunikace naprosto transparentní.
- Pokud uživatel má v úmyslu využívat síťové komunikace, tak určí hlavní server a tím u něj zapne naslouchání na TCP soketu. Ostatní servery přepne do přeposílacího režimu.
- Server v přeposílacím režimu předává veškerý provoz na hlavní server, který předá data na správný server nebo lokálnímu klientovi.
- Je možné provádět optimalizace cest provozu, kdy provoz mezi lokálními klienty půjde jen lokálně a velké objemy dat mezi různými přeposílajícími servery půjdou přímo, pokud to bude možné.
