برنامه نویسی

Microservices Made Simple: راهنمای مقدماتی برای توسعه دهندگان

Summarize this content to 400 words in Persian Lang
مقدمهمعماری میکروسرویس ها روشی قدرتمند برای ساختار برنامه های کاربردی در مقیاس بزرگ است که آنها را به سرویس های کوچک و مستقل قابل استقرار تقسیم می کند. در این راهنما، ما اصول اولیه میکروسرویس‌ها، نحوه مقایسه آنها با معماری‌های یکپارچه را پوشش می‌دهیم و چند نمونه کد برای شروع کار ارائه می‌کنیم.

میکروسرویس ها چیست؟در معماری میکروسرویس، یک برنامه کاربردی به سرویس‌های مستقلی تقسیم می‌شود که هر کدام وظیفه یک کسب‌وکار واحد مانند احراز هویت کاربر، پردازش پرداخت یا مدیریت محصول را بر عهده دارند. هر سرویس از طریق پروتکل‌های HTTP یا پیام‌رسانی ارتباط برقرار می‌کند و به آن‌ها اجازه می‌دهد به طور مستقل عمل کنند.

مونولیت در مقابل میکروسرویس هادر یک معماری یکپارچه، همه مؤلفه‌ها به طور محکم با یکدیگر همراه هستند و پایگاه داده یکسانی را به اشتراک می‌گذارند، که مقیاس و نگهداری آن را با رشد برنامه سخت‌تر می‌کند. از سوی دیگر، میکروسرویس ها به شما اجازه می دهند تا خدمات را به طور مستقل مقیاس، گسترش و نگهداری کنید.

مثال‌های کد: ساخت یک معماری میکروسرویس ساده

مرحله 1: Microservices خود را راه اندازی کنید

بیایید دو سرویس اساسی ایجاد کنیم، UserService و OrderService، که با استفاده از HTTP با یکدیگر ارتباط برقرار می کنند.

1.1 سرویس کاربر

را UserService مسئولیت مدیریت کاربران را بر عهده دارد. در این مثال، یک API ساده با استفاده از Node.js و Express ایجاد خواهیم کرد.

user-service/index.js

const express = require(‘express’);
const app = express();
const PORT = 3001;

app.use(express.json());

const users = [
{ id: 1, name: ‘Alice’ },
{ id: 2, name: ‘Bob’ }
];

// Endpoint to retrieve user info
app.get(‘/users/:id’, (req, res) => {
const user = users.find(u => u.id == req.params.id);
user ? res.json(user) : res.status(404).send(‘User not found’);
});

