{"id":14948,"date":"2024-03-10T11:51:16","date_gmt":"2024-03-10T08:21:16","guid":{"rendered":"https:\/\/www.itpiran.net\/blog\/?p=14948"},"modified":"2024-03-10T11:51:16","modified_gmt":"2024-03-10T08:21:16","slug":"kafka-event-streaming-explained","status":"publish","type":"post","link":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/kafka-event-streaming-explained\/","title":{"rendered":"Kafka olay ak\u0131\u015f\u0131 a\u00e7\u0131klamas\u0131"},"content":{"rendered":"<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87\">girii\u015f<\/h2>\n<p>Geleneksel veri i\u015fleme ve alma y\u00f6ntemleri (toplu i\u015fleme ve yoklama gibi), modern uygulamalarda kullan\u0131lan mikro hizmetler ba\u011flam\u0131nda verimsizdir. Bu y\u00f6ntemler, b\u00fcy\u00fck veri y\u0131\u011f\u0131nlar\u0131 \u00fczerinde \u00e7al\u0131\u015f\u0131r ve bu da i\u015flemelerinin nihai sonucunu geciktirir ve i\u015flenebilmeleri i\u00e7in \u00f6nemli miktarda verinin biriktirilmesini zorunlu k\u0131lar. \u00c7al\u0131\u015fanlar\u0131 senkronize etmek i\u00e7in gereken ek karma\u015f\u0131kl\u0131\u011f\u0131 ortaya \u00e7\u0131kar\u0131r ve kaynak kullan\u0131mlar\u0131na ra\u011fmen baz\u0131lar\u0131n\u0131n yeterince kullan\u0131lmamas\u0131na neden olabilir. Buna kar\u015f\u0131l\u0131k, bulut bili\u015fim \u015firket i\u00e7i kaynaklar i\u00e7in h\u0131zl\u0131 \u00f6l\u00e7eklenebilirlik sa\u011flad\u0131\u011f\u0131ndan, gelen veriler paralel olarak birden fazla \u00e7al\u0131\u015fana devredilerek ger\u00e7ek zamanl\u0131 olarak i\u015flenebilir.<\/p>\n<p>Olay ak\u0131\u015f\u0131, farkl\u0131 sistemler aras\u0131nda s\u00fcrekli bir veri ak\u0131\u015f\u0131 sa\u011flarken gelen olaylar\u0131 esnek bir \u015fekilde toplay\u0131p i\u015flenmek \u00fczere devretmeyi sa\u011flayan bir yakla\u015f\u0131md\u0131r. Gelen verilerin an\u0131nda i\u015flenmek \u00fczere planlanmas\u0131, maksimum kaynak kullan\u0131m\u0131 ve ger\u00e7ek zamanl\u0131 yan\u0131t s\u00fcresi sa\u011flar. Olay ak\u0131\u015f\u0131, \u00fcreticileri t\u00fcketicilerden ay\u0131r\u0131r ve mevcut y\u00fcke ba\u011fl\u0131 olarak her birinden orant\u0131s\u0131z say\u0131da bulundurman\u0131za olanak tan\u0131r. Bu, dinamik ger\u00e7ek d\u00fcnya ko\u015fullar\u0131na an\u0131nda tepki vermenizi sa\u011flar.<\/p>\n<p>Bu t\u00fcr bir duyarl\u0131l\u0131k, \u00f6zellikle finansal ticaret, \u00f6deme izleme veya trafik izleme gibi alanlarda \u00f6nemli olabilir. \u00d6rne\u011fin, Uber olay ak\u0131\u015f\u0131n\u0131 kullanarak y\u00fczlerce mikro hizmeti birbirine ba\u011flar, olay verilerini yolcu-s\u00fcr\u00fcc\u00fc uygulamalar\u0131ndan ger\u00e7ek zamanl\u0131 olarak g\u00f6nderir ve daha sonra analiz edilmek \u00fczere ar\u015fivler.<\/p>\n<p>Olay yay\u0131n\u0131 sayesinde, bir \u00e7al\u0131\u015fan\u0131n geleneksel olarak d\u00fczenli aral\u0131klarla bir veri paketi beklemesi yerine, olay arac\u0131s\u0131, olay meydana gelir gelmez t\u00fcketiciyi (genellikle bir mikro servis) bilgilendirebilir ve olay verilerini sa\u011flayabilir. Olay arac\u0131s\u0131, olaylar\u0131n y\u00f6nlendirilmesi, al\u0131nmas\u0131 ve iletilmesiyle ilgilenir. Ayr\u0131ca, bir \u00e7al\u0131\u015fan\u0131n ba\u015far\u0131s\u0131z olmas\u0131 veya bir olay\u0131 i\u015flemeyi reddetmesi durumunda hata tolerans\u0131 sa\u011flar.<\/p>\n<p>Bu konsept yaz\u0131s\u0131nda, olay ak\u0131\u015f\u0131 yakla\u015f\u0131m\u0131n\u0131 ve faydalar\u0131n\u0131 inceleyece\u011fiz. Ayr\u0131ca, a\u00e7\u0131k kaynakl\u0131 bir olay arac\u0131s\u0131 olan Apache Kafka&#039;y\u0131 tan\u0131tacak ve bu yakla\u015f\u0131mdaki rol\u00fcn\u00fc inceleyece\u011fiz.<\/p>\n<h2 id=\"%d9%85%d8%b9%d9%85%d8%a7%d8%b1%db%8c-%d8%ac%d8%b1%db%8c%d8%a7%d9%86-%d8%b1%d9%88%db%8c%d8%af%d8%a7%d8%af\">Olay ak\u0131\u015f\u0131 mimarisi<\/h2>\n<p>Olay ak\u0131\u015f\u0131, \u00f6z\u00fcnde, yay\u0131nla\/abone ol mimari modelinin bir uygulamas\u0131d\u0131r. Genel olarak, yay\u0131nla\/abone ol modeli \u015funlar\u0131 i\u00e7erir:<\/p>\n<ul>\n<li>\u0130letilen mesajlar\u0131n (iletmek istedi\u011finiz herhangi bir veri dahil) ele al\u0131nd\u0131\u011f\u0131 konular.<\/li>\n<li>Mesaj \u00fcreten yay\u0131nc\u0131lar<\/li>\n<li>Mesajlar\u0131 alan ve bunlara g\u00f6re hareket eden aboneler<\/li>\n<li>Yay\u0131nc\u0131lardan gelen mesajlar\u0131 kabul eden ve bunlar\u0131 abonelere en verimli \u015fekilde ula\u015ft\u0131ran bir mesaj arac\u0131s\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Bir konu, bir mesaj\u0131n ili\u015fkilendirildi\u011fi bir kategoriye benzer. Konular, mesaj dizisini kal\u0131c\u0131 olarak saklar ve yeni mesajlar\u0131n her zaman dizinin sonuna eklenmesini sa\u011flar. Bir mesaj bir konuya eklendikten sonra, daha sonra de\u011fi\u015ftirilemez.<\/p>\n<p>Etkinlik yay\u0131nc\u0131l\u0131\u011f\u0131nda da temel mant\u0131k benzerdir, ancak daha \u00f6zelle\u015fmi\u015ftir:<\/p>\n<ul>\n<li>Olaylar ve ilgili meta veriler mesaj olarak g\u00f6nderilir.<\/li>\n<li>Bir konudaki olaylar genellikle var\u0131\u015f saatine g\u00f6re s\u0131ralan\u0131r.<\/li>\n<li>Abone (t\u00fcketici) olarak da adland\u0131r\u0131lanlar, ileti dizisindeki herhangi bir noktadan o ana kadar olan olaylar\u0131 yay\u0131nlayabilirler.<\/li>\n<li>Ger\u00e7ek pub\/sub&#039;un aksine, bir konuya ili\u015fkin etkinlikler belirli bir s\u00fcre boyunca veya s\u00fcresiz olarak (ar\u015fiv olarak) saklanabilir.<\/li>\n<\/ul>\n<p>Olay ak\u0131\u015f\u0131, bir olay\u0131n niteli\u011fi hakk\u0131nda herhangi bir k\u0131s\u0131tlama getirmez veya varsay\u0131mda bulunmaz. Altta yatan arac\u0131 kurum a\u00e7\u0131s\u0131ndan, bir \u00fcreticinin kendisine bir \u015fey oldu\u011funu bildirdi\u011fi anlam\u0131na gelir. Ger\u00e7ekte ne oldu\u011funu tan\u0131mlamak ve uygulaman\u0131za anlam kazand\u0131rmak size kalm\u0131\u015ft\u0131r. Bu nedenle, arac\u0131 kurumun bak\u0131\u015f a\u00e7\u0131s\u0131ndan olaylar, birbirinin yerine mesaj veya kay\u0131t olarak adland\u0131r\u0131l\u0131r.<\/p>\n<p>\u00d6rnek olarak, Confluent dok\u00fcmantasyonundan Kafka olay ak\u0131\u015f\u0131 mimarisinin ayr\u0131nt\u0131l\u0131 bir diyagram\u0131 a\u015fa\u011f\u0131da verilmi\u015ftir:<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"2000\"  height=\"750\"  class=\"aligncenter wp-image-14949 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 2000px) 100vw, 2000px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX.png 2000w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-300x113.png 300w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-1024x384.png 1024w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-768x288.png 768w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-1536x576.png 1536w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-110x41.png 110w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-200x75.png 200w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-380x143.png 380w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-255x96.png 255w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-550x206.png 550w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-800x300.png 800w, https:\/\/cdn.itpiran.net\/2024\/03\/10113433\/hHJeiWX-1160x435.png 1160w\" ><br \/>\nT\u00fcketicilerin bir arac\u0131dan veri almalar\u0131na ili\u015fkin iki model vard\u0131r: itme ve \u00e7ekme. \u0130tme, olay arac\u0131s\u0131n\u0131n ba\u015flang\u0131\u00e7ta kullan\u0131labilir bir t\u00fcketiciye veri g\u00f6nderme s\u00fcrecini ba\u015flatmas\u0131n\u0131 ifade ederken, \u00e7ekme, t\u00fcketicinin arac\u0131dan daha sonra kullan\u0131labilir kay\u0131tlar\u0131 talep etmesi anlam\u0131na gelir. Bu ayr\u0131m zarars\u0131z g\u00f6r\u00fcnse de, pratikte \u00e7ekme tercih edilir.<\/p>\n<p>Push&#039;un yayg\u0131n olarak kullan\u0131lmamas\u0131n\u0131n temel nedenlerinden biri, arac\u0131n\u0131n t\u00fcketicinin olay \u00fczerinde ger\u00e7ekten i\u015flem yapabilece\u011finden emin olamamas\u0131. Bu nedenle, olay\u0131 gereksiz yere birden fazla kez g\u00f6nderebilir ve yine de konu ba\u015fl\u0131\u011f\u0131nda saklamas\u0131 gerekebilir. Arac\u0131 ayr\u0131ca, daha y\u00fcksek verimlilik i\u00e7in olaylar\u0131 toplu olarak g\u00f6ndermeyi de d\u00fc\u015f\u00fcnmelidir; bu, olaylar\u0131 m\u00fcmk\u00fcn oldu\u011funca h\u0131zl\u0131 yay\u0131nlama fikrinin tam tersidir.<\/p>\n<p>T\u00fcketicinin i\u015flemeye haz\u0131r oldu\u011funda veri \u00e7ekmesi, gereksiz a\u011f trafi\u011fini azalt\u0131r ve daha fazla g\u00fcvenilirlik sa\u011flar. Bu, yaln\u0131zca i\u015flemeye haz\u0131r oldu\u011funda veri almas\u0131n\u0131 sa\u011flar. \u0130\u015flem s\u00fcresi i\u015f mant\u0131\u011f\u0131na ba\u011fl\u0131d\u0131r ve \u00e7al\u0131\u015fan say\u0131s\u0131n\u0131n zamanlamas\u0131n\u0131 etkiler. Her iki durumda da, arac\u0131, t\u00fcketicinin hangi olaylar\u0131 onaylad\u0131\u011f\u0131n\u0131 hat\u0131rlamal\u0131d\u0131r.<\/p>\n<p>Art\u0131k etkinlik ak\u0131\u015f\u0131n\u0131n ne oldu\u011funu ve hangi mimariye dayand\u0131\u011f\u0131n\u0131 bildi\u011finize g\u00f6re, bu dinamik yakla\u015f\u0131m\u0131n faydalar\u0131n\u0131 \u00f6\u011freneceksiniz.<\/p>\n<h2 id=\"%d9%85%d8%b2%d8%a7%db%8c%d8%a7%db%8c-%d9%be%d8%ae%d8%b4-%d8%ac%d8%b1%db%8c%d8%a7%d9%86%db%8c-%d8%b1%d9%88%db%8c%d8%af%d8%a7%d8%af\">Etkinlik ak\u0131\u015f\u0131n\u0131n faydalar\u0131<\/h2>\n<p>Etkinlik yay\u0131nc\u0131l\u0131\u011f\u0131n\u0131n ba\u015fl\u0131ca faydalar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li>Tutarl\u0131l\u0131k: Olay arac\u0131s\u0131, olaylar\u0131n t\u00fcm ilgili t\u00fcketicilere do\u011fru \u015fekilde g\u00f6nderilmesini sa\u011flar.<\/li>\n<li>Hata tolerans\u0131: Bir t\u00fcketici bir olay\u0131 kabul etmezse, hi\u00e7bir olay\u0131n i\u015flenmemi\u015f kalmamas\u0131n\u0131 sa\u011flamak i\u00e7in ba\u015fka bir yere y\u00f6nlendirilebilir.<\/li>\n<li>Yeniden Kullan\u0131labilirlik: Bir i\u015f par\u00e7ac\u0131\u011f\u0131nda depolanan olaylar de\u011fi\u015ftirilemez. Tamam\u0131yla veya belirli bir zaman noktas\u0131ndan itibaren tekrar oynat\u0131labilirler; bu sayede i\u015f mant\u0131\u011f\u0131n\u0131z de\u011fi\u015fti\u011finde olaylar\u0131 yeniden i\u015fleyebilirsiniz.<\/li>\n<li>\u00d6l\u00e7eklenebilirlik: \u00dcreticiler ve t\u00fcketiciler ayr\u0131 varl\u0131klard\u0131r ve birbirlerini beklemek zorunda de\u011fillerdir; bu da talebe ba\u011fl\u0131 olarak dinamik olarak \u00f6l\u00e7eklendirilebilecekleri veya azalt\u0131labilecekleri anlam\u0131na gelir.<\/li>\n<li>Kullan\u0131m kolayl\u0131\u011f\u0131: Olay arac\u0131s\u0131, olay y\u00f6nlendirme ve depolama i\u015flemlerini y\u00f6netir, karma\u015f\u0131k mant\u0131\u011f\u0131 soyutlar ve verilerin kendisine odaklanman\u0131z\u0131 sa\u011flar.<\/li>\n<\/ul>\n<p>Her olay, yaln\u0131zca olay\u0131n meydana gelmesiyle ilgili gerekli ayr\u0131nt\u0131lar\u0131 i\u00e7ermelidir. Olay arac\u0131lar\u0131 genellikle \u00e7ok verimlidir ve olaylar\u0131n bir konuya kaydedildikten sonra sona ermemesi \u00f6nerilse de, geleneksel bir veritaban\u0131 olarak de\u011ferlendirilmemelidir.<\/p>\n<p>\u00d6rne\u011fin, bir makalenin g\u00f6r\u00fcnt\u00fclenme say\u0131s\u0131n\u0131n de\u011fi\u015fti\u011fini g\u00f6stermek g\u00fczel olurdu, ancak bu bilgiyle birlikte t\u00fcm makaleyi ve meta verilerini depolamaya gerek yoktur. Bunun yerine, olay, harici bir veritaban\u0131ndaki makale kimli\u011fine bir referans i\u00e7erebilir. Bu \u015fekilde, gereksiz bilgiler eklemeden ve konuyu kirletmeden ge\u00e7mi\u015f yine de izlenebilir.<\/p>\n<p>\u015eimdi Apache Kafka ve di\u011fer pop\u00fcler etkinlik arac\u0131lar\u0131n\u0131, bunlar\u0131n nas\u0131l kar\u015f\u0131la\u015ft\u0131r\u0131ld\u0131\u011f\u0131n\u0131 ve etkinlik ak\u0131\u015f\u0131 ekosistemine nas\u0131l uydu\u011funu \u00f6\u011freneceksiniz.<\/p>\n<h2 id=\"%d9%86%d9%82%d8%b4-%d8%a2%d9%be%d8%a7%da%86%db%8c-%da%a9%d8%a7%d9%81%da%a9%d8%a7\">Apache Kafka&#039;n\u0131n rol\u00fc<\/h2>\n<p>Apache Kafka, Java dilinde yaz\u0131lm\u0131\u015f ve Apache Yaz\u0131l\u0131m Vakf\u0131 taraf\u0131ndan y\u00f6netilen a\u00e7\u0131k kaynakl\u0131 bir olay arac\u0131s\u0131d\u0131r. Maksimum performans i\u00e7in \u00f6zel bir TCP a\u011f protokol\u00fc kullanarak ileti\u015fim kuran da\u011f\u0131t\u0131lm\u0131\u015f sunucular ve istemcilerden olu\u015fur. Kafka son derece g\u00fcvenilir ve \u00f6l\u00e7eklenebilirdir ve sanal makinelerde, yal\u0131n donan\u0131mlarda, kapsay\u0131c\u0131larda ve di\u011fer bulut ortamlar\u0131nda \u00e7al\u0131\u015fabilir.<\/p>\n<p>G\u00fcvenilirlik i\u00e7in Kafka, bir veya daha fazla sunucudan olu\u015fan bir k\u00fcme olarak da\u011f\u0131t\u0131l\u0131r. Bu k\u00fcme, birden fazla bulut b\u00f6lgesini ve veri merkezini kapsayabilir. Kafka k\u00fcmeleri hata toleransl\u0131d\u0131r; yani bir sunucu ar\u0131zas\u0131 veya ba\u011flant\u0131 kesilmesi durumunda, kalanlar, harici etki ve veri kayb\u0131 olmadan i\u015flemlerin y\u00fcksek d\u00fczeyde kullan\u0131labilirli\u011fini sa\u011flamak i\u00e7in yeniden grupland\u0131r\u0131l\u0131r.<\/p>\n<p>Maksimum verimlilik i\u00e7in t\u00fcm Kafka sunucular\u0131 ayn\u0131 rol\u00fc oynamaz. Baz\u0131 sunucular grupland\u0131r\u0131larak arac\u0131 g\u00f6revi g\u00f6r\u00fcr ve verileri depolamak i\u00e7in bir depolama katman\u0131 olu\u015fturur. Di\u011ferleri ise mevcut sistemlerinizle entegre edilebilir ve mevcut sistemlerden (ili\u015fkisel veritabanlar\u0131 gibi) Kafka&#039;ya g\u00fcvenilir bir \u015fekilde veri ak\u0131\u015f\u0131 sa\u011flayan bir ara\u00e7 olan Kafka Connect kullan\u0131larak verileri olay ak\u0131\u015flar\u0131 olarak alabilir.<\/p>\n<p>Kafka, \u00fcreticileri ve t\u00fcketicileri m\u00fc\u015fteri olarak kabul eder. Daha \u00f6nce a\u00e7\u0131kland\u0131\u011f\u0131 gibi, \u00fcreticiler olaylar\u0131 bir Kafka arac\u0131s\u0131na yazar ve arac\u0131 da bunlar\u0131 ilgili t\u00fcketicilere g\u00f6nderir. Varsay\u0131lan yap\u0131land\u0131rmada Kafka, bir olay\u0131n nihayetinde t\u00fcketicilerden biri taraf\u0131ndan yaln\u0131zca bir kez i\u015flenmesini garanti eder.<\/p>\n<p>Kafka&#039;da konular b\u00f6l\u00fcmlere ayr\u0131lm\u0131\u015ft\u0131r. Bu, bir konunun farkl\u0131 Kafka broker&#039;lar\u0131 aras\u0131nda par\u00e7alara da\u011f\u0131t\u0131ld\u0131\u011f\u0131 ve \u00f6l\u00e7eklenebilirli\u011fin sa\u011fland\u0131\u011f\u0131 anlam\u0131na gelir. Kafka ayr\u0131ca, belirli bir konu ve b\u00f6l\u00fcm kombinasyonunda depolanan olaylar\u0131n her zaman yaz\u0131ld\u0131klar\u0131 s\u0131rayla okunabilmesini sa\u011flar.<\/p>\n<p>Bir konuyu yaln\u0131zca b\u00f6l\u00fcmlere ay\u0131rman\u0131n yedeklili\u011fi garanti etmedi\u011fini unutmay\u0131n; yedeklilik yaln\u0131zca b\u00f6lgeler ve veri merkezleri aras\u0131nda \u00e7o\u011faltma yoluyla sa\u011flanabilir. Bir \u00fcretim ortam\u0131nda bir k\u00fcmenin en az 3 kopyas\u0131n\u0131n bulunmas\u0131 yayg\u0131nd\u0131r; bu da her zaman \u00fc\u00e7 konu-b\u00f6l\u00fcm kombinasyonunun mevcut oldu\u011fu anlam\u0131na gelir.<\/p>\n<h2 id=\"%d8%a7%d8%af%d8%ba%d8%a7%d9%85-%da%a9%d8%a7%d9%81%da%a9%d8%a7\">Kafka entegrasyonu<\/h2>\n<p>Belirtildi\u011fi gibi, mevcut sistemlerinizden veriler Kafka Connect kullan\u0131larak i\u00e7e ve d\u0131\u015fa aktar\u0131labilir. Sunucular\u0131n\u0131zdaki t\u00fcm veritabanlar\u0131n\u0131, raporlar\u0131 veya \u00f6l\u00e7\u00fcmleri d\u00fc\u015f\u00fck gecikmeli i\u015f par\u00e7ac\u0131klar\u0131yla i\u00e7e aktarmak i\u00e7in uygundur. Kafka Connect, verileri standart bir \u015fekilde y\u00f6netmenize olanak tan\u0131yan farkl\u0131 veri sistemleri i\u00e7in ba\u011flay\u0131c\u0131lar sa\u011flar. Kendi \u00e7\u00f6z\u00fcmlerinizi kullanmak yerine ba\u011flay\u0131c\u0131lar\u0131 kullanman\u0131n bir di\u011fer avantaj\u0131 da Connect&#039;in varsay\u0131lan olarak \u00f6l\u00e7eklenebilir olmas\u0131 (birden fazla \u00e7al\u0131\u015fan grupland\u0131r\u0131labilir) ve ilerlemeyi otomatik olarak izlemesidir.<\/p>\n<p>Uygulamalar\u0131n\u0131z arac\u0131l\u0131\u011f\u0131yla Kafka ile ileti\u015fim kurmak i\u00e7in \u00e7ok say\u0131da istemci mevcuttur. Java, Scala, Python, .NET, C++, Go vb. gibi bir\u00e7ok programlama dili desteklenmektedir. Java ve Scala i\u00e7in Kafka Streams adl\u0131 \u00fcst d\u00fczey bir istemci k\u00fct\u00fcphanesi de mevcuttur. Bu k\u00fct\u00fcphane, i\u00e7 i\u015fleyi\u015fi \u00f6zetler ve bir Kafka sunucusuna kolayca ba\u011flan\u0131p yay\u0131n olaylar\u0131n\u0131 almaya ba\u015flaman\u0131z\u0131 sa\u011flar.<\/p>\n<h2 id=\"%d9%86%d8%aa%db%8c%d8%ac%d9%87\">Sonu\u00e7<\/h2>\n<p>Bu makalede, veri ve olay i\u015flemeye y\u00f6nelik modern olay ak\u0131\u015f\u0131 yakla\u015f\u0131m\u0131n\u0131n paradigmalar\u0131 ve geleneksel veri kategorizasyon s\u00fcre\u00e7lerine g\u00f6re avantajlar\u0131 ele al\u0131nmaktad\u0131r. Ayr\u0131ca, bir olay arac\u0131s\u0131 olarak Apache Kafka ve istemci ekosistemi hakk\u0131nda da bilgi edindiniz.<\/p>","protected":false},"excerpt":{"rendered":"Giri\u015f Mikroservisler ba\u011flam\u0131nda veri i\u015fleme ve almada kullan\u0131lan geleneksel y\u00f6ntemler (toplu i\u015fleme ve yoklama gibi)\u2026","protected":false},"author":1,"featured_media":14951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"\u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_yoast_wpseo_focuskeywords":"","_yoast_wpseo_primary_category":"193","footnotes":""},"categories":[193,266],"tags":[410,138],"class_list":{"0":"post-14948","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorials","8":"category-news","9":"tag-kafka","10":"tag-138"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627 - \u0628\u0644\u0627\u06af ITPiran<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/kafka-event-streaming-explained\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627 - \u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"og:description\" content=\"\u0645\u0642\u062f\u0645\u0647 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0633\u0646\u062a\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627 (\u0645\u0627\u0646\u0646\u062f \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0633\u062a\u0647\u200c\u0627\u06cc \u0648 \u0646\u0638\u0631\u0633\u0646\u062c\u06cc) \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0631\u06cc\u0632\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/kafka-event-streaming-explained\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-10T08:21:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.itpiran.net\/2024\/03\/10115014\/kafka.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1793\" \/>\n\t<meta property=\"og:image:height\" content=\"1110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\"},\"headline\":\"\u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627\",\"datePublished\":\"2024-03-10T08:21:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/\"},\"wordCount\":16,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/03\\\/10115014\\\/kafka.jpg\",\"keywords\":[\"kafka\",\"\u062e\u0628\u0631 \u0645\u0647\u0645\"],\"articleSection\":[\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"\u0627\u062e\u0628\u0627\u0631\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/\",\"name\":\"\u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627 - \u0628\u0644\u0627\u06af ITPiran\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/03\\\/10115014\\\/kafka.jpg\",\"datePublished\":\"2024-03-10T08:21:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/03\\\/10115014\\\/kafka.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/03\\\/10115014\\\/kafka.jpg\",\"width\":1793,\"height\":1110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/kafka-event-streaming-explained\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/category\\\/tutorials\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"name\":\"\u0628\u0644\u0627\u06af ITPiran\",\"description\":\"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\",\"name\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"alternateName\":\"ITPIran Blog\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"width\":512,\"height\":512,\"caption\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\",\"name\":\"admin\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tr\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kafka Etkinlik Ak\u0131\u015f\u0131 A\u00e7\u0131klamas\u0131 - ITPiran Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/kafka-event-streaming-explained\/","og_locale":"tr_TR","og_type":"article","og_title":"\u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627 - \u0628\u0644\u0627\u06af ITPiran","og_description":"\u0645\u0642\u062f\u0645\u0647 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0633\u0646\u062a\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627 (\u0645\u0627\u0646\u0646\u062f \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0633\u062a\u0647\u200c\u0627\u06cc \u0648 \u0646\u0638\u0631\u0633\u0646\u062c\u06cc) \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0631\u06cc\u0632\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631&hellip;","og_url":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/kafka-event-streaming-explained\/","og_site_name":"\u0628\u0644\u0627\u06af ITPiran","article_published_time":"2024-03-10T08:21:16+00:00","og_image":[{"width":1793,"height":1110,"url":"https:\/\/cdn.itpiran.net\/2024\/03\/10115014\/kafka.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"admin"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/#article","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/"},"author":{"name":"admin","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81"},"headline":"\u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627","datePublished":"2024-03-10T08:21:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/"},"wordCount":16,"commentCount":0,"publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/03\/10115014\/kafka.jpg","keywords":["kafka","\u062e\u0628\u0631 \u0645\u0647\u0645"],"articleSection":["\u0622\u0645\u0648\u0632\u0634\u06cc","\u0627\u062e\u0628\u0627\u0631"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/","url":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/","name":"Kafka Etkinlik Ak\u0131\u015f\u0131 A\u00e7\u0131klamas\u0131 - ITPiran Blog","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/#primaryimage"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/03\/10115014\/kafka.jpg","datePublished":"2024-03-10T08:21:16+00:00","breadcrumb":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/#primaryimage","url":"https:\/\/cdn.itpiran.net\/2024\/03\/10115014\/kafka.jpg","contentUrl":"https:\/\/cdn.itpiran.net\/2024\/03\/10115014\/kafka.jpg","width":1793,"height":1110},{"@type":"BreadcrumbList","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/kafka-event-streaming-explained\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.itpiran.net\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0622\u0645\u0648\u0632\u0634\u06cc","item":"https:\/\/www.itpiran.net\/blog\/category\/tutorials\/"},{"@type":"ListItem","position":3,"name":"\u062a\u0648\u0636\u06cc\u062d \u062c\u0631\u06cc\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u06a9\u0627\u0641\u06a9\u0627"}]},{"@type":"WebSite","@id":"https:\/\/www.itpiran.net\/blog\/#website","url":"https:\/\/www.itpiran.net\/blog\/","name":"ITPiran Blog","description":"\u0130ran S\u00fcrd\u00fcr\u00fclebilir Ticaret Haberleri ve Makaleleri","publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.itpiran.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/www.itpiran.net\/blog\/#organization","name":"S\u00fcrd\u00fcr\u00fclebilir \u0130ran \u0130\u015fletmeleri Blogu","alternateName":"ITPIran Blog","url":"https:\/\/www.itpiran.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","contentUrl":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","width":512,"height":512,"caption":"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81","name":"y\u00f6netici","url":"https:\/\/www.itpiran.net\/blog\/tr\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/14948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/comments?post=14948"}],"version-history":[{"count":1,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/14948\/revisions"}],"predecessor-version":[{"id":14950,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/14948\/revisions\/14950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/media\/14951"}],"wp:attachment":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/media?parent=14948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/categories?post=14948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/tags?post=14948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}