प्रौद्योगिकी साझेदारी

[Spring Cloud Elite Guide] गहन अन्वेषणं व्यावहारिकं युद्धं च: गेटवे इत्यस्य उन्नत-अनुप्रयोगाः उत्तम-प्रथाः च

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

१ परिचयः

Spring Cloud Gateway Spring इकोसिस्टमस्य उपरि निर्मितं API गेटवे प्रदाति, यत्र सन्ति: Spring 5, Spring Boot 2 तथा Project Reactor । Spring Cloud Gateway इत्यस्य उद्देश्यं मार्गनिर्धारणस्य सरलं तथापि कुशलं मार्गं प्रदातुं वर्तते तथा च तेभ्यः केचन गेटवे मूलभूतविशेषताः प्रदाति यथा: सुरक्षा, निगरानीयता/मेट्रिकं लचीलता च।

अधः वयं द्वयोः उदाहरणयोः सह दृष्टान्तं दद्मः ।

2. विमोचन टिप्पणी

Spring Boot संस्करणम्: 2.2.5.RELEASE

वसन्त मेघ संस्करणम्: Hoxton.SR3

अन्यथा निर्दिष्टं न भवति चेत्, सर्वे Spring Cloud रूटीन्स् उपरिष्टात् संस्करणस्य उपयोगं करिष्यन्ति ।

3. द्वारस्य उपयोगः

अनुशंसा : अस्य पाठ्यक्रमस्य आरम्भात् पूर्वं यदि भवान् यूरेका-निर्माणस्य विस्तृतपदार्थान् न अवगच्छति तर्हि [Spring Cloud इत्यस्य पञ्जीकरणकेन्द्रस्य Eureka इत्यस्य उपयोगं उदाहरणेन सह ज्ञातव्यम्],भवता अद्यापि न दृष्टं चेत् महत्त्वं नास्ति, केवलं आरम्भार्थं अधोलिखितानि पदानि अनुसृत्य कार्यं कुर्वन्तु ।

3.1 नूतनं मातापितृप्रकल्पं रचयन्तु

यदि भवतां समीपे मातापितृपरियोजना नास्ति (यदि भवता पञ्जीकरणकेन्द्रदृष्टान्तः सम्पन्नः अस्ति, तर्हि भवतां मातापितृपरियोजना भवितुमर्हति), तर्हि कृपया मातापितृपरियोजनां निर्मातुं सरलस्य Maven इत्यस्य उपयोगं कुर्वन्तु:

तस्य निर्माणानन्तरं pom.xml सञ्चिकां उद्घाट्य निम्नलिखितसङ्केतं योजयन्तु ।

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>org.cherry</groupId>
  7. <artifactId>springcloudproject</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <properties>
  10. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  11. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  12. <java.version>14</java.version>
  13. <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
  14. <springboot.version>2.2.5.RELEASE</springboot.version>
  15. </properties>
  16. <dependencyManagement>
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.cloud</groupId>
  20. <artifactId>spring-cloud-dependencies</artifactId>
  21. <version>${spring-cloud.version}</version>
  22. <type>pom</type>
  23. <scope>import</scope>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-dependencies</artifactId>
  28. <version>${springboot.version}</version>
  29. <type>pom</type>
  30. <scope>import</scope>
  31. </dependency>
  32. </dependencies>
  33. </dependencyManagement>
  34. </project>

src फोल्डर् विलोपयन्तु

3.2 गेटवे उपप्रकल्पस्य निर्माणं कुर्वन्तु

मातापितृपरियोजनायाः अन्तर्गतं, नूतनं गेटवे उप-परियोजना, गेटवे, निर्मातुं Spring Initializr इत्यस्य उपयोगं कुर्वन्तु, तथा च Gateway इत्यस्य उपरि निर्भरतां चयनं कुर्वन्तु सरलः मानचित्रः निम्नलिखितरूपेण अस्ति ।

