2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
यदि केवलम् एकः पञ्जीकरणकेन्द्रसर्वरः अस्ति तर्हि एकः अपि विफलताबिन्दुः भविष्यति तथा च उच्चसमकालीनतायाः सह संसाधितुं न शक्यते, अतः समूहः आवश्यकः
परस्परं पञ्जीकरणार्थं त्रीणि EurekaServers सज्जीकरोतु, यस्य अर्थः अस्ति यत् प्रत्येकं EurekaServer इत्यनेन सह सर्वेषु EureakServers इत्यनेन सह पञ्जीकरणं करणीयम्, प्रत्येकं EurekaServer इत्येतत् सर्वरं क्लायन्ट् च रूपेण कार्यं करोति । अस्माकं अन्येषां सूक्ष्मसेवानां (आदेशः, उपयोक्ता) केवलं पञ्जीकरणपतेः सर्वेभ्यः EurekaServers इत्यस्मै सूचयितुं आवश्यकम् अस्ति ।
अत्र यत् प्रयुक्तं तत् Eureka मॉड्यूल् अस्ति, यत् क्लस्टरिंग् इत्यस्य प्रभावं प्राप्तुं बहुविध yml सञ्चिकाः विन्यस्यति ।
- package org.example;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
-
- /**
- * @ClassName EurekaStart
- * @Author 23
- * @Date 2024/7/10 19:12
- * @Version 1.0
- * @Description TODO
- **/
- @SpringBootApplication
- @EnableEurekaServer
- public class EurekaStart {
- public static void main(String[] args) {
- SpringApplication.run(EurekaStart.class,args);
- }
- }
- spring:
- profiles:
- active: peer3
- ---
- spring:
- profiles: peer1
- application:
- name: Eureka1
- eureka:
- instance:
- hostname: localhost
- client:
- serviceUrl:
- defaultZone: http://localhost:10070/eureka/
- server:
- port: 10070
- ---
- spring:
- profiles: peer2
- application:
- name: Eureka2
- eureka:
- instance:
- hostname: localhost
- client:
- serviceUrl:
- defaultZone: http://localhost:10071/eureka/
- server:
- port: 10071
- ---
- spring:
- profiles: peer3
- application:
- name: Eureka3
- eureka:
- instance:
- hostname: localhost
- client:
- serviceUrl:
- defaultZone: http://localhost:10072/eureka/
- server:
- port: 10072
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.example</groupId>
- <artifactId>Springcloud-Netflix</artifactId>
- <version>1.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>Eureka-Service</artifactId>
- <packaging>jar</packaging>
-
- <name>Eureka-Service</name>
- <url>http://maven.apache.org</url>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- </dependency>
- <!-- Eureka服务端支持 -->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
- </dependency>
- </dependencies>
- </project>
समवर्तीतां प्रदातुं कदाचित् एकः एव सेवाप्रदाता बहुविधं (वस्तुसेवाः) परिनियोक्तुं शक्नोति । अयं क्लायन्ट् आह्वानं कुर्वन् कस्यापि उत्तरदायी संतुलनरणनीत्यानुसारं लोड-आह्वानं पूर्णं कर्तुं अर्हति ।
- spring:
- profiles:
- active: order2
- ---
- server:
- port: 10010
- spring:
- profiles: order1
- application:
- name: order-service
- eureka:
- client:
- service-url:
- defaultZone: http://localhost:10072/eureka
- instance:
- prefer-ip-address: true
- ---
- server:
- port: 10012
- spring:
- profiles: order2
- application:
- name: order-service
- eureka:
- client:
- service-url:
- defaultZone: http://localhost:10072/eureka
- instance:
- prefer-ip-address: true
RestTmplate इत्यस्य माध्यमेन url इत्यनेन सेवा-कॉलं सम्पूर्णं कुर्वन्तु
संहिता कार्यान्वयनम् (सेवा उपभोक्तृपक्षः): १.
- package org.example.Controller;
-
- import org.example.domain.Order;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.cloud.client.ServiceInstance;
- import org.springframework.cloud.client.discovery.DiscoveryClient;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.client.RestTemplate;
-
- import java.util.Arrays;
- import java.util.List;
-
- /**
- * @ClassName UserController
- * @Author 23
- * @Date 2024/7/10 18:52
- * @Version 1.0
- * @Description TODO
- **/
- @RestController
- @RequestMapping("/User")
- public class UserControllerrlb {
- @Autowired
- private RestTemplate restTemplate;
- // @Autowired
- // private DiscoveryClient discoveryClient;
- @GetMapping("/getOrder/{id}")
- public List<Order> getOrderById(@PathVariable("id") Integer id) {
- // Order[] order = restTemplate.getForObject("http://localhost:10010/OrderService/user/" + id, Order[].class);
- // return Arrays.asList(order);
- // List<ServiceInstance> instances=discoveryClient.getInstances("order-service");//通过服务的名字去获取服务实例
- // ServiceInstance serviceInstance=instances.get(0);//定死只获取第一个服务实例对象
- // String ip=serviceInstance.getHost();//获取服务对象ip
- // int port=serviceInstance.getPort();//获取获取的实例对象的服务端口号
- Order[] orders=restTemplate.getForObject("http://Order-Service/OrderService/user/"+id,Order[].class);
- return Arrays.asList(orders);
-
- }
- }
रिबन् नेटफ्लिक्स् द्वारा विमोचितस्य मेघमध्यस्तरसेवायाः मुक्तस्रोतपरियोजना अस्ति अस्य मुख्यं कार्यं क्लायन्ट् लोड् बैलेन्सिंग् एल्गोरिदम् प्रदातुं भवति । Ribbon client घटकः सम्पूर्णविन्यासवस्तूनाम् एकां श्रृङ्खलां प्रदाति, यथा संयोजनसमयसमाप्तिः, पुनः प्रयासः इत्यादयः । सरलतया वक्तुं शक्यते यत्, Ribbon इति क्लायन्ट् लोड् बैलेन्सर् अस्ति वयं विन्याससञ्चिकायां लोड् बैलेन्सर् इत्यस्य पृष्ठतः सर्वाणि यन्त्राणि सूचीबद्धं कर्तुं शक्नुमः, एतेषां कृते च रिबन् स्वयमेव कतिपयानां नियमानाम् आधारेण (यथा सरलं पोलिंग्, यादृच्छिकसंयोजनम् इत्यादयः) संयोजयितुं साहाय्यं करिष्यति मशीनेषु, वयं कस्टम् लोड् बैलेन्सिङ्ग् एल्गोरिदम्स् कार्यान्वितुं Ribbon इत्यस्य उपयोगं सहजतया कर्तुं शक्नुमः । रिबन् एकः ग्राहकभारसंतुलकः अस्ति यः कतिपयनियमानुसारं सेवायाः बहुविधसेवादृष्टान्तानां कृते भारसंतुलन-आह्वानं सम्पूर्णं कर्तुं शक्नोति ।
योजनाबद्धः : १.
OpenFeign एकः घोषणात्मकः जालसेवाग्राहकः अस्ति यस्य उद्देश्यं जालसेवाकॉलं सुलभं कर्तुं भवति । Feign HTTP अनुरोधानाम् कृते एकं अन्तरफलकं टेम्पलेट् प्रदाति (अस्मिन् अभिगमपता चिह्नितं भवति) सरलं अन्तरफलकं लिखित्वा टिप्पणीं सम्मिलितं कृत्वा, भवान् HTTP अनुरोधस्य पैरामीटर्स्, प्रारूपं, पतां अन्यसूचनाः च परिभाषितुं शक्नोति OpenFeign पूर्णतया प्रॉक्सी (डायनामिक प्रॉक्सी) HTTP अनुरोधं करिष्यति अस्माकं केवलं सेवानुरोधं सम्बद्धं प्रक्रियां च पूर्णं कर्तुं विधिवत् आह्वयितुं आवश्यकम्। Feign Ribbon तथा Hystrix इत्येतयोः एकीकरणं करोति (Hystrix इत्यस्य विषये पश्चात् वदामः), येन अस्माकं एतयोः घटकयोः स्पष्टतया उपयोगस्य आवश्यकता नास्ति ।
भिन्न-भिन्न IRule उपवर्गान् विन्यस्य, भवान् भिन्न-भिन्न-भार-सन्तुलन-रणनीतयः चिन्वितुं शक्नोति, अर्थात्, आह्वानं पूर्णं कर्तुं विशिष्ट-रणनीत्या सह सेवा-सूचिकातः सेवां चिनोतु अवश्यं तस्य अनुकूलनं अपि कर्तुं शक्यते। अतः भारसन्तुलनरणनीतयः अन्तः निर्मिताः, अनुकूलिताः च इति विभक्तुं शक्यन्ते ।