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

स्प्रिंगक्लाउडगेटवे

2024-07-12

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

परिणाम

  • एकीकृतं प्रबन्धनम्, निरीक्षणं कर्तुं सुलभम्
  • सुरक्षा, वर्तमानसीमाकरणम्: गेटवे स्तरस्य अवैधसूचनाः छानयन्तु
  • nginx बाह्यद्वारम्, द्वारम् अन्तर्जालम्
  • nginx Lua अथवा Kong इत्यनेन वर्धयितुं शक्यते

कल्पना

  • id: any name
  • uri: प्रॉक्सी सेवा पता। id, uri च आवश्यकौ, predicate, filter च वैकल्पिकौ स्तः
  • Predicate: द्वारं प्राप्तुं uri मेलयितुम् उपयोक्तुं शक्यते यदि मेलनं कृतम् अस्ति तर्हि वर्तमानमार्गः प्रभावी भविष्यति ।
  • फ़िल्टर: GatewayFilter इत्यस्य एकः उदाहरणः, प्रॉक्सी इत्यस्मात् पूर्वं वा पश्चात् वा तर्कं योजयति, सर्वोच्चलचीलतायाः सह

प्रसंस्करण प्रवाह

  • प्रथमं, Handler Mapping URL इत्येतत् संसाधयति, ततः Web Handler इत्यस्मै तत् प्रसंस्करणार्थं फ़िल्टर इत्यस्य प्रथमार्धं आह्वयति, प्रॉक्सी सेवायाः प्रतिक्रियायाः अनन्तरं तर्कं निष्पादयति of the second half of the filter परिणामं WebHandler प्रति, ततः HandlerMapping प्रति, अन्ते च क्लायन्ट् प्रति प्रत्यागच्छतु

उपयुञ्जताम्‌

gateway:
      discovery:
        locator:
          enabled: true # 启用自动根据服务ID生成路由
          lower-case-service-id: true # 设置路由的路径为小写的服务ID
  • 1
  • 2
  • 3
  • 4
  • 5

yml विन्यासः

  • यदि सूचीस्थतत्त्वानां बहुक्षेत्राणि सन्ति तर्हि प्रत्येकं क्षेत्रं मूल्यं च निर्दिष्टुं "-" तथा कोलन इत्यस्य आवश्यकता भवति यदि केवलं एकं क्षेत्रं भवति तर्हि तत् पृथक् कर्तुं अल्पविरामस्य उपयोगं कर्तुं शक्नुवन्ति;
  • वस्तुप्रकारस्य विन्यासः, प्रत्येकं क्षेत्रं "-" तथा कोलन इत्येतयोः माध्यमेन विन्यस्तुं शक्यते
  • मानचित्रप्रकारः: कुञ्जी, मूल्यं कोलनद्वारा पृथक् कृतम्
predicates:
  - Path=/sendOrder
  - Query=name,ma.
  - name: Query
    args:
      param: id
      regexp: d+
 #predicates是List, 它的元素是
 public class PredicateDefinition {

	@NotNull
	private String name;

	private Map<String, String> args = new LinkedHashMap<>();
  }
  等号分割转成对象的写法不是yml内置支持的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

