ในบล็อกก่อนหน้านี้เราวางไฟล์การกำหนดค่าไว้ในบริการที่เกี่ยวข้องของเรา แต่มีข้อเสียอย่างหนึ่งในการทำสิ่งนี้ เมื่อการกำหนดค่าได้รับการแก้ไขแล้วเราจะต้องปิดตัวลงแล้วแก้ไขไฟล์การกำหนดค่าก่อนออนไลน์ หากมีบริการน้อยก็เป็นที่เข้าใจได้ว่าจะทำเช่นนี้ อย่างไรก็ตามหากมีบริการหลายร้อยรายการจำเป็นต้องมีการจัดการการกำหนดค่าแบบกระจายในเวลานี้ และ Spring Cloud Config ถูกสร้างขึ้นเพื่อแก้ปัญหานี้ ต่อไปนี้เป็นการรวมกันของ Gitlab เพื่อใช้การก่อสร้างศูนย์การกำหนดค่าแบบกระจาย ศูนย์การกำหนดค่าการกำหนดค่าสปริงคลาวด์ประกอบด้วยปลายเซิร์ฟเวอร์และปลายไคลเอนต์
วิชาบังคับก่อน: สร้างไฟล์กำหนดค่าใหม่ configserver-dev.properties ภายใต้โครงการใน gitlab
1. กำหนดค่าเซิร์ฟเวอร์
1. เพิ่มการพึ่งพา
<การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-config-Server </artifactid>
2. เปิดใช้งานการสนับสนุนในคลาสหลักของแอปพลิเคชัน
@EnableConFigServer
3. กำหนดค่าไฟล์ application.yml
เซิร์ฟเวอร์: พอร์ต: 8888 สปริง: แอปพลิเคชัน: ชื่อ: config cloud: config: เซิร์ฟเวอร์: git: uri: https://gitlab.xxx.com/xxxxx/xxxx.git # กำหนดค่าที่อยู่ของที่เก็บ gitlab โปรดทราบว่าเส้นทางค้นหา: /config-repo # ที่อยู่สัมพัทธ์ภายใต้ที่อยู่ที่เก็บ Gitlab สามารถกำหนดค่าด้วยหลายใช้และแยก ชื่อผู้ใช้: ชื่อผู้ใช้ของคุณ # Gitlab ที่เก็บบัญชีรหัสผ่าน: รหัสผ่านของคุณ # รหัสผ่านที่เก็บ gitlab
หมายเหตุ: หากไฟล์การกำหนดค่าถูกวางไว้ในไดเรกทอรีรูทของที่เก็บ Git ไม่จำเป็นต้องใช้พารามิเตอร์ SearchPaths ไฟล์การกำหนดค่าในตัวอย่างนี้อยู่ในไดเรกทอรี config-repo ดังนั้นให้ใช้พารามิเตอร์ SearchPaths เพื่อแจ้งให้เซิร์ฟเวอร์ config เพื่อค้นหาไดเรกทอรีย่อย config-repo
4. เริ่มเซิร์ฟเวอร์และป้อน http: // localhost: 8888/configserver/dev/master ในเบราว์เซอร์
{"ชื่อ": "configserver", "profiles": ["dev"], "label": "master", "version": "073cda9ce85a3eed00e406f4ebcc4651ee4d9b19" "https://gitlab.xxx.com/xxxxx/project/config-repo/configserver.properties", "แหล่งที่มา": {"ชื่อ": "chhliuxyh", "สวัสดี": "ฉันเป็นราชาแห่งโลก !!!คุณจะเห็นว่าฝั่งเซิร์ฟเวอร์สามารถอ่านไฟล์การกำหนดค่าจาก Gitlab แล้ว คุณสามารถเข้าถึงทรัพยากรบน Gitlab ในแบบฟอร์มด้านล่าง
/{application} /{profile} [ /{label}] /{Application}-{profile}.yml /{label}/ {Application}-{profile}.yml /{Application}-{profile}.yml /{Application} -profile}.propertiesตัวอย่างเช่น Enter: http: // localhost: 8888/configserver-dev.yml ในเบราว์เซอร์และผลลัพธ์มีดังนี้:
สวัสดี: ฉันเป็นราชาแห่งโลก !!! ชื่อ: Chhliuxyh Profile: Profile-Default
2. กำหนดค่าไคลเอนต์
1. เพิ่มการพึ่งพา POM
<การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Config </artifactid> </การพึ่งพาอาศัย> <การพึ่งพา> <roupId> org.springframework.boot </groupid>
2. กำหนดค่าไฟล์ bootstrap.yml
หมายเหตุ: ไฟล์การกำหนดค่าที่นี่จำเป็นต้องวางไว้ในไฟล์ bootstrap.properties หรือ bootstrap.yml เนื่องจากการกำหนดค่าของการกำหนดค่าจะนำหน้าแอปพลิเคชัน properties และการโหลดของ bootstrap.properties ยังนำหน้าด้วยแอปพลิเคชัน
เซิร์ฟเวอร์: พอร์ต: 8889 สปริง: แอปพลิเคชัน: ชื่อ: configserver # ต้องสอดคล้องกับคำนำหน้าของไฟล์การกำหนดค่า ตัวอย่างเช่นชื่อไฟล์การกำหนดค่าของเราที่นี่คือ configserver-dev.properties ดังนั้นเราจำเป็นต้องกำหนดค่าเป็น configserver cloud: config: uri: http: // localhost: 8888/// กำหนดค่าโปรไฟล์ URL ของเซิร์ฟเวอร์สปริงคลาวด์
3. ยืนยันลูกค้า
เพิ่มคอนโทรลเลอร์ใหม่ให้กับไคลเอนต์
แพ็คเกจ com.chhliu.springcloud.config; นำเข้า org.springframework.beans.factory.annotation.value; นำเข้า org.springframework.boot.springapplication; นำเข้า org.springframework.boot.autoconfigure.springbootapplication; นำเข้า org.springframework.cloud.context.config.annotation.refreshscope; นำเข้า org.springframework.web.bind.annotation.getMapping; นำเข้า org.springframework.web.bind.annotation.restcontroller; @springbootapplication @RestController @RefreshScope // คำอธิบายประกอบ @RefreshScope ระบุว่าไคลเอ็นต์ config ยังรีเฟรชค่าคุณสมบัติที่ฉีดเมื่อการกำหนดค่าเซิร์ฟเวอร์เปลี่ยนคลาสสาธารณะ SpringCloudCclientApplication } @Value ("$ {hello}") // อ่านคุณสมบัติในไฟล์กำหนดค่า Gitlab หากเราอ่านค่านั่นหมายความว่าไคลเอนต์เป็นโปรไฟล์สตริงส่วนตัว @getMapping ("/hello") สตริงสาธารณะสวัสดี () {return this.profile; -เยี่ยมชมในเบราว์เซอร์: http: // localhost: 8889/สวัสดีผลลัพธ์มีดังนี้:
ฉันเป็นราชาแห่งโลก !!!
ซึ่งหมายความว่าไคลเอนต์สามารถรับค่าจากเซิร์ฟเวอร์ได้แล้ว
3. การรีเฟรชแบบไดนามิก
อัปเดตการกำหนดค่าการจัดการสปริงคลาวด์การกำหนดค่าโดยไม่ต้องรีสตาร์ทไคลเอนต์
1. อัปเดตค่าคุณสมบัติที่สอดคล้องกับ Hello ในไฟล์การกำหนดค่า configserver-dev.properties ในที่เก็บ gitlab
2. เยี่ยมชม http: // localhost: 8888/configserver/dev/master และพบว่าเนื้อหาด้านเซิร์ฟเวอร์ได้รับการอัปเดต
3. ส่งคำขอโพสต์ไปยังลูกค้า conf http: // localhost: 8889/รีเฟรชและส่งคืน 200 ตกลง เยี่ยมชม http: // localhost: 8889/สวัสดีอีกครั้งจะเห็นได้ว่าค่าแอตทริบิวต์การอ่านได้รับการอัปเดตแบบไดนามิกโดยไม่ต้องรีสตาร์ทบริการลูกค้า
PS: เพื่อให้ได้การรีเฟรชแบบไดนามิกคุณต้องเพิ่มตัวเริ่มต้นต่อไปนี้ในไฟล์ POM
<การพึ่งพา> <roupId> org.springframework.boot </roupid> <ratifactid> Spring-Boot-Starter-Actuator </artifactid>
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น