در این مقاله، ما از Nginx به عنوان API Gateway استفاده خواهیم کرد تا درخواستهای ورودی را به سه میکروسرویس مختلف، به ترتیب user-service، product-service و order-service، مدیریت و هدایت کنیم. نقش API Gateway این است که به عنوان واسطی بین مشتریان (مانند برنامههای وب یا تلفن همراه) و این میکروسرویسها عمل کند. به جای اینکه مشتریان مستقیماً به هر میکروسرویس دسترسی داشته باشند، آنها درخواستهای خود را به API Gateway ارسال خواهند کرد، سپس این API Gatewayبه طور هوشمندانه آنها را به میکروسرویس مناسب بر اساس محتوا و مقصد درخواست هدایت خواهد کرد.
Nginx چیست؟
به زبان ساده و خودمونی، Nginx نرمافزاری است که به عنوان یک واسط reverse proxy کار میکند و میتواند به عنوان Load Balancer برای توزیع درخواستها به سرورهای مختلف استفاده شود. Nginx به شما کمک میکند تا یک سرور وب بسازید.
در اینجا، ما از Nginx به عنوان کنترلکننده ترافیک مرکزی استفاده خواهیم کرد که تمام درخواستهای ورودی را مدیریت میکند و اطمینان حاصل میکند که آنها به میکروسرویس مربوطه برای پردازش اقدامات یا دادههای درخواستی میرسند. این رویکرد امکان مدیریت، امنیت و قابلیت مقیاسپذیری بهتری را در یک معماری مبتنی بر میکروسرویس فراهم میکند.
تنظیم میکروسرویسها
شروع به تنظیم سه میکروسرویس (user-service، product-service و order-service) با پورتهای مجزا کنید، هر کدام وظیفهی خاص خود را ارائه میدهند.
اجرای Nginx
ابتدا nginx را بروی سرور خود نصب میکنیم و یک فایل پیکربندی Nginx ایجاد می کنیم که به عنوان API Gateway عمل کرده و درخواستها را بر اساس URL درخواست به میکروسرویسهای مناسب هدایت میکند.
در تنظیمات فوق، خط proxy_pass برای اینکه Nginx به عنوان یک واسط reverse proxy عمل کرده و درخواستها را به درستی به سرور پشتیبان ارسال کند، ضروری است. خط proxy_set_header Host $host؛ به طور همیشگی الزامی نیست، اما به شدت توصیه میشود. برخی از سرویسهای پشتیبانی ممکن است برای مدیریت میزبانهای مجازی یا مسیریابی مبتنی بر دامنه، به Host Header نیاز داشته باشند، بنابراین اضافه کردن این خط مطمئن میشود که سرور پشتیبان اطلاعات صحیح را دریافت کرده و میتواند به درستی پاسخ دهد.
تست و اجرا
API Gateway با موفقیت درون کانتینر Nginx پیکربندی شده است و حالا آماده است تا درخواستهای ورودی را به میکروسرویسهای مربوط به خود هدایت کند. برای تأیید عملکرد API Gateway، میتوانیم با ارسال درخواستها به نقاط پایانی تعیینشده، تست انجام دهیم:
درخواستهای ارسالی به http://192.168.209.128/api/users به هوشیاری به میکروسرویس user-service هدایت میشوند که در پورت مشخص شده برای انجام عملیات مرتبط با کاربران در حال اجرا است.
درخواستهای ارسالی به http://192.168.209.128/api/products به میکروسرویس product-service هدایت میشوند که در پورت مخصوص به خود اجرا میشود و مسئولیتهای مرتبط با محصولات را مدیریت میکند.
به همین ترتیب، درخواستهای هدایت شده به http://192.168.209.128/api/orders به میکروسرویس order-service هدایت میشوند که در پورت مشخص خود برای پردازش وظایف مربوط به سفارشها در حال عمل است.
برای انجام تست، اطمینان حاصل کنید که هر میکروسرویس بر روی پورت مشخص شده در پیکربندی در حال اجرا باشد. میکروسرویسها باید به طور مناسب برای پردازش درخواستها مرتبط با وظایف خاص خود طراحی شوند.
با بهرهگیری از Docker برای اجرای Nginx به عنوان API Gateway، این تنظیم مزایای بسیاری ارائه میدهد. این امکان را فراهم میکند که معماری میکروسرویسها را به طور کارآمد مدیریت و مقیاسپذیری کرده و اطمینان حاصل شود که هر سرویس در یک کانتینر جداگانه و خودمختار قرار دارد. رویکرد کانتینریسازی فرآیند استقرار را تسریع میکند، قابلیتهای قابلیت حملی را افزایش میدهد و نگهداری سیستم را آسانتر میکند که به ساختار اپلیکیشنی انعطافپذیرتر و قابل اعتمادتری کمک میکند. علاوه بر این، استفاده از Nginx به عنوان API Gateway امکان مدیریت مرکزی ترافیک، توازن بار و قابلیتهای حافظهپنهانسازی را فراهم میکند که همگی به بهبود عملکرد، امنیت و تجربه کاربری کلی کمک میکنند.