come implementare il sistema cross-platform / cross-technology nella pratica comune

-1

Leggendo e osservando alcune delle startup e dei servizi noti, quasi ogni volta ho scoperto che le persone utilizzano sistemi cross-technology nella loro architettura. Ad esempio, come Twitter, usato ruby su rotaie sulle loro parti front-end e scala per le loro parti di back-end. Oppure le altre storie come il modo in cui alcune startup usano java e golang o java ed erlang per il loro stack.

Beh, sono curioso di sapere come è la pratica comune implementare tale integrazione cross-technology? Per caso di Twitter, costruiscono il back-end di Scala e quindi collegano alcune tecnologie di servizi Web per creare endpoint di API per la parte di binari da consumare? O ci sono alcune API per la funzionalità incrociata tra scala e rubino? O c'è qualche pratica più comune per fare una cosa del genere?

Come novellino, spero di avere una prospettiva su questo argomento.

    
posta caesardo 24.02.2016 - 02:08
fonte

1 risposta

0

Molti di questi sistemi usano sistemi RPC come Finagle , Apache Thrift o gRPC .

Con tutti questi (e molti altri strumenti simili) definisci l'interfaccia in un linguaggio speciale che è indipendente dal linguaggio di programmazione da utilizzare per qualsiasi particolare implementazione. Quindi esegui il generatore di codice del pacchetto RPC, che può generare codice per un server e / o client che utilizza tale interfaccia.

Il server che genera in genere restituisce semplicemente qualcosa di innocuo (ad esempio, un codice di errore "non implementato") e spetta a te riempirlo con (o collegarlo a) codice che in realtà fa qualcosa di utile.

Poiché l'interfaccia è definita indipendentemente da ogni singolo linguaggio di programmazione, è possibile generare facilmente codice per un server in una lingua (ad es., Java) e client in un'altra (ad es., Python). Il sistema RPC definisce il protocollo per ciò che viene passato sul filo, quindi fintanto che il codice su entrambe le estremità è conforme allo standard, la differenza di lingua è irrilevante.

Un'altra possibilità ampiamente utilizzata è quella di utilizzare una libreria che definisce un protocollo neutrale per le comunicazioni via cavo, ma richiede di effettuare chiamate esplicite per passare i messaggi avanti e indietro utilizzando tale protocollo. Un paio di ovvi esempi di questo genere includono Google Protocollo buffer e Cap'n Proto . Ancora una volta, ci sono molte alternative tra cui scegliere qui. Ho appena collegato una coppia con la quale mi sono più familiare.

In ogni caso, in genere si finisce con una combinazione di un generatore di codice che produce parte del codice necessario e una libreria di codice pre-scritto per gestire altre parti del problema.

    
risposta data 24.02.2016 - 02:51
fonte