উদাহরণ সহ Zuul Edge Server এর ব্যবহার

Spring Cloud Zuul (Edge Server) - স্প্রিং ক্লাউড (Spring Cloud) - Java Technologies

283

Zuul হল একটি API Gateway এবং Edge Service যা স্প্রিং ক্লাউডের অংশ হিসেবে ব্যবহৃত হয়। এটি মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিসগুলোর মধ্যে রাউটিং, লোড ব্যালান্সিং, সিকিউরিটি, রেট লিমিটিং, এবং অন্যান্য কনসার্নগুলির সমাধান করতে ব্যবহৃত হয়। Zuul মূলত HTTP রিকোয়েস্টের জন্য একটি এন্ট্রি পয়েন্ট হিসেবে কাজ করে এবং ইন্টারনাল সার্ভিসগুলির মধ্যে রাউটিং করে।

Zuul Edge Server Setup

স্প্রিং ক্লাউড Zuul ব্যবহারের জন্য আপনাকে কিছু নির্দিষ্ট ডিপেনডেন্সি যুক্ত করতে হবে এবং কনফিগারেশন করতে হবে। এটির মাধ্যমে আপনি API গেটওয়ে হিসেবে কাজ করতে পারবেন যা আপনার সার্ভিসগুলোকে এক্সপোজ করবে।

ধাপ ১: Zuul Server ডিপেনডেন্সি যোগ করা

spring-cloud-starter-netflix-zuul ডিপেনডেন্সি pom.xml ফাইলে যোগ করুন:

pom.xml (Zuul Server):

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

ধাপ ২: Zuul Server কনফিগারেশন

Zuul Server সক্রিয় করার জন্য @EnableZuulProxy অ্যানোটেশন ব্যবহার করতে হবে। এটি Zuul কে API গেটওয়ে হিসেবে কনফিগার করে এবং এটি সমস্ত রাউটিং কাজ পরিচালনা করবে।

Zuul Server Application Class:

package com.example.zuulserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableZuulProxy
public class ZuulServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZuulServerApplication.class, args);
    }
}

এখানে @EnableZuulProxy অ্যানোটেশন Zuul প্রোক্সি সক্রিয় করে দেয়, যা API গেটওয়ে হিসেবে কাজ করবে এবং রাউটিং করবে।

ধাপ ৩: Zuul সার্ভিসের জন্য রাউটিং কনফিগারেশন

application.yml বা application.properties ফাইলে Zuul রাউটিং কনফিগারেশন করতে হবে, যেখানে আপনি মাইক্রোসার্ভিসগুলোর জন্য রাউটিং পথ এবং সার্ভিসের URL উল্লেখ করবেন।

application.yml (Zuul Server):

server:
  port: 8080

spring:
  application:
    name: zuul-server

