مقدمة إلى الشريط
في نظام موزع ، ستنشر كل خدمة microservice مثيلات متعددة. تتطلب كيفية توزيع مستهلكي الخدمة بالتساوي على مثيلات مزود خدمة متعددة استخدام موازنات التحميل.
RIBBON هو موازن الحمل ، الذي يوفر العديد من خوارزميات موازنة التحميل ، مثل الاقتراع ، وبعد ذلك ، بعد تكوين عنوان مزود الخدمة ، يمكن توزيع طلبات مستهلك الخدمة بالتساوي.
دمج الشريط لخدمة المستهلكين
أضف مكتبة تبعية الشريط
<Rependency> <roupled> org.springframework.boot </rougiD> <StifactId> Spring-Boot-Starter-Ribbobn </shintifactid> </sependency>
أضف addbalaced التعليق التوضيحي إلى RestTemplate لدمج RestTemplate و Ribbon
@bean@loadBalancedPublic RestTemplate RestTemplate () {return New RestTemplate () ؛}قم بتعديل وحدة التحكم وتعديل عنوان الطلب إلى http: // flim-user/user/. عند استخدام الشريط و eureka معًا ، سيتم تعيين اسم المضيف الظاهري تلقائيًا على عنوان شبكة الخدمات الدقيقة ، ويتم حقن loadbalancerclient لإخراج عقدة الخدمات الصغيرة المحددة حاليًا.
RestControllerPublic Class MovieController {Private Final Logger log = loggerfactory.getLogger (movieController.Class) ؛ @autowired private resttemplate resttemplate ؛ @autowired loadbalancerclient loadBalancerClient ؛ getMapping ("/user/{id}") المستخدم العام findById (pathvariable int id) {return this.restTemplate.getForObject ("http: // flim-user/"+id ، user.class) ؛ } getMapping ("/log-instance") public void loginstance () {serviceInstance serviceInstance = this.loadBalancerClient.choose ("flim-user") ؛ log.info ("{}: {}: {}" ، serviceInstance.getServiceId () ، serviceInstance.gethost () ، serviceInstance.getPort ()) ؛ }}قم بتشغيل برنامج الاختبار
{"id": 1 ، "username": "Account1" ، "Name": "Zhang San" ، "Age": 20 ، "Balance": 100.00}
سيتم إخراج المعلومات التالية عند الوصول إلى http: // localhost: 8010/log-instance عدة مرات.
يمكنك أن ترى أنه سيتم توزيع الطلبات بالتساوي على الخدمات المجهرية للمستخدمين
2017-12-17 20: 47: 53.975 info 12313 ---
2017-12-17 20: 47: 54.215 INFO 12313 --- [NIO-8010-EXEC-1] COM.LINYUAN.CONTROLLER.MOVIECONTROLLER: FLIM-USER: LINYUANDEMBP: 8763
2017-12-17 20: 47: 54.445 info 12313 --- [Nio-8010-EXEC-3] com.linyuan.controller.movieController: flim-user: linyuandembp: 8764
2017-12-17 20: 47: 54.690 Info 12313 --- [Nio-8010-EXEC-4] Com.Linyuan.Controller.MovieController: Flim-User: Linyuandembp: 8763
2017-12-17 20: 47: 54.935 Info 12313 --- [Nio-8010-EXEC-5]
ملاحظة: لا يمكن كتابة RestTemplate.getForObject (...) و LoadBalancerClient.Choose (...) بنفس الطريقة ، لأن الراحة هي في الواقع عميل الشريط ويحتوي بالفعل على سلوك "اختر".
تكوين الشريط حسب الرمز
يمكنك استخدام رمز Java أو سمات لتخصيص تكوين الشريط. فئة التكوين الافتراضية من الشريط هي تشكيل RIBBONCLIENTCOM ، أو يمكنك استخدام POJO لتخصيص تكوين الشريط. هذا التكوين هو الحبيبات الدقيقة. يمكن لعملاء الشريط المختلفة استخدام تكوينات مختلفة.
إنشاء فئة تكوين الشريط
/*** لا ينبغي مسح هذه الفئة فئة التكوين* بواسطة مكونات ComponentScan*/ @ @configurationpublic ribbonConfiguration {bean public irule ribbonrule () {// تكوين قواعد توازن التحميل ، تغيير إلى إرجاع عشوائي عشوائي جديد () ؛ }}حدد فئات التكوين لمقدمي الخدمة باستخدام ribbonclient أو ribbonclients
@SpringBootApplication @enableScoveryClient @RibbonClient (name = "flim-user" ، configuration = ribbonConfiguration.Class) فئة عامة flimconsumerApplication {bean @bloodbalanced public resttemplate resttemplate () {return resttemplate () ؛ } public static void main (string [] args) {springapplication.run (flimconsumerapplication.class ، args) ؛ }}تفضل بزيارة عنوان الاختبار http: // localhost: 8010/log-instance ويمكنك أن ترى أنه سيتم توزيع الطلب بشكل عشوائي على اثنين من الخدمات المجهرية.
2017-12-17 21: 08: 52.769 Info 12524 --- [NIO-8010-EXEC-7]
2017-12-17 21: 08: 52.946 Info 12524 --- [Nio-8010-EXEC-8] Com.Linyuan.Controller.MovieController: Flim-User: Linyuandembp: 8763
2017-12-17 21: 08: 53.138 INFO 12524 --- [NIO-8010-EXEC-9] COM.LINYUAN.CONTROLLER.MOVIECONTROLLER: FLIM-USER: LINYUANDEMBP: 8763
2017-12-17 21: 08: 53.319 Info 12524 --- [IO-8010-EXEC-10]
2017-12-17 21: 08: 53.511 info 12524 --- [NIO-8010-EXEC-1] com.linyuan.controller.movieController: flim-user: linyuandembp: 8763
ملاحظة: لا يمكن مسح فئة RIBBonConfiguration بواسطة componentscan ، وإلا فإن معلومات التكوين سيتم مشاركتها بواسطة @RibbonClient. لذلك ، إذا كنت تريد فقط تخصيص تكوين عميل شريط معين ، فيجب عليك منعه من المسح الضوئي بواسطة componentscan.
تكوين الشريط في ملف التكوين
يعد تخصيص خصائص الشريط من خلال ملفات التكوين أكثر ملاءمة ، وبادئة التكوين هي <ClientName> .Ribbon.
تحديد تكوين الشريط من خلال ملفات التكوين
Flim-User: Ribbon: nfloadbalancerruleclassname: com.netflix.loadbalancer.randomrule
تكوين الشريط الشائع بشكل شائع
الشريط: ConnectionTimeout: #Connection timeout readtimeout: #Read timeout okToretryOnAllOperatotions: #retry جميع طلبات العملية maxautoristriesnextserver
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.