Micro-Services kullanarak bir uygulama tasarlıyorum ve birden çok hizmetten veri toplamak için kullanılacak en iyi mekanizmadan emin değilim.
İki seçenek olduğuna inanıyorum:
- Servislerin doğrudan konuşmasını sağlayan bir 'servisler arası' iletişim mekanizmasını entegre edin. API Ağ Geçidi, birleştirilmiş servisi API Ağ Geçidine vermeden önce, veri toplamak için diğer servisleri çağıran ayrı bir servis arayacaktır. API daha sonra arayana cevap verir. (Bu servisB çağrısı serviceA'dan gelen bir yanıt gerektirdiğinde çağrıları senkronize etmek zorunda kalacaktır. IE Ayrı Kişi ve Adres Servisleri.)
- API Ağ Geçidinin her servisi doğrudan aramasını ve yanıtı döndürmeden önce API içindeki verileri birleştirmesini sağlayın.
İkinci seçeneğe yaslanıyorum, çünkü hizmetlerin birbiriyle konuşması eşleşmeyi sağlayacak, bu durumda sadece monolitik bir uygulama tasarlayabilirim. Ancak, bu seçenekle kafamın üstünden düşünülebilecek birkaç ciddi dezavantaj var:
API'nin birden fazla servisi birden fazla çağrı yapmasını sağlamak, özellikle bu çağrıların bazıları engellediğinde API sunucusundaki yükü artırır.
Bu yöntem, API'nin, uygulamanın ne yapmaya çalıştığının farkında olduğunu bilmesi gerektiği anlamına gelir (IE Logic, sırayla hizmetleri çağırmak ve ardından verileri birleştirmek için API'ye programlanmalıdır). mikro hizmetler için aptal bir 'uç nokta' gibi davranır.
Bu soruna standart yaklaşımın ne olduğunu ve eksik olduğum üçüncü bir seçenek varsa bilmek ister misiniz?