ITLAB – Laboratorio IT

SOA (Service Oriented Architecture), Web 2.0, Open Source e Java.

  • Feed

    Feed ITLAB

  • Chi sono

    Mi chiamo Andrea Gumina. Sono laureato in Scienze dell'Informazione e lavoro per un'azienda di consulenza IT. Da qualche anno mi occupo di integrazione di sistemi, di SOA (Service Oriented Architecture) da poco meno di tre.

  • Bookmarks

  • Licenza

  • Statistiche

Archivio per la categoria ‘Java’

Java

Da Facebook un nuovo IDL: Thrift

Pubblicato da Andrea Gumina su 7 Febbraio 2009

L’IDL (Interface Description Language) è un linguaggio con cui descrivere interfacce; vi si ricorre quando si desidera esporre – solitamente in modalità RPC (Remote Procedure Call) – un componente software ad altri sistemi, anche se sviluppati con linguaggi di programmazione diversi. L’IDL è paragonabile ad una lingua franca tra linguaggi di programmazione differenti: tipi semplici e complessi, parametri di input e di output, operazioni, ecc. espressi secondo il linguaggio di programmazione dei sistemi coinvolti, sono tutti ricondotti ai corrispondenti costrutti dell’IDL, che diviene così il linguaggio comune per questa comunicazione. CORBA (IDL) e WSDL sono esempi di IDL.

Facebook, tempo fa, ha aperto il codice dell’IDL che usa al suo interno: Thrift.

Thrift è quindi un linguaggio con cui definire interfacce: tipi semplici e complessi, tipi strutturati e operazioni con parametri di input e di output. Con il compilatore che include, si genera poi, a partire dalle interfacce così descritte, data-bindings e stubs, lato server e client.

Thrift è indipendente da trasporto, protocollo e serializzazione: non ne impone di specifici ma ne stabilisce l’interfaccia in modo da poter essere adattato o esteso. Di alcuni trasporti (file, memoria, socket e pochi altri) ne include l’implementazione.

Thrift, infine, è compatibile sia in avanti che all’indietro: i campi non attesi ma presenti nel pacchetto serializzato sono semplicemente ignorati, quelli attesi, ma non presenti, lasciati vuoti e il fatto segnalato. Questa caratteristica è soddisfatta sia per le strutture che per i parametri dei metodi; potrebbe però non essere garantita nel caso in cui un server obsoleto non riceva un campo rimosso da un nuovo client.

Thrift nasce da esigenze ben precise: l’interoperabilità tra un certo numero di linguaggi (Java, C++, PHP, Python e altri), la generazione automatica del codice di “traduzione” tra formati d’interscambio e nativi, il volersi sottrarre all’aggiornamento contemporaneo di tutti i sistemi e il desiderio di concentrarsi sulla logica di business piuttosto che sui dettagli d’infrastruttura.

Facebook impiega Thrift in un elevato numero di sistemi, tra cui: ricerca, logging, gestione degli annunci pubblicitari e applicazioni mobili.

Thrift è un progetto Open Source ospitato su Apache.

—-><—-

Hai trovato questo articolo interessante? Segui il feed e commenta!

Pubblicato su Java, Open Source | Contrassegnato da tag: , , , , , , | Lascia un commento »

Da Google un nuovo formato dati: Protocol Buffers

Pubblicato da Andrea Gumina su 2 Febbraio 2009

Google, tempo fa, ha aperto il codice di Protocol Buffers, il formato dati che usa al suo interno. L’accoglienza, stranamente, non è stata delle migliori: in molti si sono chiesti se Google non avesse semplicemente reinventato la ruota.

Protocol Buffers comprende un linguaggio con cui esprimere strutture dati indipendenti dall’implementazione e dal trasporto (rete, disco, ecc.), un compilatore con cui generare il data-binding per un certo numero di linguaggi (Java, C++, Python e altri) e librerie con cui serializzare, de-serializzare e manipolare il pacchetti dati.

Google afferma che questo formato è efficiente (veloce nella serializzazione e nella de-serializzazione), compatto (pacchetto binario dalle dimensioni molto contenute) e compatibile, sia con le versioni precedenti che con quelle successive (i campi sconosciuti sono ignorati, a quelli mancanti è assegnato l’eventuale valore di default); comunque un benchmarking non è mostrato ed è consigliato un confronto con il formato già in uso (che magari si pensa di sostituire).

I dati serializzati con Protocol Buffers possono anche essere salvati su disco o su una base dati, unica accortezza quella di far riferimento alla definizione della struttura: il pacchetto dati serializzato, infatti, non è autodescrittivo (sui documenti è comunque descritta una strategia per conseguire qualcosa di simile).

Protocol Buffers è nato non per competere con JSON (JavaScript Object Notation) , XML, ASN.1, ecc. ma per soddisfare alcuni requisiti – prestazioni, riduzione del traffico rete e spazio disco, efficienza negli aggiornamenti del software e generazione dei data-binding – anche a rischio di perdere i vantaggi della standardizzazione e della leggibilità propri, ad esempio, di XML.

—-><—-

Sullo stesso argomento:

—-><—-

Hai trovato questo articolo interessante? Segui il feed e commenta!

Pubblicato su Architetture, Java, Open Source | Contrassegnato da tag: , , , , , , , , , | Lascia un commento »

Basi dati chiave-valore

Pubblicato da Andrea Gumina su 27 Gennaio 2009

Se si ricercano i dati solo per chiave, se non si eseguono join o se si possiedono parecchi dati e non si desidera amministrare repliche e partizioni, potrebbe aver senso usare una base dati a coppie chiave-valore: qualcosa, ossia, molto simile ad una tabella hash distribuita.

Richard Jones di Last.fm ha pubblicato un interessante articolo – Anti-RDBMS: A list of distributed key-value stores – in cui sintetizza le caratteristiche di un certo numero di basi dati chiave-valore open source: Project Voldemort, Ringo, Scalaris, Kai, Dynomite, ThruDB, CouchDB, Cassandra, HBase e Hypertable. Tra questi, CouchDB, ThruDB, MemcacheDB, Project Voldemort e Dynomite, sembrano i più promettenti.

Project Voldemort, in particolare, è scritto in Java ed usato da Linkedin; automaticamente replica, partiziona ed esegue il caching dei dati, non ha un singolo punto di fallimento, persiste su Mysql o BerkleyDB ed è rilasciato con licenza Apache 2.0.

—-><—-

Hai trovato questo articolo interessante? Segui il feed e commenta!

Pubblicato su Architetture, Java, Open Source | Contrassegnato da tag: , , , , , | Lascia un commento »