Dengan pembangunan Internet, seni bina sistem yang diedarkan telah menarik lebih banyak perhatian dan aplikasi. Dalam seni bina yang diedarkan, bilangan dan kerumitan perkhidmatan akan meningkat dengan ketara Bagi memastikan ketersediaan tinggi dan prestasi tinggi sistem, tadbir urus perkhidmatan dan pengehadan semasa telah menjadi salah satu isu yang mesti diselesaikan. Artikel ini akan memperkenalkan tadbir urus perkhidmatan dan kaedah pelaksanaan pengehadan semasa berdasarkan Spring Boot.
1. Tadbir urus perkhidmatan
Tadbir urus perkhidmatan ialah bahagian yang sangat penting dalam seni bina teragih, malah ia lebih penting dalam seni bina perkhidmatan mikro. Spring Cloud, sebagai rangka kerja mikro perkhidmatan berdasarkan Spring Boot, menyediakan penyelesaian lengkap untuk tadbir urus perkhidmatan.
Apabila perkhidmatan dipanggil oleh berbilang pelanggan, cara mengagihkan permintaan kepada berbilang kejadian perkhidmatan untuk mencapai pengimbangan beban. Spring Cloud menyediakan komponen pengimbangan beban Ribbon, yang boleh mendapatkan senarai kejadian perkhidmatan dalam pusat pendaftaran perkhidmatan dan menggunakan algoritma pengimbangan beban khusus untuk menghantar permintaan kepada setiap tika perkhidmatan.
Dalam sistem yang diedarkan, sesetengah perkhidmatan perlu memanggil perkhidmatan lain, jadi pendaftaran perkhidmatan berpusat dan mekanisme penemuan diperlukan. Spring Cloud menyediakan komponen Eureka, yang boleh merealisasikan pendaftaran perkhidmatan automatik dan fungsi penemuan Pembangun hanya perlu memperkenalkan pergantungan pelanggan Eureka, mendaftarkan perkhidmatan dalam pelayan Eureka, dan kemudian menemui dan memanggilnya melalui nama perkhidmatan.
Dalam seni bina perkhidmatan mikro, komunikasi antara perkhidmatan boleh dilaksanakan menggunakan pelbagai protokol seperti HTTP, TCP, AMQP dan sebagainya. Spring Cloud menyediakan komponen Feign, yang boleh melaksanakan komunikasi antara perkhidmatan dengan mentakrifkan anotasi pada antara muka Pelaksanaan khusus adalah seperti berikut:
Tentukan klien Feign:
@FeignClient(name = "user-service") public interface UserService { @GetMapping("/user/{id}") User findUserById(@PathVariable("id") Long id); }
Panggil perkhidmatan: <.>
@Autowired private UserService userService; public User getUserById(Long id) { return userService.findUserById(id); }Melalui kaedah di atas, anda boleh menggunakan Feign untuk melaksanakan panggilan antara perkhidmatan. 2. Pengehadan SemasaDalam seni bina perkhidmatan mikro, pengehadan semasa adalah langkah yang sangat perlu untuk mengelakkan keruntuhan sistem yang disebabkan oleh lebihan perkhidmatan. Spring Cloud menyediakan pelbagai penyelesaian mengehadkan semasa.
@RequestMapping("/getUser/{id}") @HystrixCommand(fallbackMethod = "getUserFallback") public User getUser(@PathVariable("id") Long id) { return userService.getUserById(id); } // fallback回调方法 private User getUserFallback(Long id) { return new User(id, "defaultUsername", "defaultPassword"); }Dengan menambahkan anotasi @HystrixCommand pada kaedah yang diminta dan menyatakan kaedah panggil balik sandaran, apabila panggilan perkhidmatan gagal atau tamat masa, kaedah sandaran akan dipanggil untuk kembali nilai lalai.
@Bean RedisRateLimiter redisRateLimiter() { return new RedisRateLimiter(1, 1); }Tambah anotasi mengehadkan semasa pada laluan:
@Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route(r -> r.path("/user/**") .filters(f -> f.requestRateLimiter(c -> c.setRateLimiter(redisRateLimiter()))) .uri("lb://user-service")) .build(); }Dengan menambahkan anotasi @RequestRateLimiter pada laluan, anda boleh Hadkan aliran semasa pada antara muka untuk mengelakkan beban perkhidmatan. Ringkasnya, Spring Cloud menyediakan tadbir urus perkhidmatan yang lengkap dan penyelesaian pengehadan semasa Pembangun boleh memilih komponen yang sesuai untuk melaksanakan tadbir urus perkhidmatan dan pengehadan semasa mengikut situasi sebenar.
Atas ialah kandungan terperinci Tadbir urus perkhidmatan dan kaedah pelaksanaan pengehadan semasa berdasarkan Spring Boot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!