तस्य निर्माणानन्तरं pom.xml सञ्चिकां परिवर्तयन्तु परिवर्तिता सञ्चिका निम्नलिखितरूपेण अस्ति ।

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <artifactId>springcloudproject</artifactId>
  7. <groupId>com.cherry</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. <!-- <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-parent</artifactId>
  11. <version>2.2.6.RELEASE</version>
  12. <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
  13. </parent>
  14. <groupId>com.cherry</groupId>
  15. <artifactId>gateway</artifactId>
  16. <version>0.0.1-SNAPSHOT</version>
  17. <name>gateway</name>
  18. <description>Demo project for Spring Boot</description>
  19. <!--<properties>
  20. <java.version>1.8</java.version>
  21. <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
  22. </properties>-->
  23. <dependencies>
  24. <dependency>
  25. <groupId>org.springframework.cloud</groupId>
  26. <artifactId>spring-cloud-starter-gateway</artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-test</artifactId>
  31. <scope>test</scope>
  32. <exclusions>
  33. <exclusion>
  34. <groupId>org.junit.vintage</groupId>
  35. <artifactId>junit-vintage-engine</artifactId>
  36. </exclusion>
  37. </exclusions>
  38. </dependency>
  39. </dependencies>
  40. <dependencyManagement>
  41. <dependencies>
  42. <dependency>
  43. <groupId>org.springframework.cloud</groupId>
  44. <artifactId>spring-cloud-dependencies</artifactId>
  45. <version>${spring-cloud.version}</version>
  46. <type>pom</type>
  47. <scope>import</scope>
  48. </dependency>
  49. </dependencies>
  50. </dependencyManagement>
  51. <build>
  52. <plugins>
  53. <plugin>
  54. <groupId>org.springframework.boot</groupId>
  55. <artifactId>spring-boot-maven-plugin</artifactId>
  56. </plugin>
  57. </plugins>
  58. </build>
  59. </project>

द्वारं विन्यस्तुं yml प्रत्ययेन (अर्थात् सञ्चिकानाम application.yml इति परिवर्तयन्तु) application.properties इति विन्याससञ्चिकां परिवर्तयन्तु ।

अत्र वयं csdn blog इत्यस्य उपयोगं सेवाप्रदातृरूपेण कुर्मः

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833

रन निष्पादयन्तु, springboot अन्तर्निर्मितं Tomcat आरभ्यते, पोर्ट् 9001

ब्राउजर इनपुट पताhttp://स्थानीयमेजबान:9001/huanzi833

३.३ द्वारं पिधाय

यदि भवान् इच्छति यत् द्वारं अनुपलब्धं भवतु तर्हि application.yml इत्यत्र निम्नलिखितसेटिंग्स् योजयितुं शक्नोति ।

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. enabled: false

ब्राउजर्-प्रवेशः, परिणामाः निम्नलिखितरूपेण सन्ति ।

4. समयेन मार्गनिर्धारणनियमानां मेलनं कुर्वन्तु

नोटः- properties सञ्चिकां परिवर्तयित्वा कृपया स्वयं अनुप्रयोगं पुनः आरभत अहं प्रतिवारं निर्देशान् पुनः न करिष्यामि ।

४.१ समयः मार्गमेलनस्य अनन्तरं

मार्गनिर्धारणं After द्वारा निर्धारितसमयानन्तरं प्रभावी भवति यथा: जनवरी १, २०२० तः परं अनुरोधाः मम ब्लोग् मध्ये अग्रे प्रेषिताः भवन्ति, अस्मात् समयात् पूर्वं अनुरोधाः अग्रे प्रेषयितुं न शक्यन्ते।

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. - After=2020-01-01T00:00:00+08:00[Asia/Shanghai]
  14. enabled: true

४.२ मार्गमेलनस्य पूर्वं समयः

Before इत्यनेन निर्धारितसमयात् पूर्वं मार्गनिर्धारणं प्रभावी भवति यथा: २०२१ तमस्य वर्षस्य जनवरी-मासस्य प्रथमदिनात् पूर्वं अनुरोधाः मम ब्लोग् मध्ये अग्रे प्रेषिताः भवन्ति, अस्य समयस्य अनन्तरं अनुरोधाः अग्रे प्रेषयितुं न शक्यन्ते ।

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. - After=2020-01-01T00:00:00+08:00[Asia/Shanghai]
  14. - Before=Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
  15. enabled: true

४.३ मार्गमेलनस्य मध्ये समयः

Between द्वारा निर्धारितसमयानां मध्ये मार्गनिर्धारणं प्रभावी भवति यथा: 1 जनवरी 2020 तः अक्टोबर 1, 2020 पर्यन्तं अनुरोधाः अग्रे प्रेषिताः भवन्ति अस्मिन् समये बहिः अनुरोधाः अग्रे प्रेषितुं न शक्यन्ते पुनः पुनः सेटिंग्स् परिहरितुं एकत्र।

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
  14. # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
  15. - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
  16. enabled: true

४.४ कुकी मार्गनिर्धारणमेलनम्

कुकी कृते, विधेयद्वयं प्राप्तुं शक्नोति, एकः कुकी नाम अपरः नियमितव्यञ्जनः अस्ति तथा च नियमितव्यञ्जनस्य मेलनं करिष्यति यदि ते मेलनं कुर्वन्ति, यदि मेलनं नास्ति routing निष्पादितं भविष्यति।

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
  14. # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
  15. - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
  16. - Cookie=uid, cherry #通过cookie进行路由规则的匹配
  17. enabled: true

