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); }
@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"); }
@Bean RedisRateLimiter redisRateLimiter() { return new RedisRateLimiter(1, 1); }
@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(); }
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!