Son zamanlarda mikro hizmetler hakkında çok şey okudum ve işte şimdiye kadar aldığım sonuçlardan bazıları (herhangi bir noktada yanılıyorsam lütfen düzeltin).
- Mikro hizmetler mimarisi, etki alanına dayalı tasarımla uyumludur. Genellikle bir MS bir sınırlı bağlamı temsil eder.
- Mikro-servis A , mikro-servis B'de bulunan bir işlevsellik gerektiriyorsa , modelim muhtemelen yanlıştır ve A ve B aslında bir mikro-servis / BC olmalıdır.
- Mikro hizmetler arasındaki senkron iletişim (doğrudan HTTP istekleri) kötüdür, mikro hizmetlerin amacına meydan okumasına neden olur ve bileşenler arasında bağlantı kurulmasını sağlar.
- Hizmetler arasında zaman uyumsuz iletişim istenir. Hizmetler olayları ileti kuyruklarına yayımlamalıdır, böylece diğer hizmetler etkinliğin bir bölümünü abone edebilir ve işleyebilir veya içeriği için gerekli olan verilerin bir bölümünü çoğaltmak için kullanabilir. Bu şekilde, hizmetler senkronize iletişimde durum böyle olmayacak şekilde diğer hizmetler kapalı olsa bile istekleri işleyebilir.
- Mikro-hizmet A olayı yayınlarsa, mikro-servis B o etkinliğe abone olur ve sonuç olarak yeni bir olay üretirse, mikro-servis A yeni oluşturulan olayı işlememeli, çünkü bu dairesel bir bağımlılık olacaktır. Bu durumda, üçüncü mikro hizmetini tanıtmak gerekir, ya da birleştirmek A ve B için AB mikro hizmet.
- Mikro hizmet aslında yanıltıcı bir terimdir. Küçük bağlamlar için çabalamalıyız, ancak durum böyle olmak zorunda değil. Terim "mikro hizmet" değil, " iş hizmetini yapacak kadar büyük " olmalıdır.
- Mikro hizmetler, yeni işlevleri daha kolay ve tüm sistemi kıracağımızdan korkmadan sunmamızı sağlar. Yeni bir hizmet sunarak veya mevcut hizmetlerden birini yeniden düzenleyerek yapılabilir.
- Her mikro hizmetin kendi veri depolama alanı olmalıdır. Veri çoğaltma / çoğaltma bu mimaride istenen davranıştır.
Bu mimariyi anladığımı doğrulamak dışında, sorunun diğer kısmı çoğunlukla hizmet keşfi ile ilgili. Hizmetler eşzamansız olarak iletişim kuruyor ve amazon SQS gibi merkezi olay kuyruğunu kullanıyorsa, hizmet keşfinin mimaride böyle bir yeri olmadığı anlamına mı geliyor?
Hizmetler, sistemdeki diğer hizmetler hakkında bilgi sahibi olmamalıdır. Sadece bağlamlarının ve yayınlamaları ya da abone olmaları gereken olayların farkındalar mı?