Cookie routing matching इत्यस्य उपयोगेन वयं cmd ​​इत्यस्य परीक्षणार्थं cmd ​​प्रविष्टुं शक्नुमः तथा च cmd इत्यस्मिन् निम्नलिखित स्टेट्मेण्ट् प्रविष्टुं शक्नुमः ।

४.५ शीर्षकमार्गमेलनम्

कुकी मार्गमेलनस्य सदृशं द्वौ पैरामीटर् अपि सन्ति, एकः पैरामीटर् नाम नियमितव्यञ्जनम् च यदि मेलनं नास्ति तर्हि मार्गः निष्पादितः भविष्यति ।

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
  14. # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
  15. - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
  16. - Cookie=uid, cherry #通过cookie进行路由规则的匹配
  17. - Header=X-Request-Id, d+ #Header路由规则
  18. enabled: true

परीक्षणार्थं cmd ​​प्रविष्टं कुर्वन्तु, cmd मध्ये निम्नलिखित कथनं प्रविशन्तु:

४.६ होस्टमार्गमेलनम्

निम्नलिखितविन्यासः होस्ट्-पतेः, यथा www.csdn.net, अथवा www.baidu.com, अथवा blog.csdn.net इत्यादिभिः पत्तनैः मेलितः भवति

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
  14. # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
  15. - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
  16. - Cookie=uid, cherry #通过cookie进行路由规则的匹配
  17. - Header=X-Request-Id, d+ #Header路由规则
  18. - Host=**.csdn.net, **.baidu.com #Host路由规则
  19. enabled: true

परीक्षणार्थं cmd ​​प्रविष्टं कुर्वन्तु, cmd मध्ये निम्नलिखित कथनं प्रविशन्तु:

४.७ विधिमेलनमार्गः

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
  14. # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
  15. - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
  16. - Cookie=uid, cherry #通过cookie进行路由规则的匹配
  17. - Header=X-Request-Id, d+ #Header路由规则
  18. - Host=**.csdn.net, **.baidu.com #Host路由规则
  19. - Method=GET, POST #Method路由规则
  20. enabled: true

Get परीक्षणं कर्तुं cmd ​​प्रविष्टं कुर्वन्तु cmd मध्ये निम्नलिखितम् कथनं प्रविशन्तु ।

POST परीक्षणं कर्तुं cmd ​​प्रविशतु: (टिप्पणी: यदि सेवाप्रदातृनियन्त्रके मार्गः GetMapping इत्यस्य उपयोगं करोति, तथा च आह्वानकाले अत्र -X POST इत्यस्य उपयोगः भवति तर्हि 404 दृश्यते) ।

४.८ IP-सङ्केत-मेलनम्

predicate अपि निश्चितेन IP अन्तरालसङ्ख्यायाः सह अनुरोधं सेट् कृत्वा मार्गनिर्धारणस्य समर्थनं करोति, यथा 192.168.1.1/24 (यत्र 192.168.1.1 IP-सङ्केतः, 24 उपजाल-मास्कः, 24 अत्र च उपजाल-मास्कः 255.255.255.0 इति अर्थः ). परीक्षणार्थं भवान् एतत् पतां स्थानीय-IP-सङ्केते सेट् कर्तुं शक्नोति ।

  1. server:
  2. port: 9001
  3. spring:
  4. application:
  5. name: gateway
  6. cloud:
  7. gateway:
  8. routes:
  9. - id: gateway-service
  10. uri: https://blog.csdn.net
  11. predicates:
  12. - Path=/huanzi833
  13. # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
  14. # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
  15. - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
  16. - Cookie=uid, cherry #通过cookie进行路由规则的匹配
  17. - Header=X-Request-Id, d+ #Header路由规则
  18. - Host=**.csdn.net, **.baidu.com #Host路由规则
  19. - Method=GET, POST #Method路由规则
  20. - RemoteAddr=192.168.1.1/24
  21. enabled: true

मार्गमार्गमेलनम्/पैरामीटरमेलनम्/भारमेलनं अधोलिखितेन पञ्जीकरणकेन्द्रेण सह एकीकरणे सम्पन्नं भविष्यति।

5. द्वारं सेवारूपेण कृत्वा पञ्जीकरणकेन्द्रेण, सेवाप्रदातृभिः, उपभोक्तृभिः च सह सम्बद्धं कुर्वन्तु

1. प्रथमं सेवाकेन्द्रं Eureka रचयन्तु, कोडः निम्नलिखितरूपेण अस्ति।