विधेयम्

  • विधेयविन्यासः एकः List अस्ति, यस्य तत्त्वानि विशिष्टरूपेण स्ट्रिंग्, अथवा ऑब्जेक्ट्स् भवितुम् अर्हन्ति । स्ट्रिंग् लेखनविधिः : समानचिह्नेन विभक्तः, प्रथमः भागः विधेयनामनाम, द्वितीयभागः args अल्पविरामेन पृथक् भवति, मूल्यं Map मूल्ये रक्षितं भवति, तथा च Map कीलम् स्वयमेव उत्पद्यते वस्तुलेखनविधिः PredicateDefinition
  • यदि args मध्ये एव अल्पविरामाः, कोलन्स् च सन्ति तर्हि string format इत्यस्य उपयोगः कर्तुं न शक्यते
  • shortcutType विधिः ConfigClass कृते parsing विधिं परिभाषयति: shortcutFieldOrder shortcutFieldPrefix उपसर्गं निष्कासयति तथा च ConfigClass क्षेत्रनामस्य अनुरूपं भवति args पैरामीटर् इत्यस्य val ConfigClass इत्यस्य क्षेत्रमूल्येन सह सङ्गतम् अस्ति; ध्वजः : अल्पविरामेन पृथक्कृतं List, परन्तु अन्तिमः मूल्यं बूलियनमूल्यं भवति, यत् अन्ते 2 कीलानां Map इत्यत्र परिवर्तितं भवति प्रथमस्य कीलस्य मूल्यं बूलियनमूल्यानां पुरतः List अस्ति, द्वितीयं कीलं च बूलियन मूल्य।
  • द्वारं प्राप्तुं अनुरोधानाम् मेलनं कर्तुं प्रयुक्तम् (यथा uri, query parameters, request headers यदि मेलनं कृतम् अस्ति तर्हि वर्तमानमार्गः प्रभावी भविष्यति ।
  • GatewayPredicate इत्यस्य कार्यान्वयनस्य अनुरूपं, कार्यान्वयनवर्गः RoutePredicateFactory इत्यस्य कार्यान्वयनवर्गः अस्ति कार्यान्वयनवर्गस्य नामकरणविनिर्देशः अस्ति: predicate name+RoutePredicateFactory उदाहरणार्थं, Path PathRoutePredicateFactory इत्यस्य अनुरूपः अस्ति ।
  • विधेयनाम कारखाना कार्यान्वयनवर्गस्य वर्गनाम उपसर्गेण सह सङ्गच्छते, विधेयपैरामीटर् args च कारखाना ConfigClass इत्यनेन सह सङ्गच्छते ।
  • बहुविधाः विधेयाः सन्तितथासम्बन्धः
  • यदा विधेयकं न गच्छति तदा द्वारं ४०४ प्रत्यागच्छति

पथं

  • मार्गाः मेलनं कुर्वन्तु, पिपीलिकामेलनस्य समर्थनं कुर्वन्तु तथा च {} इत्यस्य माध्यमेन uriVariables निष्कासयन्तु।

उत्प्रेक्षा

  • किं तत्सम्बद्धं http अनुरोध पैरामीटर् नाम अस्ति?
  • name is fixed Query, args इत्यस्य 2 मूल्यानि सन्ति, param तथा regexp, query parameter name and value इत्यस्य अनुरूपाः सन्ति
  • यदा केवलं नाम विन्यस्तं भवति तदा यावत् अनुरोधपैरामीटर् विद्यते तावत् पारितः भविष्यति इति अर्थः ।

शीर्षकम्

  • HeaderRoutePredicateफैक्टरी
  • अनुरोधशीर्षकस्य नाम मूल्यं च मेलनं कुर्वन्तु वास्तविकं अनुरोधशीर्षकमूल्यं यावत् एकः मेलनं भवति तावत् विन्यासमूल्यं नियमितव्यञ्जनानां समर्थनं करोति ।

प्रक्रिया

  • HTTP अनुरोधविधिना मेलनं करोति, विन्यासः बृहत् अक्षरेषु भवितुमर्हति तथा च अल्पविरामैः पृथक् भवितुमर्हति ।

दूरस्थAddr

  • अनुरोधेन सह मेलनं कुर्वन् क्लायन्ट् IP, सटीकं वक्तुं, अन्तिमस्य संजालप्रॉक्सी इत्यस्य IP, बहुविधः भवितुम् अर्हति, अल्पविरामेन पृथक्कृतः

निमन्त्रकः

  • Host अनुरोधशीर्षके (पोर्ट् विहाय) होस्ट् भागस्य मूल्यं मेलयति ।
  • मेलार्थं AntPathMatcher इत्यस्य उपयोगं कुर्वन्तु, मार्गविभाजकः च "."

कुकी

  • कुकी इत्यस्य नाम मूल्यं च मेलयितुम् मूल्यं नियमितरूपेण मेलयितुम् अर्हति ।

भारः

  • विभिन्नमार्गाणां भारसन्तुलनार्थं प्रयुक्ताः एकस्मिन् समूहे मार्गाः भारस्य अनुसारं भारिताः भवन्ति ।
  • अल्पविरामेन पृथक्कृतानि २ मूल्यानि विन्यस्तुं शक्नुवन्ति, ये समूहीकरणं भारः च सन्ति ।
  • WeightCalculatorWebFilter: यदा आरब्धं भवति तदा Weight विन्यासस्य आधारेण द्विस्तरीयः Map उत्पद्यते, द्वितीयस्तरः च मार्गनिर्देशन-ID भवति यदा अनुरोधः आगच्छति तदा 0~1 इत्यस्य यादृच्छिकसङ्ख्या उत्पद्यते । तथा प्रत्येकस्य समूहस्य कृते मार्गनिर्देशन-ID चयनं भवति ।
  • WeightRoutePredicateFactory: यदा विधेय-छननं भवति तदा समूहस्य तथा मार्ग-ID इत्यस्य आधारेण फ़िल्टर भवति

फ़िल्टर

  • विन्यासलेखनविधिः विधेयस्य समाना अस्ति
  • अनुरोधानाम् प्रतिक्रियाणां च परिवर्तनार्थं फ़िल्टर् इत्यस्य उपयोगः भवति

AddRequestHeader इति

  • अनुरोधशीर्षकाणि योजयन्तु, ये पृष्ठभागेन प्राप्तुं शक्यन्ते
  • अनुरोधशीर्षकस्य मूल्यं uriVariables तः गतिशीलं अधिग्रहणं समर्थयति

पट्टीउपसर्ग

  • केवलं एकं पूर्णाङ्कमूल्यं n अस्ति

सीमितं कृत्वा

क्रॉस डोमेन

spring.cloud.gateway.globalcors:
  cors-configurations:
    '[/**]': #跨域的uriPattern
      allowedHeaders: "*"
      allowedOrigins: "*"
      allowedMethods:
        - POST
        - OPTIONS
        - GET
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • सर्वरः निर्धारयति यत् एषः क्रॉस्-डोमेन अनुरोधः अस्ति वा यत् अनुरोधशीर्षकं Origin तथा अनुरोध URL इत्यस्य योजना, होस्ट्, पोर्ट् च समानाः सन्ति वा यावत् एकः अन्तरः अस्ति, तावत् सः क्रॉस्-डोमेन अनुरोधः अस्ति
  • तत्र क्रॉस्-डोमेन विन्यासः भवितुमर्हति, तथा च अनुरोधितः uri क्रॉस्-डोमेन विन्यासस्य uriPattern इत्यनेन सह मेलनं करोति यदि एतत् क्रॉस्-डोमेन अस्ति वा, तर्हि क्रॉस्-डोमेन अनुरोधशीर्षकाणां अनुमतिं दास्यति । स्रोतः, अनुरोधविधयः, पार-डोमेन-विन्यासे च वास्तविक-अनुरोधाः च अनुरोध-शीर्षकं, स्रोतः, अनुरोधविधिः च मेलनं कुर्वन्ति वा, यदि ते सर्वे मेलन्ति, तर्हि पार-डोमेन-प्रवेशं चालयन्तु, अन्यथा 403Forbiden प्रेषयन्तु
  • org.springframework.web.reactive.handler.सारहैंडलरमैपिंग # getHandler
  • org.springframework.web.cors.reactive.DefaultCorsProcessor # प्रक्रिया

स्वयमेव मार्गान् जनयन्तु

  • सेवा-आविष्कारस्य माध्यमेन सेवा-ID प्राप्तुं समर्थयति, तथा च स्वयमेव सेवा-ID-आधारितं मार्ग-विन्यासं जनयति ।पूर्वनिर्धारितमार्गविन्यासस्य uri lb://serviceId, विधेय /serviceId/**, तथा च serviceId निष्कासयितुं फ़िल्टर Rewritepath अस्ति ।

वैश्विक फ़िल्टर

प्रतिक्रियाशीलभारसंतुलनग्राहकफ़िल्टर

  • lb योजनायाः सह रूटिंग् URI संसाधितुं प्रथमं ServiceInstanceListSupplier इत्यस्य माध्यमेन सेवानामनुसारं सेवादृष्टान्तं प्राप्नुवन्तु, ततः ReactorLoadBalancer दृष्टान्तद्वारा लोड् बैलेंसं प्राप्नुवन्तु

RouteToRequestUrlFilter इति मार्गः

  • 2 कार्याणि कुर्वन्तु: 1. 2-स्तरीययोजनानां समर्थनं कुर्वन्तु, बाह्ययोजनां GATEWAY_SCHEME_PREFIX_ATTR इत्यत्र रक्षन्तु, ततः तत् निष्कासयन्तु । 2. अग्रे प्रेषणं प्राप्तुं वास्तविकं अनुरोधितं URI प्रतिस्थापयितुं आन्तरिकं sheme, host, port च उपयुज्यताम् ।