Cosa sono il framework RPC e Apache Thrift?


100

Devo imparare Apache Thrift per un progetto universitario. Come dice questo tutorial , è un framework RPC ed è stato l'unico documento che sono riuscito a trovare per Thrift oltre alla loro documentazione .

Qualcuno può dirmi cos'è un framework RPC e come si collega ad Apache Thrift?

Risposte:


158

Un framework RPC in generale è un insieme di strumenti che consentono al programmatore di chiamare un pezzo di codice in un processo remoto, sia esso su una macchina diversa o semplicemente un altro processo sulla stessa macchina.

Nel caso particolare di Apache Thrift , parliamo di un framework progettato per essere efficiente e disponibile sia su piattaforme OS che su linguaggi di programmazione. Inoltre, hai una certa flessibilità per quanto riguarda i trasporti (come socket, pipe, ecc.) E i protocolli (binari, JSON, anche compressi), oltre ad alcune altre opzioni come il supporto SSL o SASL.

Ad esempio , puoi configurare un server su una macchina Linux, scritto in C ++ che offre alcuni servizi al mondo attraverso un protocollo basato su JSON su HTTP. Questo servizio può essere chiamato da un programma client scritto in Python, in esecuzione su una macchina Windows. Il codice sia per il server che per il client viene generato da un file IDL Thrift. Per farlo funzionare, devi fondamentalmente aggiungere solo la logica del programma previsto e mettere insieme tutti i pezzi.

Il miglior riferimento per Apache Thrift è ancora l' Apache Thrift Whitepaper . Sebbene leggermente obsoleti in alcuni dettagli, i concetti sottostanti sono ancora validi. Un'altra buona lettura è "Missing Guide" di Diwaker Gupta , e non ultimo il libro di prossima uscita di Randy Abernethy .

Per i principianti, consiglierei di iniziare con la suite di tutorial Apache Thrift , questi esempi mostrano molte delle funzionalità principali. Se ti imbatti in domande, puoi chiedere qui su SO, o sulle mailing list Thrift.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.