Spring Cloud Gateway সেটআপ এবং কনফিগার করা

Spring Cloud Gateway (API Gateway) - স্প্রিং ক্লাউড (Spring Cloud) - Java Technologies

257

Spring Cloud Gateway একটি API গেটওয়ে প্রকল্প, যা Spring Framework-এ নির্মিত এবং মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়। এটি বিভিন্ন ধরনের রাউটিং, ফিল্টারিং, লোড ব্যালান্সিং, সিকিউরিটি, রেট লিমিটিং, এবং সার্ভিস কমিউনিকেশন সহজ করে। Spring Cloud Gateway ব্যবহার করে, আপনি API গেটওয়ে হিসেবে একটি একক এন্ট্রি পয়েন্ট তৈরি করতে পারেন, যা আপনার মাইক্রোসার্ভিসগুলিতে সমস্ত ইনকামিং ট্রাফিক রাউট করবে।

Spring Cloud Gateway কে সাধারণত Eureka, OAuth2, JWT, বা Rate Limiting এর সাথে একত্রে ব্যবহার করা হয়।

এখানে Spring Cloud Gateway সেটআপ এবং কনফিগার করার ধাপগুলো আলোচনা করা হয়েছে।


১. Spring Cloud Gateway ডিপেনডেন্সি যোগ করা

প্রথমে, Spring Cloud Gateway সেটআপ করার জন্য আপনাকে Maven বা Gradle এর মাধ্যমে ডিপেনডেন্সি যোগ করতে হবে।

Maven ডিপেনডেন্সি

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Gradle ডিপেনডেন্সি

implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
implementation 'org.springframework.boot:spring-boot-starter-web'

২. Spring Cloud Gateway কনফিগারেশন

application.yml বা application.properties ফাইলে Spring Cloud Gateway কনফিগার করুন। এখানে গেটওয়ে রাউটিং এবং অন্যান্য ফিচার কনফিগার করা হবে।

application.yml কনফিগারেশন উদাহরণ

