Dalam sistem terdistribusi, file konfigurasi tersebar di setiap proyek, membuatnya sulit untuk dikelola secara terpusat, atau jika konfigurasi dimodifikasi, perlu dihidupkan ulang sebelum dapat berlaku. Selanjutnya, kami menggunakan Spring Cloud Config untuk menyelesaikan titik rasa sakit ini.
Server konfigurasi
Kami menggunakan config-server sebagai server konfigurasi dan hanya perlu menambahkan dependensi:
<dependency> <GroupId> org.springframework.cloud </groupid> <ArTifactId> spring-cloud-config-server </t Artifactid> </dependency>
Di Application.yml, konfigurasikan:
spring: application: name: config-server # Name cloud: config: server: git: uri: file://Users/yangdd/Documents/code/GitHub/config-repo # Use local repository (for testing), format: file://${user.home}/config-repo If it is Windows, it is file://${user.home}/config-repo #uri: https://github.com/yangdd1205/spring-cloud-master/ #username: nama pengguna #kata sandi: kata sandi #default-label: konfigurasi #dapat menjadi id komit, nama cabang, nama tag, nilai default adalah master #pencarian-path: dengan kata lain, selain mencari file konfigurasi di root,Proyek musim semi umumnya memiliki prinsip "konvensi lebih besar dari konfigurasi". Oleh karena itu, file konfigurasi dalam GIT kami umumnya dinamai setelah {application}-{profile} .yml atau {application}-{profile} .properties.
Kami memiliki dua file client-dev.yml di cabang master config-repo:
Info: Master-dev
client-prod.yml:
Info: Master-Prod
Di cabang konfigurasi, ada dua file client-dev.yml:
Info: config-dev
client-prod.yml:
Info: Config-Prod
Mulai Konfigurasi-Server Kami dapat mengakses file konfigurasi di git melalui hubungan pemetaan berikut:
/{Application}/{profile} media/{label} media/{Application}-{profile}.yml/{label}/{Application}-{profile}.yml/{Pplication}.mrofile.yml/{Pplication-{ {profile}.properties/.inprofilehttp: // localhost: 4001/client-dev.yml
Klien Konfigurasi
Kami menggunakan config-klien sebagai klien konfigurasi dan menambahkan dependensi:
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-web </stifactid> <dependency> <groupid> org.springframework.cloud </groupid> <Artifactid> Spring-cloud-starter-configy <tartif/artacid> <titifactid> <artifactid> <arttifactid> <artfactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <arttifactid> <cropacter> <cropacter> <cropact-starter-config-config/art
Konfigurasi di bootstrap.yml (bootstrap.yml akan memuat sebelum application.yml):
Spring: Aplikasi: Nama: Cloud Klien: Konfigurasi: URI: http: // localhost: 4001/## mewakili alamat Profil Pusat Konfigurasi: Dev # setara dengan spring.profiles. Atribut AKTIF, tetapi prioritasnya lebih tinggi dari label SPRING.Profiles.
Buat TestController di Config-Client:
@RestControllerPublic kelas testController {@value ("$ {info}") Info string pribadi; @RequestMapping (value = "/getInfo") Public String getInfo () {return this.info; }}Kunjungi http: // localhost: 4002/getInfo
Ubah profil di file konfigurasi config-client untuk mendorong dan mengaksesnya untuk melihat hasilnya.
Sekarang kami telah mengimplementasikan file konfigurasi untuk mengelolanya dengan cara yang terpadu, tetapi setelah memodifikasi file konfigurasi, bagaimana kami tidak dapat memulai kembali dan berlaku?
Kami memperkenalkan dependensi di Config-Client:
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-aktuator </stifactid> </dependency>
Tambahkan anotasi @refreshscope ke kelas yang membutuhkan penyegaran dinamis, di sini kami menambahkannya ke testController. Dan nonaktifkan otentikasi izin aktuator dalam file konfigurasi:
Manajemen: Keamanan: Diaktifkan: Salah
Restart proyek, http: // localhost: 4002/getInfo Hasilnya adalah: config-dev, dan sekarang memodifikasi file config-dev.yml:
Info: config-dev-1.0
Hubungi metode aktuator dan menyegarkan secara manual. http: // localhost: 4002/Refresh Catatan: Itu harus menjadi metode pos. Anda dapat melihat perubahan apa itu:
["info"]
Kunjungi http: // localhost: 4002/getInfo lagi dan hasilnya adalah: config-dev-1.0.
Kami menemukan bahwa meskipun konfigurasi dapat disegarkan secara dinamis, metode penyegaran harus dipanggil secara manual setiap saat. Jika saya memiliki 1.000 layanan, saya harus menyebutnya 1.000 kali. Apakah ada cara yang lebih baik? Yaitu menggunakannya bersamaan dengan bus Cloud Spring.
Sangat tersedia
Sekarang server konfigurasi kami adalah layanan titik tunggal, dan setelah klien konfigurasi terakhir digantung, itu tidak akan digunakan. Jadi dalam generasi, server konfigurasi harus sangat tersedia, jadi bagaimana melakukannya? Ini sangat sederhana. Sama seperti ketersediaan tinggi Eureka yang disebutkan sebelumnya, Anda hanya perlu menggunakan beberapa server konfigurasi lagi.
Kami menggunakan proyek Eureka sebagai pusat pendaftaran dengan port: 7001.
Salin konfigurasi-server ke config-server-1, dengan port: 4003, dan daftarkan kedua server konfigurasi ke pusat registri.
Register Config-Client ke Registry dan tentukan untuk mendapatkan server konfigurasi dari Eureka:
Spring: Cloud: Config: #uri: http: // localhost: 4001/## mewakili alamat pusat konfigurasi, secara langsung menentukan Profil Alamat Server Konfigurasi: Dev #Label: Config Discovery: Diaktifkan: Benar # Diaktifkan untuk mendapatkan layanan konfigur
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.