Rumah  >  Artikel  >  Java  >  Reka bentuk dan pelaksanaan seni bina perkhidmatan mikro bersepadu Spring Cloud

Reka bentuk dan pelaksanaan seni bina perkhidmatan mikro bersepadu Spring Cloud

WBOY
WBOYasal
2023-06-22 10:42:091416semak imbas

Dengan pembangunan Internet yang berterusan, semakin banyak perusahaan memilih untuk membahagikan perniagaan mereka kepada subsistem yang berbeza untuk mengelakkan sistem membebankan dan tidak dapat diselenggara. Kerana ini memudahkan pembangun untuk menyelenggara dan mengemas kini, sambil mengekalkan ketersediaan dan prestasi yang tinggi apabila berurusan dengan konkurensi yang tinggi dan volum data yang besar. Dan seni bina sedemikian adalah seni bina perkhidmatan mikro.

Kelebihan seni bina perkhidmatan mikro memang terserlah, tetapi dalam proses seni bina, pelbagai masalah perit perlu diatasi. Contohnya, cara menyelesaikan kebergantungan antara perkhidmatan, cara menyelesaikan ketaksediaan perkhidmatan yang disebabkan oleh gangguan rangkaian dan cara mendayakan setiap perkhidmatan mengurus statusnya sendiri semasa kitaran hayatnya sendiri. Ini memerlukan alat untuk melaksanakan seni bina perkhidmatan mikro, dan Spring Cloud ialah alat sedemikian.

Spring ialah rangka kerja pembangunan yang sangat popular yang menyediakan banyak komponen untuk melaksanakan fungsi perniagaan Dengan keperluan seni bina perkhidmatan mikro, Spring juga menyediakan kami dengan pelbagai komponen yang diperlukan dalam seni bina perkhidmatan mikro dengan memperkenalkan jenis perkhidmatan. Spring Cloud mengandungi banyak sub-projek, seperti Netflix Eureka, Netflix Ribbon, Zuul, dsb., yang boleh membantu kami membina dan menggunakan aplikasi perkhidmatan mikro dengan cepat dan memastikan ia boleh beroperasi dengan cekap. Mari kita lihat cara melaksanakan seni bina perkhidmatan mikro berdasarkan Spring Cloud.

1. Pendaftaran perkhidmatan

Dalam seni bina perkhidmatan mikro, pendaftaran perkhidmatan adalah langkah yang sangat penting kerana ia membolehkan pelbagai perkhidmatan berkomunikasi dengan lebih cekap. Perkhidmatan ini harus menyediakan API pendaftaran supaya perkhidmatan lain boleh mengetahui tentang pelbagai perkhidmatan yang tersedia dan lokasinya melalui API ini. Untuk melaksanakan pendaftaran perkhidmatan, kami boleh menggunakan penyepaduan Netflix Eureka Spring Cloud. Eureka ialah pelayan pendaftaran perkhidmatan dan penemuan yang menyediakan mekanisme untuk memastikan ketersediaan tinggi. Berikut ialah contoh pendaftaran perkhidmatan untuk RocketMQ.

@EnableDiscoveryClient
@SpringBootApplication
public class RocketMQApplication {

    public static void main(String[] args) {
        SpringApplication.run(RocketMQApplication.class, args);
    }
}

Kami dapat melihat bahawa apabila memulakan Aplikasi, cuma tambah anotasi @EnableDiscoveryClient untuk melengkapkan pendaftaran perkhidmatan.

2. Penghalaan perkhidmatan

Penghalaan perkhidmatan ialah satu lagi kawasan yang patut diberi perhatian. Oleh kerana aplikasi seni bina perkhidmatan mikro biasanya terdiri daripada berbilang subsistem, komunikasi antara mereka menjadi kompleks, dan kebergantungan antara perkhidmatan juga menjadi kompleks. Fungsi gerbang perkhidmatan adalah untuk memproses permintaan secara seragam daripada keseluruhan aplikasi dan membentangkan antara muka perkhidmatan yang konsisten kepada pelanggan. Zuul ialah perkhidmatan gerbang yang disediakan oleh Spring Cloud yang bertanggungjawab untuk penghalaan permintaan dan akses perkhidmatan Ia boleh mengarahkan penghalaan berdasarkan padanan laluan permintaan.