spring:
  cloud:
    gateway:
      routes:
        - id: serviceA
          uri: lb://serviceA
          predicates:
            - Path=/serviceA/**
        - id: serviceB
          uri: lb://serviceB
          predicates:
            - Path=/serviceB/**

এখানে, আমরা দুটি সার্ভিস (serviceA এবং serviceB) রাউট করেছি:

  • lb://serviceAlb://serviceB এর মাধ্যমে Eureka সার্ভিস ডিসকভারি ব্যবহার করা হচ্ছে, যেখানে গেটওয়ে সার্ভিসের নামের মাধ্যমে সার্ভিস রেজিস্ট্রি থেকে সার্ভিসটি খুঁজে পাবে এবং রাউট করবে।
  • predicates এর মাধ্যমে সার্ভিসের জন্য URL প্যাথ কনফিগার করা হচ্ছে, যেমন /serviceA/** বা /serviceB/**

application.properties কনফিগারেশন উদাহরণ

spring.cloud.gateway.routes[0].id=serviceA
spring.cloud.gateway.routes[0].uri=lb://serviceA
spring.cloud.gateway.routes[0].predicates[0]=Path=/serviceA/**

spring.cloud.gateway.routes[1].id=serviceB
spring.cloud.gateway.routes[1].uri=lb://serviceB
spring.cloud.gateway.routes[1].predicates[0]=Path=/serviceB/**

৩. Spring Cloud Gateway ফিল্টারিং কনফিগারেশন

Spring Cloud Gateway ফিল্টার ব্যবহার করে API রিকোয়েস্ট এবং রেসপন্সগুলির উপর বিভিন্ন ধরনের অপারেশন করা যায়। যেমন, হেডার যোগ করা, কাস্টম রাউটিং, রেট লিমিটিং ইত্যাদি।

ফিল্টার উদাহরণ

spring:
  cloud:
    gateway:
      routes:
        - id: serviceA
          uri: lb://serviceA
          predicates:
            - Path=/serviceA/**
          filters:
            - AddRequestHeader=X-Request-Foo, Bar
            - AddResponseHeader=X-Response-Foo, Baz

এখানে, দুটি ফিল্টার ব্যবহার করা হয়েছে:

  1. AddRequestHeader: API রিকোয়েস্টে একটি কাস্টম হেডার যোগ করা হয়েছে (X-Request-Foo: Bar)।
  2. AddResponseHeader: API রেসপন্সে একটি কাস্টম হেডার যোগ করা হয়েছে (X-Response-Foo: Baz)।

Rate Limiting Filter

আপনি Spring Cloud Gateway-এ রেট লিমিটিংও কনফিগার করতে পারেন।

spring:
  cloud:
    gateway:
      routes:
        - id: serviceA
          uri: lb://serviceA
          predicates:
            - Path=/serviceA/**
          filters:
            - name: RequestRateLimiter
              args:
                redis-rate-limiter.replenishRate: 10
                redis-rate-limiter.burstCapacity: 20

এটি Redis ব্যবহার করে প্রতি সেকেন্ডে 10টি রিকোয়েস্ট এবং প্রতি সেকেন্ডে 20টি উচ্চতর রিকোয়েস্ট ব্যারাস্ট করার অনুমতি দেবে।


৪. Spring Cloud Gateway Security কনফিগারেশন

Spring Cloud Gateway-এ সিকিউরিটি কনফিগার করতে OAuth2, JWT, অথবা Basic Authentication ব্যবহার করা যেতে পারে।

OAuth2 Security উদাহরণ

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: YOUR-CLIENT-ID
            client-secret: YOUR-CLIENT-SECRET
            scope: profile, email
            authorization-grant-type: authorization_code
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            client-name: Google
        provider:
          google:
            authorization-uri: https://accounts.google.com/o/oauth2/auth
            token-uri: https://oauth2.googleapis.com/token
            user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo

এটি OAuth2 ব্যবহার করে Google থেকে অথেন্টিকেশন এবং অথোরাইজেশন চালু করবে।

JWT Security উদাহরণ

spring:
  cloud:
    gateway:
      routes:
        - id: serviceA
          uri: lb://serviceA
          predicates:
            - Path=/serviceA/**
          filters:
            - name: JwtTokenFilter

এটি JWT টোকেন যাচাই করার জন্য একটি কাস্টম ফিল্টার (যেমন JwtTokenFilter) ব্যবহার করবে।


৫. Spring Cloud Gateway ইন্টিগ্রেশন

Spring Cloud Gateway সাধারণত Eureka এবং Spring Cloud Discovery এর সাথে ইন্টিগ্রেট করা হয়। এটি সার্ভিস ডিসকভারি এবং ক্লায়েন্ট-সাইড লোড ব্যালান্সিং সাপোর্ট করে।

Eureka সার্ভিস ডিসকভারি ব্যবহার

Eureka সার্ভিস ডিসকভারি কনফিগার করুন যাতে Gateway সার্ভিসগুলোকে সার্ভিস রেজিস্ট্রির মাধ্যমে রাউট করতে পারে।

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/  # Eureka সার্ভার URL

এখানে discovery.locator.enabled: true সাপোর্ট করবে Eureka সার্ভিস ডিসকভারি। এটি সার্ভিস রেজিস্ট্রিতে থাকা সার্ভিসগুলিকে গেটওয়ে-তে রাউট করার জন্য সক্রিয় করবে।


৬. Spring Cloud Gateway এবং Eureka Integration উদাহরণ

spring:
  cloud:
    gateway:
      routes:
        - id: order-service
          uri: lb://order-service
          predicates:
            - Path=/orders/**
        - id: product-service
          uri: lb://product-service
          predicates:
            - Path=/products/**

এখানে, আমরা Eureka ব্যবহার করে order-service এবং product-service রাউট করেছি। lb:// (লোড ব্যালান্সার) প্রটোকল Eureka সার্ভিস ডিসকভারি সিস্টেম থেকে সার্ভিস ইন্সট্যান্সগুলি সনাক্ত করবে।


৭. Spring Cloud Gateway শুরু করা

Spring Cloud Gateway চালু করার জন্য, আপনাকে Spring Boot অ্যাপ্লিকেশন হিসেবে এটি রান করতে হবে:

mvn spring-boot:run   # Maven ব্যবহারকারী

অথবা

./gradlew bootRun     # Gradle ব্যবহারকারী

উপসংহার

Spring Cloud Gateway একটি শক্তিশালী API গেটওয়ে সমাধান, যা রাউটিং, ফিল্টারিং, সিকিউরিটি, রেট লিমিটিং এবং সার্ভিস ডিসকভারি সমর্থন করে। এটি মাইক্রোসার্ভিস আর্কিটেকচারের জন্য অত্যন্ত কার্যকরী, যেখানে একাধিক সার্ভিসের মধ্যে ট্রাফিক সেন্ট্রালাইজডভাবে পরিচালিত হয়। Spring Cloud Gateway সেটআপ করা এবং কনফিগার করা বেশ সহজ এবং এতে Spring Cloud-এর অন্যান্য কম্পোনেন্ট যেমন Eureka, OAuth2, JWT ইত্যাদি ইন্টিগ্রেশন করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...