zuul:
  routes:
    user-service:
      path: /user/**  # 'user-service' এর জন্য /user/** রাউটিং
      service-id: user-service
    product-service:
      path: /product/**  # 'product-service' এর জন্য /product/** রাউটিং
      service-id: product-service
  ribbon:
    ReadTimeout: 5000
    ConnectTimeout: 5000

এখানে:

  • zuul.routes: রাউটিং কনফিগারেশন, যেখানে path এবং service-id উল্লেখ করা হয়েছে।
  • service-id হল মাইক্রোসার্ভিসের নাম যা Eureka সার্ভিস ডিসকভারি ব্যবহার করলে পাওয়া যাবে।
  • /user/** এবং /product/** হল Zuul-এ মাইক্রোসার্ভিসগুলির জন্য এক্সপোজড এন্ডপয়েন্ট।

ধাপ ৪: Eureka Server কনফিগারেশন (Optional)

Zuul সার্ভার Eureka সার্ভিস ডিসকভারি ব্যবহার করতে পারে। যদি আপনি মাইক্রোসার্ভিস রেজিস্ট্রেশন এবং ডিসকভারি করতে চান, তাহলে Eureka Server কনফিগার করতে হবে।

pom.xml (Eureka Client):

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

application.yml (Zuul Server with Eureka):

spring:
  application:
    name: zuul-server
  cloud:
    discovery:
      enabled: true  # Eureka সার্ভিস ডিসকভারি সক্ষম
    zuul:
      routes:
        user-service:
          path: /user/**
          service-id: user-service
        product-service:
          path: /product/**
          service-id: product-service

এখানে service-id হল Eureka-তে নিবন্ধিত মাইক্রোসার্ভিসের নাম, এবং Zuul সেই সার্ভিসগুলো থেকে রিকোয়েস্ট পাঠাবে।

ধাপ ৫: Zuul Client Service Setup

Zuul Client Service একটি মাইক্রোসার্ভিস হবে যেটি Zuul Server থেকে রাউট হওয়া রিকোয়েস্ট পাবেন।

User Service Example:

UserServiceApplication.java:

package com.example.userservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class UserServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
    }
}

application.yml (User Service):

server:
  port: 8081

spring:
  application:
    name: user-service

এখানে, user-service হচ্ছে Eureka বা Zuul সার্ভারে নিবন্ধিত সার্ভিস।


ধাপ ৬: Zuul Server Test

Zuul সার্ভার রান করার পর, আপনি **/user/** এবং /product/** URL পাথের মাধ্যমে মাইক্রোসার্ভিসগুলিতে পৌঁছাতে পারবেন। উদাহরণস্বরূপ:

  • http://localhost:8080/user/api/users এই URL-এর মাধ্যমে Zuul User Service এন্ডপয়েন্টে রিকোয়েস্ট পাঠাবে।
  • http://localhost:8080/product/api/products এই URL-এর মাধ্যমে Zuul Product Service এন্ডপয়েন্টে রিকোয়েস্ট পাঠাবে।

এখানে, Zuul Server রিকোয়েস্টগুলি user-service এবং product-service মাইক্রোসার্ভিসগুলিতে রাউট করবে।


ধাপ ৭: Zuul Client এর সাথে সিকিউরিটি এবং ফিচার

Zuul সার্ভারের মধ্যে আরও অনেক ফিচার যোগ করা যায়:

  • Authentication and Authorization: Zuul সার্ভার এবং মাইক্রোসার্ভিসের মধ্যে সিকিউরিটি ব্যবস্থা প্রয়োগ করতে পারেন।
  • Filters: Zuul ফিল্টার ব্যবহার করে রিকোয়েস্ট এবং রেসপন্সে পরিবর্তন বা প্রক্রিয়াকরণ করতে পারেন (যেমন, লগিং, সিকিউরিটি, রেট লিমিটিং ইত্যাদি)।

Example: Zuul Filter

import com.netflix.zuul.ZuulFilter;
import org.springframework.stereotype.Component;

@Component
public class MyZuulFilter extends ZuulFilter {

    @Override
    public String filterType() {
        return "pre"; // রিকোয়েস্ট আসার আগে ফিল্টার কার্যকর হবে
    }

    @Override
    public int filterOrder() {
        return 1;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        // ফিল্টার লজিক
        System.out.println("Request is being filtered");
        return null;
    }
}

সারাংশ:

  • Zuul হল একটি API গেটওয়ে যা আপনার মাইক্রোসার্ভিস আর্কিটেকচারে সেন্ট্রাল এন্ট্রি পয়েন্ট হিসেবে কাজ করে।
  • এটি Eureka বা অন্যান্য সার্ভিস ডিসকভারি সিস্টেমের সাথে ইন্টিগ্রেট হতে পারে, যা মাইক্রোসার্ভিসগুলোর মধ্যে রাউটিং পরিচালনা করে।
  • Zuul API গেটওয়ে হিসেবে বিভিন্ন ধরনের ফিচার যেমন রাউটিং, সিকিউরিটি, রেট লিমিটিং এবং লগিং প্রদান করতে সাহায্য করে।
Content added By
Promotion

Are you sure to start over?

Loading...