3. Pengimbangan beban perkhidmatan

Dalam sistem trafik tinggi yang serentak, pengimbangan beban perkhidmatan adalah kunci untuk memastikan ketersediaan sistem yang tinggi. Reben adalah alat untuk menyelesaikan masalah ini. Ia membantu kami mengkonfigurasi pengimbang beban dengan mudah berdasarkan seni bina perkhidmatan mikro. Pertama, kita boleh menggunakan anotasi @LoadBalanced untuk membolehkan RestTemplate diproksikan oleh Ribbon. Kemudian gunakan nama perkhidmatan (bukan URL) dalam restTemplate untuk memanggil perkhidmatan untuk mencapai pengimbangan beban.

4. Toleransi kesalahan perkhidmatan

Toleransi kesalahan perkhidmatan ialah satu lagi faktor yang sangat penting. Kita perlu memastikan bahawa setiap perkhidmatan menguruskan keadaannya sendiri semasa kitaran hayatnya dan boleh dipulihkan dan keluar dengan selamat jika perkhidmatan lain menghadapi masalah. Menggunakan Hystrix untuk melaksanakan toleransi kesalahan perkhidmatan adalah sangat mudah.

Netflix Hystrix ialah pustaka penutupan yang tertangguh dan tahan terhadap kesalahan. Ia memberikan kami mekanisme sandaran untuk memastikan bahawa kami masih boleh mendapatkan respons yang berguna sekiranya berlaku ralat perkhidmatan atau tamat masa respons. Mari kita lihat penggunaannya:

@Service
public class StockService {

    @Autowired
    private ProductService productService;

    @Autowired
    private StockFallback stockFallback;

    @HystrixCommand(fallbackMethod = "getStockFallback")
    public Integer getStock(Long productId) {
        Product product = productService.findProductById(productId);
        if (product == null) {
            return stockFallback.getStockFallback(productId);
        } else {
            // TODO: do something
            return 0;
        }
    }

    private Integer getStockFallback(Long productId) {
        return -1;
    }
}

@Component
public class StockFallback implements StockService {

    @Override
    public Integer getStock(Long productId) {
        return -1;
    }
}

Kita dapat melihat bahawa apabila ralat berlaku semasa memanggil perkhidmatan produk, perkhidmatan inventori akan mendapat respons ralat dengan memanggil kaedah panggil balik getStockFallback.

5. Penjejakan perkhidmatan

Dalam seni bina perkhidmatan mikro, anda memerlukan alat penjejakan yang baik yang boleh membantu anda memahami operasi dan prestasi setiap perkhidmatan dalam sistem. Zipkin ialah sistem pengesanan teragih yang boleh membantu anda mencapai fungsi ini dengan mudah.

6. Penggunaan perkhidmatan

Pengaturan perkhidmatan ialah langkah terakhir dalam pembangunan sistem. Memandangkan setiap perkhidmatan dalam seni bina perkhidmatan mikro adalah bebas, penggunaan perkhidmatan menjadi sangat mudah. Sebagai alat kontena yang sangat popular, Docker boleh memberikan kami penyelesaian yang pantas dan boleh dipercayai untuk penggunaan perkhidmatan.

Kesimpulan

Seni bina perkhidmatan mikro menjadi pilihan pertama untuk semakin banyak perusahaan. Untuk melaksanakan seni bina perkhidmatan mikro, kami memerlukan alat yang boleh dipercayai, dan Spring Cloud ialah alat sedemikian. Ia menyelesaikan semua masalah yang diperlukan dalam seni bina mikroperkhidmatan seperti pendaftaran perkhidmatan, penghalaan perkhidmatan, pengimbangan beban perkhidmatan, toleransi kesalahan perkhidmatan, pengesanan perkhidmatan dan penggunaan perkhidmatan dalam sehenti. Oleh itu, kami boleh bergantung pada Spring Cloud untuk menjadikan aplikasi kami berjalan dengan lebih cekap.

Atas ialah kandungan terperinci Reka bentuk dan pelaksanaan seni bina perkhidmatan mikro bersepadu Spring Cloud. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn