Rumah > Java > javaTutorial > teks badan

Tadbir urus perkhidmatan dan kaedah pelaksanaan pengehadan semasa berdasarkan Spring Boot

WBOY
Lepaskan: 2023-06-23 11:16:36
asal
751 orang telah melayarinya

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.

  1. Pengimbangan Beban

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.

  1. Pendaftaran dan penemuan 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.

  1. Komunikasi antara 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);
}
Salin selepas log masuk

Panggil perkhidmatan: <. 🎜>

@Autowired
private UserService userService;

public User getUserById(Long id) {
    return userService.findUserById(id);
}
Salin selepas log masuk

Melalui kaedah di atas, anda boleh menggunakan Feign untuk melaksanakan panggilan antara perkhidmatan.

2. Pengehadan Semasa

Dalam 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.

    Pemutus litar Hystrix
Hystrix ialah rangka kerja tahan kerosakan sumber terbuka oleh Netflix, yang boleh merealisasikan kemerosotan perkhidmatan, pengasingan kerosakan, pemutus litar dan fungsi lain. Dalam Spring Cloud, pengehadan semasa boleh dicapai dengan menggunakan komponen Hystrix.

Contoh kod:

@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");
}
Salin selepas log masuk

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.

    Anotasi mengehadkan semasa
Spring Cloud Gateway menyediakan cara untuk melaksanakan pengehadan semasa melalui anotasi Anda boleh melaksanakan pengehadan antara muka dengan menambahkan anotasi @RequestRateLimiter pada laluan , kaedah pelaksanaan khusus adalah seperti berikut:

Tentukan pengehad semasa:

@Bean
RedisRateLimiter redisRateLimiter() {
    return new RedisRateLimiter(1, 1);
}
Salin selepas log masuk

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();
}
Salin selepas log masuk
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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!