Apache Thrift
Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. február 8-án felülvizsgált
verziótól ; az ellenőrzések 5 szerkesztést igényelnek .
A takarékosság ( angolul - " thrift ", ejtsd: [θrift] ) egy interfészleíró nyelv , amely szolgáltatások meghatározására és létrehozására szolgál különböző programozási nyelvekhez. Ez a távoli eljáráshívás (RPC) keretrendszere. A Facebook skálázható, többnyelvű fejlesztői szolgáltatásként használja . Egy csővezetéket kombinál egy kódgeneráló motorral, hogy olyan szolgáltatásokat fejlesszen ki, amelyek többé-kevésbé hatékonyan és egyszerűen működnek olyan nyelvek között, mint [2] C# , C++ , Cappuccino , Cocoa , Delphi , Erlang , Go , Haskell , Java , OCaml , Perl , PHP , Python , Ruby , Rust , Smalltalk és JavaScript [3] . Egyszerűen fogalmazva, a Thrift egy bináris kommunikációs protokoll . 2007 áprilisa óta az Apache Software Foundation nonprofit szervezet nyílt forráskódú projektjeként fejlesztik .
Építészet
A Thrift egy kész szoftverfolyamatot tartalmaz, amely hat rétegből áll, a kliens és a szerver részekkel való munkavégzéshez. A legfelső szint a generált Thrift leíró kód. A szolgáltatások kliens- és szerverkódot generálnak belőle. A beépített típusoktól eltérően a generált adatstruktúra visszaadásra kerül a generált kódban. A protokoll és a szállítási rétegek a futásidejű könyvtár részét képezik . A Thriftben lehetőség van a kód újrafordítása nélkül szolgáltatásokat kiválasztani, protokollt és szállítást módosítani . Az ügyféloldalon kívül a Thrift tartalmaz egy szerver-infrastruktúrát a protokoll-kommunikációhoz és -átvitelhez -ban blocking, non-blockingvalamint multi-threadedszerverekben. Az I/O réteg keretrendszere különböző nyelveken eltérően kerül megvalósításra.
Támogatott protokollok
- TBinaryProtocol – Egyszerű bináris formátum, egyszerű, de nem helytakarékosságra optimalizálva.
- TCompactProtocol – Kompaktabb bináris formátum, általában hatékonyabb.
- TDebugProtocol – Ember által olvasható szövegformátum, amely segíti a hibakeresést.
- TDenseProtocol – Akárcsak a TCompactProtocol esetében, metainformációk lekérése az átadott dolgokból.
- TJSONProtocol – JSON használata adatok dekódolásához.
- TSimpleJSONProtocol – JSON-t használó csak írható protokoll. Alkalmas szkriptnyelveken történő elemzésre.
Támogatott szállítók
- TFileTransport – Ez a transzporter fájlba ír.
- TFramedTransport – Ez a transzporter nem blokkoló szerverek alkalmazásakor használatos. Az adatokat keretekben küldi, ahol minden keretet egy hosszú információ előz meg.
- TMemoryTransport – Memóriahasználat I/O-hoz. A Java implementáció egy egyszerű beépített ByteArrayOutputStream.
- TSocket – blokkoló aljzat I/O-t használ a szállításhoz.
- TZlibTransport - Tömörítést végez a használatával zlib. Más járművekkel együtt használható. Hiányzik a Java implementációból.
Támogatott szerverek
- TNonblockingServer – multi-threadedkiszolgáló, amely non-blockingbemenetet/kimenetet használ (a Java implementációt használja NIO channels). Ezeknek a szervereknek TFramedTransportot kell használniuk .
- TSimpleServer – I/O -t single-threadedhasználó . std blockingHasznos teszteléshez.
- A TThreadPoolServer egy I/O -t multi-threadedhasználó szerver .std blocking
Előnyök
- Nyelvek közötti szerializálás alacsonyabb többletköltséggel, mint az olyan alternatívák, mint a SOAP , bináris formátum használatával.
- Egyszerű és tiszta könyvtár. Nem kell hozzá kódkeret. Nem használ XML konfigurációt.
- A nyelvi kötések természetesek. Például a Java a ArrayList<String>. C++ használatastd::vector<std::string>.
- Az alkalmazási réteg kommunikációs formátuma és a szerializációs réteg kommunikációs formátuma szigorúan elkülönül. Egymástól függetlenül változtathatók.
- A beépített szerializációs típusok a következők: bináris, HTTP-barát és kompakt bináris.
- Úgy épül fel, mint egy többnyelvű soros fájl.
- A protokoll lágy verziói. A takarékossághoz nincs szükség olyan központosított és explicit mechanizmusra, mint a főverzió/kis verzió esetében. A lazán csatolt csoportok szabadon átválthatnak RPC-hívásokba.
- Független az architektúrától vagy egyedi szoftvertől . Nincsenek nem kompatibilis szoftverlicencek.
[négy]
|
Apache Thrift
|
Protokoll pufferek
|
Fejlesztő
|
Facebook, Apache
|
Google
|
Támogatott nyelvek
|
C++, C#, Dart, D, Go, Haskell, Java, JavaScript, Python, PHP, XSD, Ruby, Perl, Objective C,
Erlang, Ruby, Smalltalk, OCaml, Haskell
|
C++, C#, Dart, Go, Java, JavaScript, Python, PHP, Objective C, Ruby
|
Kimenő formátumok
|
Bináris, JSON
|
Bináris
|
Egyszerű típusok
|
bool bájt 16/32/64 bites egész számok dupla karakterlánc bájt sorozatleképezés <t1,t2> list<t> set<t>
|
bool 32/64 bites egész számok float dupla karakterlánc bájt szekvencia ismétlődő tulajdonságok úgy működnek, mint a listák
|
Állandók
|
Igen
|
Nem
|
Kompozit típus
|
struct
|
üzenet
|
Kivételek
|
Igen
|
Nem
|
Dokumentáció
|
problematikus
|
Jó
|
Engedély
|
Apache
|
BSD stílus
|
Kompozit típusú kiterjesztések
|
Nem
|
Igen
|
Takarékos szolgáltatás létrehozása
A Thrift C++ nyelven íródott, de a kód több nyelven is írható. A Thrift szolgáltatás létrehozásához először meg kell írnia azt leíró Thrift fájlokat, majd kódot kell generálnia a kimeneti nyelven, és meg kell adnia a parancsokat a szerver indításához, majd meghívnia azokat a kliensben. Itt van egy példa leíró fájl:
enum PhoneType {
otthon ,
MUNKA ,
MOBIL ,
EGYÉB
}
struct Telefon {
1 : i32 azonosító ,
2 : karakterlánc száma ,
3 : Telefontípus _
}
A Thrift kódot generál ebből a leíró fájlból, például Java nyelven. PhoneTypeegy egyszerű enum lesz a POJO(enum) -n belül a Phone osztály számára.
Irodalom
- Randy Abernethy. A programozói útmutató az Apache takarékossághoz. - Manning Publications Company, 2015. - ISBN 978-1-61729-181-4 .
Jegyzetek
- ↑ https://projects.apache.org/json/projects/thrift.json
- ↑ Apache Thrift – Nyelvi és szolgáltatási mátrix . Letöltve: 2019. március 11. Az eredetiből archiválva : 2019. március 8.. (határozatlan)
- ↑ Apache Thrift - Javascript . thrift.apache.org. Letöltve: 2016. október 13. Az eredetiből archiválva : 2016. október 9.. (határozatlan)
- ↑ Thrift vs Protocol Bufffers vs JSON Archiválva : 2015. november 7., a Wayback Machine , MirthLab LLC, 2009
Linkek
Apache Software Foundation |
---|
Legfelső szintű projektek |
|
---|
Alprojektek | |
---|
Apache |
- tengely
- tengely_
- CXF
- WS-
- EWS
- JaxMe
- jUDDI
- Kandula_
- Mirae_
- Muse
- Feliratkozás
- Sandesha_
- Scout
- SZAPPAN
- Szinapszis
- TSIK
- Toszkána
- Woden
- WSIF
- WSRF
- WSS4J
- XML-RPC
|
---|
Egyéb projektek |
|
---|
Fejlesztő projektek ( inkubátor ) |
- XAP
- River
- OpenEJB
- JPA megnyitása
- Graffito
- Toszkána
- Log4Net
- Henger
- Felix
- Abdera_
- CeltiXfire_
- FtpServer_
- Heraldika
- Ivy_
- Juice
- Kabuki_
- Lokahi
- Lucene.Net
- mod_ftp
- NMaven
- Óda
- stdcxx
- Woden
- WSRP4J
- Yoko_
- WADI
- Qpid
- TripleSoup_
- UIMA
- Adobe Flex
|
---|
Leszerelt projektek ( tetőtér ) |
|
---|
|
Meta platformok |
---|
Szolgáltatások | | ![](//upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Meta_Platforms_Inc._logo.svg/100px-Meta_Platforms_Inc._logo.svg.png) |
---|
Emberek | Alapítók |
|
---|
Igazgatóság |
|
---|
Menedzsment | Jelenlegi |
- Mark Zuckerberg (vezérigazgató)
- Chris Cox (termékek alelnöke)
- Sheryl Sandberg (COO)
- Elliot Shraj (a globális kommunikáció, marketing és közpolitika alelnöke)
- Mike Schroepfer (CTO)
- Ted Ulliot (alelnök és főtanácsos)
|
---|
Korábbi |
- Sean Parker (elnök)
- Owen Van Natta (COO)
- Gideon Yu (CFO)
- Adam d'Angelo (CTO)
- Chris Kelly (Adatvédelmi igazgató)
- Matt Cowler (termékmenedzsment alelnök)
- Bret Taylor (CTO)
|
---|
|
---|
Nevezetes munkatársak | Jelenlegi |
- Randy Zuckerberg (vezérigazgató)
|
---|
Korábbi |
|
---|
|
---|
|
---|
TOVÁBB |
|
---|
tömegmédia |
|
---|
Fogalmak |
|
---|
Üzleti |
- Előzmények Facebook
- A Meta Platforms egyesüléseinek és felvásárlásainak listája
- Facebook F8
- Facebook első nyilvános ajánlattétel
- Facebook cenzúra
- A Facebook kritikája
- Facebook és Cambridge Analytica botrány
- papírok
- Facebook adatvédelmi problémák
- Meta Platformokat érintő perek
|
---|
Összefüggő |
|
---|