Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah mungkin untuk mencipta perkhidmatan dalam Go yang kedua-duanya menggunakan aliran mesej (dari Kafka) dan membaca permintaan API REST?

Adakah mungkin untuk mencipta perkhidmatan dalam Go yang kedua-duanya menggunakan aliran mesej (dari Kafka) dan membaca permintaan API REST?

王林
王林ke hadapan
2024-02-12 18:06:05841semak imbas

是否可以在 Go 中创建一个既使用消息流(来自 Kafka)又读取 REST API 请求的服务?

Kandungan soalan

Saya baru-baru ini membaca artikel "Berkongsi data antara perkhidmatan mikro berskala besar"

Gambar ini mengenai sambungan tak segerak.

Jika saya ingat dengan betul, perkhidmatan Order Pagedalam gambar ini nampaknya dapat membaca aliran mesej daripada Kafka, dan juga membaca permintaan REST API daripada aplikasi bahagian hadapan.

Jadi, saya tertanya-tanya sama ada boleh menulis perkhidmatan yang boleh melakukan kedua-dua tugas pada masa yang sama:

  • Baca aliran mesej daripada Kafka
  • Baca permintaan REST API

Hanya dalam 1 perkhidmatan, seperti dalam Go.

Adakah ini idea yang bagus?

Penyelesaian

Ya, anda pasti boleh menulis perkhidmatan Go yang menggunakan Kafka dan mendedahkan titik akhir REST. Walau bagaimanapun, ini bukan keputusan reka bentuk yang ideal.

Sistem penstriman berasaskan Kafka membolehkan komunikasi tak segerak antara pengeluar dan pengguna. Walau bagaimanapun, sistem berasaskan API REST berkomunikasi secara serentak antara pemanggil dan penerima.

Jaminan ketersediaan adalah berbeza antara komunikasi mod segerak dan segerak. Sistem berdasarkan Kafka Streams akan mempunyai jaminan ketersediaan yang berbeza daripada REST API. Dalam sistem penstriman, kami menumpukan pada pemprosesan mesej, manakala dalam komunikasi segerak hujung ke hujung, kependaman adalah kebimbangan utama (anda tidak mahu membuat pemanggil menunggu lama untuk mendapatkan hasilnya).

Jika kita meletakkan dua jenis sistem ini dalam satu perkhidmatan, sukar untuk mengetahui ketersediaan perkhidmatan tersebut. Selain itu, bahagian tak segerak atau segerak bagi sesuatu perkhidmatan mungkin dimainkan dalam jiran yang bising di sisi lain, menjadikan perkhidmatan itu tidak tersedia.

Jadi, secara amnya, adalah disyorkan untuk menganggap API berasaskan REST dan aliran Kafka sebagai dua perkhidmatan bebas.

Atas ialah kandungan terperinci Adakah mungkin untuk mencipta perkhidmatan dalam Go yang kedua-duanya menggunakan aliran mesej (dari Kafka) dan membaca permintaan API REST?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam