19 Ekim 2016 Çarşamba

Apache THRIFT

Apache Thrift nedir?

Farklı programlama diller arasında iletişim kurabileceğiniz, bunu ölçeklenebilir, verimli ve sorunsuz bir şekilde yapabileceğimiz bir yazılım çatısıdır (framework). Bu işlemleri yaparken RPC (remote procedure call) kullanır.

RPC, request–response protokolüne benzemektedir. Bu yapıda bir istek yapıldığında sonuç gelene kadar client (istemci) bloklanır. RPC ek olarak asenkron işlemlere müsade etmektedir. XHTTP (Ajax) gibi düşünebilirsiniz.

Binary protokolünü kullanmaktadır. Binary olması çok hızlı çalışmasını sağlamaktadır.

Siz bir arayüz tanımlıyorsunuz. Sonrasına buna göre istediğiniz dilde kod yapısını çıkarıyor. Size de boşlukları doldurmak kalıyor.

Kullanılabilir dillerden bazıları;
C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi ...

Biz PHP ile Python'u konuşturan örnek bir uygulama yapalım;


brew install thrift --with-python --with-php
git clone https://github.com/volkan/thrift-works
cd thrift-works
thrift -r --gen php:server tutorial.thrift
thrift -r --gen php:server shared.thrift
thrift -r --gen py tutorial.thrift
thrift -r --gen py shared.thrift
Python için;

pip install thrift

Veya

cd lib/py
python setup.py install

İki ayrı pencere;

python server/PythonServer.py

php client/PhpClient.php

Böylece farklı dillerde iletişimi sağlamış olduk. Örnekler arasında "zip()" olanın içine "sleep" ile bekleme yapmasını söyledim. Ancak kod akışından bir engelleme olmadan arka planda çalışmaya devam ediyor. (Asenkron) Server tarafında "zip()" yazısı 5 saniye sonra çıkıyor.





Dikkat çekmesi için bazı görseller paylaşacağım. Kaynakları da aşağıda veriyorum. İyi incelemeler :)



Kaynaklar:
https://www.youtube.com/watch?v=e8Df_8yMGRU
http://nordicapis.com/microservice-showdown-rest-vs-soap-vs-apache-thrift-and-why-it-matters/

Hiç yorum yok: