Kata pengantar
Spring Cloud adalah kerangka kerja lengkap untuk mengimplementasikan layanan microser berdasarkan boot musim semi. Ini menyediakan komponen yang diperlukan untuk pengembangan layanan mikro seperti manajemen konfigurasi, penemuan layanan, pemutus sirkuit, perutean cerdas, agen mikro, bus kontrol, kunci global, kampanye keputusan, sesi terdistribusi dan manajemen negara klaster. Yang paling penting adalah jika Anda menggunakannya dengan Spring Boot Framework, itu akan membuat Anda sangat nyaman untuk mengembangkan layanan cloud dengan arsitektur Microservice. Spring Cloud berisi banyak subframe, di antaranya Spring Cloud Netflix adalah salah satu kerangka kerja yang dikembangkan oleh Netflix dan kemudian dimasukkan ke dalam keluarga Spring Cloud. Modul utamanya meliputi: penemuan layanan, pemutus sirkuit dan pemantauan, perutean cerdas, penyeimbangan beban klien, dll.
Artikel ini akan memperkenalkan kepada Anda konten yang relevan dari komponen Spring Cloud Timeout, dan membaginya untuk referensi dan pembelajaran Anda. Saya tidak akan banyak bicara di bawah ini, mari kita lihat perkenalan yang terperinci bersama.
Batas waktu pita
Pengaturan Global:
Pita: ReadTimeout: 60000ConnectTimeout: 60000
Pengaturan lokal:
Layanan-ID: Pita: Readtimeout: 1000ConnectTimeout: 1000
Di antara mereka, Layanan-ID adalah nama host virtual yang digunakan oleh Ribbon, yang umumnya sama dengan nama layanan yang terdaftar di Eureka Server, yaitu sama dengan spring.application.name .
Waktu tunggu waktu
Dimulai dengan Spring Cloud Edgware, peti mendukung mengkonfigurasi batas waktu dengan properti:
Petushing: Klien: Config: FignName: ConnectTimeout: 5000 Readtimeout: 5000
Untuk versi lama, Anda dapat menulis feign.Request.Options , lihat: org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClientAutoConfiguration#feignRequestOptions .
Batas waktu resttemplate
Beberapa kali, kita dapat menggunakan restemplate, mis.
@Bean@loadbalacedpublic resttemplate restTemplate () {return new resttemplate ();}Saat ini, batas waktu dapat diatur dengan cara berikut:
@Bean@loadbalancedpublic resttemplate restTemplate () {SimpleClientHttprequestFactory SimpleClientHttprequestFactory = SimpleClientHttPRequectory (1000); SimpleTrecquestFactory.sEpleTrIctory (1000); SimplePrecQuestory. RestTemplate baru (SimpleClientHttPRequestFactory);}Timeout Zuul
Batas waktu Zuul lebih rumit karena Zuul mengintegrasikan Ribbon dan Hystrix. Berikut ini adalah dua situasi:
Jika rute Zuul menggunakan pita
Kemudian: Timeout Zuul terkait dengan Ribbon dan Hystrix. Pada saat ini, batas waktu Zuul dapat dikonfigurasi serupa dengan yang berikut:
Hystrix: Perintah: Default: Eksekusi: Isolasi: Thread: TimeoutInmilliseconds: 1000Ribbon: Readtimeout: 1000 ConnectTimeout: 1000
Analisis Kode: Dalam hal ini, filter yang digunakan untuk penerusan Zuul adalah org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter , yang mengintegrasikan hystrix dan pita.
Jika rute Zuul tidak menggunakan pita
Misalnya: Konfigurasi perutean Zuul adalah sebagai berikut:
Zuul: Rute: Rute Pengguna: # Dalam metode konfigurasi ini, rute pengguna hanya memberikan rute nama dan dapat disebutkan namanya sesuka hati. URL: http: // localhost: 8000/ # Jalur URL yang ditentukan:/pengguna/** # Path yang sesuai dengan URL.
Kemudian, batas waktu Zuul saat ini hanya terkait dengan dua konfigurasi berikut:
Zuul: Host: socket-timeout-millis: 10000 connect-timeout-millis: 2000
Analisis Kode: Cara untuk secara langsung mengonfigurasi perutean URL tidak digunakan untuk pita atau hystrix. Filter yang digunakan untuk penerusan Zuul adalah org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter . Dalam filter ini, Zuul menggunakan Apache httpClient untuk meneruskan.
Dalam skenario nyata, kadang -kadang dua metode perutean dapat digunakan dalam kombinasi, sehingga Anda disarankan untuk mengkonfigurasi semua atribut di atas.
Hystrix Timeout
Hystrix: Perintah: Default: Eksekusi: Timeout: Diaktifkan: True Isolation: Thread: TimeoutInmilliseconds: 1000
Seperti di atas, batas waktu default untuk Hystrix adalah 1 detik. Mekanisme batas waktu diaktifkan secara default. Untuk mematikan batas waktu Hystrix, atur xxx.enabled menjadi false.
Tips
Jika suatu komponen digunakan dengan Hystrix, umumnya disarankan bahwa Hystrix Timeout> Komponen lain batas waktu, jika tidak dapat menyebabkan fitur RETRY gagal.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.