app.listen(PORT, () => {
console.log(`UserService running on http://localhost:${PORT}`);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

1.2 خدمات سفارش

را OrderService سفارشات را انجام می دهد و با شماره تماس می گیرد UserService برای به دست آوردن اطلاعات در مورد یک کاربر در اینجا، ما این را با استفاده از درخواست های HTTP شبیه سازی می کنیم axios کتابخانه

order-service/index.js

const express = require(‘express’);
const axios = require(‘axios’);
const app = express();
const PORT = 3002;

app.use(express.json());

const orders = [
{ id: 1, userId: 1, product: ‘Laptop’ },
{ id: 2, userId: 2, product: ‘Phone’ }
];

// Endpoint to retrieve order info with user details
app.get(‘/orders/:id’, async (req, res) => {
const order = orders.find(o => o.id == req.params.id);
if (order) {
try {
const userResponse = await axios.get(`http://localhost:3001/users/${order.userId}`);
res.json({ …order, user: userResponse.data });
} catch (error) {
res.status(500).send(‘Error fetching user details’);
}
} else {
res.status(404).send(‘Order not found’);
}
});

app.listen(PORT, () => {
console.log(`OrderService running on http://localhost:${PORT}`);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2: اجرای Microservicesبرای اجرای خدمات:

نصب وابستگی ها: npm نصب اکسپرس express
UserService و OrderService را راه اندازی کنید:

node user-service/index.js
node order-service/index.js

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

– تست خدمات:

ارتباط بین خدمات

در راه اندازی میکروسرویس ها، API Gateway یا Service Discovery (مانند Consul یا Eureka) معمولاً برای مدیریت درخواست ها استفاده می شود. در اینجا نمونه ای از دروازه API با استفاده از Express برای مسیریابی درخواست ها بین سرویس ها آورده شده است:

api-gateway/index.js

const express = require(‘express’);
const axios = require(‘axios’);
const app = express();
const PORT = 3000;

app.use(express.json());

app.get(‘/api/orders/:id’, async (req, res) => {
try {
const orderResponse = await axios.get(`http://localhost:3002/orders/${req.params.id}`);
res.json(orderResponse.data);
} catch (error) {
res.status(500).send(‘Error fetching order details’);
}
});

app.listen(PORT, () => {
console.log(`API Gateway running on http://localhost:${PORT}`);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون می توانید از طریق درگاه به خدمات سفارش با مشخصات کاربر دسترسی داشته باشید:

میکروسرویس های مقیاس پذیرمیکروسرویس ها امکان مقیاس بندی مستقل را فراهم می کنند. به عنوان مثال، اگر OrderService به منابع بیشتری نیاز دارد، می‌توانید نمونه‌های اضافی را با استفاده از Docker و Kubernetes بچرخانید.

نمونه Dockerfile برای OrderService

# OrderService Dockerfile
FROM node:14
WORKDIR /app
COPY . .
RUN npm install
CMD [“node”, “index.js”] EXPOSE 3002

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از Dockerized، سرویس‌ها را برای Kubernetes مستقر کنید و از Autoscaler Horizontal Pod Kubernetes برای مقیاس‌بندی خودکار خدمات بر اساس تقاضا استفاده کنید.

نتیجه گیریبا این تنظیمات اولیه، نحوه ساختاربندی خدمات در معماری میکروسرویس ها را تجربه کرده اید. میکروسرویس‌ها انعطاف‌پذیری را باز می‌کنند، اما پیچیدگی را نیز ایجاد می‌کنند، بنابراین به یاد داشته باشید که ساده شروع کنید، به صورت تکراری تکامل پیدا کنید و از ابزارهایی مانند Docker، Kubernetes و دروازه‌های API برای مقیاس‌بندی و مدیریت خدمات استفاده کنید.

کد نویسی مبارک! 🚀

با من ارتباط برقرار کناگر این پست برای شما مفید بود یا سؤالی دارید، با من در ارتباط باشید! من دوست دارم نظرات شما را بشنوم.

GitHub: Tajudeen-boss
لینکدین: عبدالله تاجودین
توییتر: @DevAdullah

با تشکر برای خواندن! 😊

مقدمه
معماری میکروسرویس ها روشی قدرتمند برای ساختار برنامه های کاربردی در مقیاس بزرگ است که آنها را به سرویس های کوچک و مستقل قابل استقرار تقسیم می کند. در این راهنما، ما اصول اولیه میکروسرویس‌ها، نحوه مقایسه آنها با معماری‌های یکپارچه را پوشش می‌دهیم و چند نمونه کد برای شروع کار ارائه می‌کنیم.

میکروسرویس ها چیست؟
در معماری میکروسرویس، یک برنامه کاربردی به سرویس‌های مستقلی تقسیم می‌شود که هر کدام وظیفه یک کسب‌وکار واحد مانند احراز هویت کاربر، پردازش پرداخت یا مدیریت محصول را بر عهده دارند. هر سرویس از طریق پروتکل‌های HTTP یا پیام‌رسانی ارتباط برقرار می‌کند و به آن‌ها اجازه می‌دهد به طور مستقل عمل کنند.

مونولیت در مقابل میکروسرویس ها
در یک معماری یکپارچه، همه مؤلفه‌ها به طور محکم با یکدیگر همراه هستند و پایگاه داده یکسانی را به اشتراک می‌گذارند، که مقیاس و نگهداری آن را با رشد برنامه سخت‌تر می‌کند. از سوی دیگر، میکروسرویس ها به شما اجازه می دهند تا خدمات را به طور مستقل مقیاس، گسترش و نگهداری کنید.

مثال‌های کد: ساخت یک معماری میکروسرویس ساده

مرحله 1: Microservices خود را راه اندازی کنید

بیایید دو سرویس اساسی ایجاد کنیم، UserService و OrderService، که با استفاده از HTTP با یکدیگر ارتباط برقرار می کنند.

1.1 سرویس کاربر

را UserService مسئولیت مدیریت کاربران را بر عهده دارد. در این مثال، یک API ساده با استفاده از Node.js و Express ایجاد خواهیم کرد.

user-service/index.js

const express = require('express');
const app = express();
const PORT = 3001;

app.use(express.json());

const users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' }
];

// Endpoint to retrieve user info
app.get('/users/:id', (req, res) => {
  const user = users.find(u => u.id == req.params.id);
  user ? res.json(user) : res.status(404).send('User not found');
});

app.listen(PORT, () => {
  console.log(`UserService running on http://localhost:${PORT}`);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

1.2 خدمات سفارش

را OrderService سفارشات را انجام می دهد و با شماره تماس می گیرد UserService برای به دست آوردن اطلاعات در مورد یک کاربر در اینجا، ما این را با استفاده از درخواست های HTTP شبیه سازی می کنیم axios کتابخانه

order-service/index.js

const express = require('express');
const axios = require('axios');
const app = express();
const PORT = 3002;

app.use(express.json());

const orders = [
  { id: 1, userId: 1, product: 'Laptop' },
  { id: 2, userId: 2, product: 'Phone' }
];

// Endpoint to retrieve order info with user details
app.get('/orders/:id', async (req, res) => {
  const order = orders.find(o => o.id == req.params.id);
  if (order) {
    try {
      const userResponse = await axios.get(`http://localhost:3001/users/${order.userId}`);
      res.json({ ...order, user: userResponse.data });
    } catch (error) {
      res.status(500).send('Error fetching user details');
    }
  } else {
    res.status(404).send('Order not found');
  }
});

app.listen(PORT, () => {
  console.log(`OrderService running on http://localhost:${PORT}`);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2: اجرای Microservices
برای اجرای خدمات:

  1. نصب وابستگی ها: npm نصب اکسپرس express

  2. UserService و OrderService را راه اندازی کنید:

node user-service/index.js
node order-service/index.js

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. – تست خدمات:

ارتباط بین خدمات

در راه اندازی میکروسرویس ها، API Gateway یا Service Discovery (مانند Consul یا Eureka) معمولاً برای مدیریت درخواست ها استفاده می شود. در اینجا نمونه ای از دروازه API با استفاده از Express برای مسیریابی درخواست ها بین سرویس ها آورده شده است:

api-gateway/index.js

const express = require('express');
const axios = require('axios');
const app = express();
const PORT = 3000;

app.use(express.json());

app.get('/api/orders/:id', async (req, res) => {
  try {
    const orderResponse = await axios.get(`http://localhost:3002/orders/${req.params.id}`);
    res.json(orderResponse.data);
  } catch (error) {
    res.status(500).send('Error fetching order details');
  }
});

app.listen(PORT, () => {
  console.log(`API Gateway running on http://localhost:${PORT}`);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون می توانید از طریق درگاه به خدمات سفارش با مشخصات کاربر دسترسی داشته باشید:

میکروسرویس های مقیاس پذیر
میکروسرویس ها امکان مقیاس بندی مستقل را فراهم می کنند. به عنوان مثال، اگر OrderService به منابع بیشتری نیاز دارد، می‌توانید نمونه‌های اضافی را با استفاده از Docker و Kubernetes بچرخانید.

نمونه Dockerfile برای OrderService

# OrderService Dockerfile
FROM node:14
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "index.js"]
EXPOSE 3002

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از Dockerized، سرویس‌ها را برای Kubernetes مستقر کنید و از Autoscaler Horizontal Pod Kubernetes برای مقیاس‌بندی خودکار خدمات بر اساس تقاضا استفاده کنید.

نتیجه گیری
با این تنظیمات اولیه، نحوه ساختاربندی خدمات در معماری میکروسرویس ها را تجربه کرده اید. میکروسرویس‌ها انعطاف‌پذیری را باز می‌کنند، اما پیچیدگی را نیز ایجاد می‌کنند، بنابراین به یاد داشته باشید که ساده شروع کنید، به صورت تکراری تکامل پیدا کنید و از ابزارهایی مانند Docker، Kubernetes و دروازه‌های API برای مقیاس‌بندی و مدیریت خدمات استفاده کنید.

کد نویسی مبارک! 🚀

با من ارتباط برقرار کن
اگر این پست برای شما مفید بود یا سؤالی دارید، با من در ارتباط باشید! من دوست دارم نظرات شما را بشنوم.

  • GitHub: Tajudeen-boss
  • لینکدین: عبدالله تاجودین
  • توییتر: @DevAdullah

با تشکر برای خواندن! 😊

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا