Bayangkan anda mempunyai sebuah restoran. Setiap chef pakar dalam satu perkara—piza, sushi, pencuci mulut atau minuman. Daripada satu dapur besar mengendalikan segala-galanya, setiap chef menjalankan dapur mini mereka sendiri. Setiap dapur mini mempunyai semua yang diperlukan untuk berfungsi, dan ia berfungsi secara bebas. Itulah perkhidmatan mikro dalam dunia perisian!
Apakah Perkhidmatan Mikro?
Perkhidmatan mikro ialah satu cara untuk mereka bentuk aplikasi perisian sebagai koleksi perkhidmatan kecil yang serba lengkap, masing-masing dengan tugas tertentu. Perkhidmatan ini boleh berkomunikasi antara satu sama lain tetapi digabungkan secara longgar—seperti chef bebas kami.
Bagaimana Ia Berbeza dengan Seni Bina Monolitik?
-
Monolith: Satu dapur besar tempat semua orang bekerja bersama. Jika ketuhar pizza pecah, semuanya menjadi perlahan.
-
Perkhidmatan Mikro: Asingkan dapur mini. Jika ada yang pecah (cth., tukang masak sushi tiada), yang lain terus berkhidmat.
Ciri Utama Perkhidmatan Mikro
Tanggungjawab Tunggal:
Setiap perkhidmatan melakukan satu perkara dengan sangat baik, seperti chef kami.
Gandingan Longgar:
Perkhidmatan berfungsi secara bebas. Membetulkan satu perkhidmatan tidak mengganggu yang lain.
Kemerdekaan Teknologi:
Setiap perkhidmatan boleh menggunakan alatan dan bahasanya sendiri. Contohnya, tukang masak piza lebih suka ketuhar yang dibakar kayu, manakala tukang masak sushi menggemari periuk nasi.
Skalabiliti:
Anda boleh menskalakan perkhidmatan tertentu berdasarkan permintaan. Jika tempahan pizza melambung tinggi, cuma upah lebih ramai tukang masak pizza.
Ketahanan:
Jika satu perkhidmatan gagal, yang lain terus berjalan. Jika pencuci mulut sudah habis, anda masih boleh menikmati piza dan minuman.
Bagaimana Perkhidmatan Mikro Bercakap?
Dalam seni bina perkhidmatan mikro, perkhidmatan perlu berkomunikasi, sama seperti tukang masak di dapur berasingan. Mereka biasanya melakukan ini dalam dua cara:
-
Komunikasi Segerak:
- Perkhidmatan bercakap antara satu sama lain secara langsung, seperti membuat panggilan atau menghantar mesej.
- Contoh: Menggunakan REST API atau gRPC.
-
Komunikasi Tak Segerak:
- Perkhidmatan meninggalkan mesej antara satu sama lain, seperti nota melekit pada peti sejuk.
- Contoh: Menggunakan broker mesej seperti Kafka, RabbitMQ atau SQS.
Bilakah Anda Harus Menggunakan Perkhidmatan Mikro?
Perkhidmatan mikro hebat apabila:
- Aplikasi anda semakin berkembang dan semakin sukar untuk diurus.
- Pasukan yang berbeza bekerja pada bahagian sistem yang berbeza.
- Anda mahu menskalakan ciri tertentu secara bebas.
- Masa henti untuk satu bahagian tidak sepatutnya menjejaskan keseluruhan sistem.
Komponen Teras dalam Perkhidmatan Mikro
Berikut ialah alatan dan corak penting yang akan anda temui:
1. Gerbang API
- Bertindak sebagai pintu hadapan.
- Menghalakan permintaan ke perkhidmatan yang betul dan mengendalikan tugas seperti pengesahan.
- Anggaplah ia sebagai maître d' yang mengarahkan tetamu ke chef yang betul.
2. Penemuan Perkhidmatan
- Menjejaki lokasi perkhidmatan.
- Alat contoh: Konsul, Netflix Eureka atau Peta Awan AWS.
- Ia seperti direktori restoran untuk mencari tukang masak.
3. Pangkalan Data Setiap Perkhidmatan
- Setiap perkhidmatan menguruskan pangkalan datanya sendiri, memastikan kebebasan.
- Contoh: Tukang masak pizza menyimpan resipi pizza; chef sushi ada resipi sushi.
- Jenis pangkalan data:
-
SQL: Pangkalan data perhubungan seperti MySQL atau PostgreSQL.
-
NoSQL: Berasaskan dokumen seperti MongoDB atau CosmosDB.
4. Corak Ketahanan
- Pemutus Litar: Berhenti memanggil perkhidmatan yang gagal, seperti melangkau sushi jika tukang masak keluar.
- Cuba Semula Logik: Cuba panggil perkhidmatan sekali lagi jika ia gagal buat sementara waktu.
- Alat contoh: Netflix Hystrix, Resilience4J.
Merancang Perkhidmatan Mikro
Fikirkan untuk mereka bentuk perkhidmatan mikro seperti merancang restoran dengan pelbagai dapur.
1. Tentukan Sempadan
- Tugas berkaitan kumpulan. Cth., perkhidmatan untuk pesanan, satu lagi untuk pembayaran.
2. Elakkan Terlalu Berkomunikasi
- Perkhidmatan harus berkongsi maklumat yang minimum. Terlalu banyak bersembang memperlahankan keadaan.
3. Perkhidmatan Decouple
- Gunakan sistem pemesejan untuk mengurangkan pergantungan.
- Contoh: Tukang masak piza tidak perlu bertanya terus kepada tukang masak minuman tentang ketersediaan soda. Mereka menyemak sistem inventori kongsi.
Cabaran dengan Perkhidmatan Mikro
Perkhidmatan mikro bukan semua cahaya matahari dan piza. Mereka datang dengan cabaran:
-
Kerumitan:
- Menguruskan banyak perkhidmatan adalah lebih sukar daripada satu perkhidmatan besar.
-
Ketekalan Data:
- Memandangkan setiap perkhidmatan mempunyai pangkalan data sendiri, memastikan data yang konsisten boleh menjadi rumit.
-
Latensi:
- Komunikasi antara perkhidmatan menambah kelewatan.
-
Menyahpepijat:
- Menjejak isu merentas pelbagai perkhidmatan boleh dirasakan seperti menyelesaikan misteri.
Amalan Terbaik
Berikut ialah cara untuk menjayakan seni bina perkhidmatan mikro anda:
-
Mula Kecil:
- Jangan pecahkan segala-galanya kepada perkhidmatan mikro sejak hari pertama. Mulakan dengan komponen utama.
-
Pastikan API Mudah:
- Elakkan protokol komunikasi yang terlalu rumit.
-
Gunakan Alat Pemantauan:
- Jejaki perkara yang berlaku merentas perkhidmatan menggunakan alatan seperti Prometheus, Grafana atau ELK Stack.
-
Automasikan Pengedaran:
- Gunakan Docker dan Kubernetes untuk mengurus perkhidmatan dengan cekap.
-
Peluk CI/CD:
- Automasikan saluran paip ujian dan penggunaan menggunakan alatan seperti GitHub Actions atau Jenkins.
Alat untuk Bermula
Berikut ialah kotak alat anda untuk membina perkhidmatan mikro:
Bahasa Pengaturcaraan:
- Gunakan Java, Python, Node.js atau Go—apa sahaja yang pasukan anda selesa.
Kerangka:
-
Java: Spring Boot (dengan Spring Cloud untuk perkhidmatan mikro).
-
Node.js: Express.js.
Pebekalan:
- Gunakan Docker untuk membungkus perkhidmatan.
- Contoh Fail Docker:
FROM openjdk:11
COPY target/my-service.jar /app/my-service.jar
ENTRYPOINT ["java", "-jar", "/app/my-service.jar"]
Salin selepas log masuk
Orkestrasi:
- Gunakan Kubernetes untuk mengurus perkhidmatan secara berskala.
Pemesejan:
- Untuk komunikasi tak segerak, gunakan RabbitMQ atau Apache Kafka.
Contoh Perkhidmatan Mikro Kehidupan Sebenar
Netflix:
- Mengurus berjuta-juta pengguna dan peranti dengan perkhidmatan mikro.
- Setiap perkhidmatan mengendalikan tugas tertentu: pengesyoran kandungan, pengebilan, penstriman, dll.
Amazon:
- Memproses berbilion-bilion transaksi menggunakan perkhidmatan mikro untuk inventori, penghantaran dan pembayaran.
Pemikiran Akhir
Perkhidmatan mikro membawa fleksibiliti, skalabiliti dan daya tahan pada aplikasi anda. Tetapi seperti menjalankan beberapa dapur, mereka memerlukan perancangan dan pengurusan yang teliti. Mulakan dari kecil, kekal teratur dan pilih alatan yang betul. Dengan latihan, anda akan menguasai perkhidmatan mikro seperti restoran yang dikendalikan dengan baik berkembang pesat!
Perlu menyelam lebih mendalam ke kawasan tertentu, seperti menyediakan perkhidmatan mikro dalam Spring Boot atau menggunakan Kubernetes? Beritahu saya! ?
Atas ialah kandungan terperinci Microservices: Panduan Mesra, Bermanusia. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!