د لینکس شبکې غوښتنلیک فعالیت. پیژندنه

د ویب غوښتنلیکونه اوس هرچیرې کارول کیږي، او د ټولو ټرانسپورټ پروتوکولونو په منځ کې، HTTP د شیر برخه نیسي. کله چې د ویب غوښتنلیک پراختیا باریکي مطالعه کوئ ، ډیری خلک عملیاتي سیسټم ته خورا لږ پاملرنه کوي چیرې چې دا غوښتنلیکونه واقعیا پرمخ ځي. د پراختیا (دیو) او عملیاتو (Ops) جلا کول یوازې وضعیت خراب کړی. مګر د DevOps کلتور وده سره ، پراختیا کونکي په کلاوډ کې د دوی غوښتنلیکونو چلولو مسؤل کیږي ، نو دا د دوی لپاره خورا ګټور دی چې د عملیاتي سیسټم شاته سره په بشپړ ډول آشنا شي. دا په ځانګړي توګه ګټور دی که تاسو هڅه کوئ د زرګونو یا لسګونو زرو یوځل اړیکو لپاره سیسټم ځای په ځای کړئ.

په ویب خدماتو کې محدودیتونه د نورو غوښتنلیکونو سره ورته دي. که دا د بار توازن کونکي یا ډیټابیس سرورونه وي ، دا ټول غوښتنلیکونه د لوړ فعالیت چاپیریال کې ورته ستونزې لري. د دې بنسټیزو محدودیتونو پوهیدل او په عمومي ډول د دوی د بریالي کولو څرنګوالی به تاسو سره ستاسو د ویب غوښتنلیکونو فعالیت او توزیع ارزولو کې مرسته وکړي.

زه د مقالو دا لړۍ د ځوان پراختیا کونکو پوښتنو په ځواب کې لیکم څوک چې غواړي د ښه پوه شوي سیسټمونو معماران شي. دا ناشونې ده چې د لینکس غوښتنلیک اصلاح کولو تخنیکونو په روښانه ډول پوه شئ پرته لدې چې د عملیاتي سیسټم په کچه کار کولو اساساتو ته ډوب کړئ. که څه هم د غوښتنلیکونو ډیری ډولونه شتون لري، پدې لړۍ کې زه غواړم د ویب پر بنسټ غوښتنلیکونه وپلټم نه د ډیسټاپ غوښتنلیکونو لکه براوزر یا متن مدیر. دا مواد د پراختیا کونکو او معمارانو لپاره دي چې غواړي پوه شي چې څنګه د لینکس یا یونیکس برنامې کار کوي او څنګه یې د لوړ فعالیت لپاره جوړښت کوي.

لینوکس دی د سرور خونه عملیاتي سیسټم، او ډیری وختونه ستاسو غوښتنلیکونه په دې OS کې چلیږي. که څه هم زه وایم "لینکس"، ډیری وختونه تاسو کولی شئ په خوندي ډول فرض کړئ چې زما مطلب په عمومي ډول د یونکس په څیر ټول عملیاتي سیسټمونه دي. په هرصورت، ما په نورو سیسټمونو کې د ملګری کوډ ازموینه نه ده کړې. نو، که تاسو په FreeBSD یا OpenBSD کې لیوالتیا لرئ، ستاسو پایلې ممکن توپیر ولري. کله چې زه د لینکس ځانګړي یو څه هڅه کوم ، زه یې په ګوته کوم.

پداسې حال کې چې تاسو کولی شئ دا پوهه د سکریچ څخه د اپلیکیشن رامینځته کولو لپاره وکاروئ او دا به په بشپړ ډول مطلوب وي ، دا غوره ده چې دا ونه کړئ. که تاسو د خپل سازمان د سوداګرۍ غوښتنلیک لپاره په C یا C++ کې نوی ویب سرور ولیکئ، دا ممکن ستاسو په دنده کې وروستۍ ورځ وي. په هرصورت، د دې غوښتنلیکونو جوړښت پوهیدل به د موجوده برنامو غوره کولو کې مرسته وکړي. تاسو به وکولی شئ د پروسې پراساس سیسټمونه د موضوع پراساس سیسټمونو او همدارنګه د پیښې پراساس سیسټمونو سره پرتله کړئ. تاسو به پوه شئ او ستاینه وکړئ چې ولې نګینکس د اپاچي httpd څخه غوره فعالیت کوي، ولې د تورناډو پراساس پایتون غوښتنلیک کولی شي د جینګو میشته پایتون غوښتنلیک په پرتله ډیر کاروونکو ته خدمت وکړي.

ZeroHTTPd: د زده کړې وسیله

ZeroHTTPd یو ویب سرور دی چې ما د ښوونې وسیلې په توګه په C کې له سکریچ څخه لیکلي. دا هیڅ بهرنی انحصار نلري، پشمول د Redis ته لاسرسی. موږ خپل د Redis کړنالرې پرمخ وړو. د نورو جزیاتو لپاره لاندې وګورئ.

که څه هم موږ کولی شو د تیوري په اوږدو کې بحث وکړو، د کوډ لیکلو، د هغې چلولو، او د یو بل سره د ټولو سرور جوړښتونو پرتله کولو څخه غوره هیڅ شی نشته. دا ترټولو څرګند میتود دی. له همدې امله، موږ به د هر ماډل په کارولو سره یو ساده ZeroHTTPd ویب سرور ولیکو: د پروسې پر بنسټ، د موضوع پر بنسټ، او د پیښې پر بنسټ. راځئ چې د دې سرورونو څخه هر یو وګورو او وګورو چې دوی د یو بل په پرتله څنګه فعالیت کوي. ZeroHTTPd په یو واحد C فایل کې پلي کیږي. د پیښې پراساس سرور پکې شامل دي اتاش، یو لوی هش میز پلي کول چې په یو واحد سرلیک فایل کې راځي. په نورو قضیو کې، هیڅ انحصار شتون نلري، ترڅو پروژه پیچلې نه کړي.

په کوډ کې ډیری تبصرې شتون لري ترڅو تاسو سره په پوهیدو کې مرسته وکړي. د کوډ په څو کرښو کې د ساده ویب سرور په توګه، ZeroHTTPd د ویب پراختیا لپاره لږ تر لږه چوکاټ هم دی. دا محدود فعالیت لري، مګر د جامد فایلونو او خورا ساده "متحرک" پاڼو خدمت کولو توان لري. زه باید ووایم چې ZeroHTTPd د لوړ فعالیت لینکس غوښتنلیکونو رامینځته کولو څرنګوالي زده کولو لپاره ښه دی. په لویه کچه، ډیری ویب خدمتونه غوښتنو ته انتظار کوي، دوی یې وګورئ او پروسس یې کړئ. دا په حقیقت کې هغه څه دي چې ZeroHTTPd به وکړي. دا د زده کړې وسیله ده، نه تولید. دا د غلطۍ اداره کولو کې عالي ندي او احتمال نلري چې غوره امنیتي کړنې وغوړوي (هو هو ، ما کارولې strcpy) یا د C ژبې هوښیار چلونه. مګر زه هیله لرم چې دا خپله دنده په ښه توګه ترسره کړي.

د لینکس شبکې غوښتنلیک فعالیت. پیژندنه
ZeroHTTPd کور پاڼه. دا کولی شي د عکسونو په شمول مختلف فایلونه تولید کړي

د میلمنو کتاب غوښتنلیک

عصري ویب غوښتنلیکونه معمولا په جامد فایلونو پورې محدود ندي. دوی د مختلفو ډیټابیسونو، کیچونو او نورو سره پیچلي تعاملات لري. نو موږ به یو ساده ویب اپلیکیشن جوړ کړو چې د "مېلمنو کتاب" په نوم یادیږي چیرې چې لیدونکي د دوی نومونو لاندې ننوتل پریږدي. د میلمنو کتاب پلورنځي ننوتل مخکې پاتې دي. د پاڼې په پای کې د لیدونکي کاونټر هم شتون لري.

د لینکس شبکې غوښتنلیک فعالیت. پیژندنه
د ویب غوښتنلیک "د میلمنو کتاب" ZeroHTTPd

د لیدونکي کاونټر او د میلمنو کتاب ننوتل په ریډیس کې زیرمه شوي. د Redis سره د اړیکو لپاره، خپل طرزالعملونه پلي کیږي؛ دوی په بهرني کتابتون پورې اړه نلري. زه د هومبریو کوډ رامینځته کولو لوی پرستار نه یم کله چې په عامه توګه شتون ولري او ښه ازمول شوي حلونه وي. مګر د ZeroHTTPd هدف د لینکس فعالیت مطالعه کول او بهرني خدماتو ته لاسرسی دی ، پداسې حال کې چې د HTTP غوښتنو خدمت کول د فعالیت جدي اغیزه لري. موږ باید زموږ په هر سرور جوړښت کې د ریډیس سره اړیکې په بشپړ ډول کنټرول کړو. په ځینو جوړښتونو کې موږ د بلاک کولو زنګونه کاروو، په نورو کې موږ د پیښې پر بنسټ پروسیجرونه کاروو. د بهرني ریډیس پیرودونکي کتابتون کارول به دا کنټرول چمتو نکړي. سربیره پردې ، زموږ کوچني ریډیس پیرودونکي یوازې یو څو دندې ترسره کوي (د کیلي ترلاسه کول ، تنظیم کول ، او زیاتول؛ ترلاسه کول او یو صف ته ضمیمه کول). سربیره پردې ، د ریډیس پروتوکول خورا ښکلی او ساده دی. تاسو حتی اړتیا نلرئ چې دا په ځانګړي ډول تدریس کړئ. حقیقت دا دی چې پروتوکول ټول کار د کوډ په سلو لینونو کې کوي ښیې چې دا څومره ښه فکر شوی.

لاندې ارقام ښیې چې غوښتنلیک څه کوي کله چې پیرودونکي (براوزر) غوښتنه وکړي /guestbookURL.

د لینکس شبکې غوښتنلیک فعالیت. پیژندنه
د میلمنو کتاب غوښتنلیک څنګه کار کوي

کله چې د میلمستون کتاب پا pageه صادرولو ته اړتیا ولري ، نو د فایل سیسټم ته یو زنګ دی چې ټیمپلیټ په حافظه کې لوستل شي او ریډیس ته درې شبکې زنګونه. د ټیمپلیټ فایل په پورته سکرین شاټ کې د پاڼې لپاره ډیری HTML مینځپانګې لري. د مینځپانګې متحرک برخې لپاره ځانګړي ځای لرونکي هم شتون لري: پوسټونه او لیدونکي کاونټر. موږ یې له Redis څخه ترلاسه کوو، پاڼې ته یې داخلوو او پیرودونکي ته په بشپړ ډول جوړ شوي منځپانګې چمتو کوو. ریډیس ته دریم زنګ مخنیوی کیدی شي ځکه چې ریډیس د نوي کلیدي ارزښت بیرته راګرځوي کله چې زیاتوالی ومومي. په هرصورت ، زموږ د سرور لپاره ، کوم چې د غیر متمرکز پیښې پراساس جوړښت لري ، د شبکې ډیری زنګونه د زده کړې اهدافو لپاره ښه ازموینه ده. نو موږ د لیدونکو شمیره د ریډیس بیرته ستنیدو ارزښت رد کړو او د جلا تلیفون سره یې پوښتنه کوو.

د سرور جوړښتونه ZeroHTTPd

موږ د ورته فعالیت سره د ZeroHTTPd اوه نسخې رامینځته کوو مګر مختلف جوړښتونه:

  • تکراري
  • د فورک سرور (په هره غوښتنه کې د ماشوم یوه پروسه)
  • د پری فورک سرور (پروسو پری فورک کول)
  • د اجرا کولو تارونو سره سرور (په هره غوښتنه یوه تار)
  • د مخکینۍ موضوع جوړولو سره سرور
  • د معمارۍ پر بنسټ poll()
  • د معمارۍ پر بنسټ epoll

موږ د HTTP غوښتنو سره د سرور په پورته کولو سره د هر جوړښت فعالیت اندازه کوو. مګر کله چې د خورا موازي جوړښتونو پرتله کول، د پوښتنو شمیر ډیریږي. موږ درې ځله ازموینه کوو او اوسط محاسبه کوو.

د ازموینې میتودولوژي

د لینکس شبکې غوښتنلیک فعالیت. پیژندنه
د زیروHTTPd بار ازموینې تنظیم کول

دا مهمه ده چې د ازموینې په جریان کې ، ټولې برخې په ورته ماشین کې نه چلیږي. په دې حالت کې، OS اضافي مهالویش سرته رسوي ځکه چې اجزا د CPU لپاره سیالي کوي. د هر ټاکل شوي سرور جوړښتونو سر باندې د عملیاتي سیسټم اندازه کول د دې تمرین یو له خورا مهم اهدافو څخه دی. د نورو متغیرونو اضافه کول به پروسې ته زیان ورسوي. له همدې امله، په پورته انځور کې ترتیب غوره کار کوي.

دا هر یو سرور څه کوي؟

  • load.unixism.net: دا هغه ځای دی چې موږ یې چلوو ab، د اپاچی بنچمارک افادیت. دا زموږ د سرور جوړښتونو ازموینې لپاره اړین بار تولیدوي.
  • nginx.unixism.net: ځینې وختونه موږ غواړو چې د سرور پروګرام له یو څخه زیات مثالونه چلوو. د دې کولو لپاره، د مناسبو ترتیباتو سره د نګینکس سرور د بار بار بیلانس په توګه کار کوي چې راځي ab زموږ د سرور پروسو ته.
  • zerohttpd.unixism.net: دلته موږ خپل سرور پروګرامونه په اوو مختلفو جوړښتونو چلوو، په یو وخت کې.
  • redis.unixism.net: دا سرور د Redis ډیمون چلوي، چیرې چې د میلمستون ثبتونه او د لیدونکو شمیرې زیرمه کیږي.

ټول سرورونه د ورته پروسیسر کور پرمخ ځي. نظر دا دی چې د هر جوړښت اعظمي فعالیت ارزونه وکړي. څرنګه چې ټول سرور پروګرامونه په ورته هارډویر کې ازمول شوي، دا د پرتله کولو لپاره بنسټیز دی. زما د ازموینې ترتیب د ډیجیټل بحر څخه کرایه شوي مجازی سرورونه لري.

موږ څه اندازه کوو؟

تاسو کولی شئ مختلف شاخصونه اندازه کړئ. موږ په ورکړل شوي ترتیب کې د هر معمارۍ فعالیت ارزونه کوو د سرورونو بارولو سره د موازي مختلف کچو غوښتنو سره: بار له 20 څخه تر 15 همغږي کاروونکو پورې وده کوي.

د ازموینې پایلې

لاندې چارټ د موازي په بیلابیلو کچو کې په مختلف جوړښتونو کې د سرورونو فعالیت ښیې. y-axis په هره ثانیه کې د غوښتنو شمیر دی، x-axis موازي ارتباط دی.

د لینکس شبکې غوښتنلیک فعالیت. پیژندنه

د لینکس شبکې غوښتنلیک فعالیت. پیژندنه

د لینکس شبکې غوښتنلیک فعالیت. پیژندنه

لاندې د پایلو سره یو جدول دی.

په هره ثانیه کې غوښتنې

موازي
تکراري
فورک
پری فورک
خپرونه
مخکې خپرونه
سروې
epoll

20
7
112
2100
1800
2250
1900
2050

50
7
190
2200
1700
2200
2000
2000

100
7
245
2200
1700
2200
2150
2100

200
7
330
2300
1750
2300
2200
2100

300
-
380
2200
1800
2400
2250
2150

400
-
410
2200
1750
2600
2000
2000

500
-
440
2300
1850
2700
1900
2212

600
-
460
2400
1800
2500
1700
2519

700
-
460
2400
1600
2490
1550
2607

800
-
460
2400
1600
2540
1400
2553

900
-
460
2300
1600
2472
1200
2567

1000
-
475
2300
1700
2485
1150
2439

1500
-
490
2400
1550
2620
900
2479

2000
-
350
2400
1400
2396
550
2200

2500
-
280
2100
1300
2453
490
2262

3000
-
280
1900
1250
2502
پراخه خپرول
2138

5000
-
پراخه خپرول
1600
1100
2519
-
2235

8000
-
-
1200
پراخه خپرول
2451
-
2100

10،000
-
-
پراخه خپرول
-
2200
-
2200

11،000
-
-
-
-
2200
-
2122

12،000
-
-
-
-
970
-
1958

13،000
-
-
-
-
730
-
1897

14،000
-
-
-
-
590
-
1466

15،000
-
-
-
-
532
-
1281

د ګراف او جدول څخه دا لیدل کیدی شي چې د 8000 څخه پورته یوځل غوښتنې موږ یوازې دوه لوبغاړي پاتې یو: پری فورک او ایپل. لکه څنګه چې بار ډیریږي، د ټولپوښتنې پر بنسټ سرور د سټیمینګ څخه بدتر ترسره کوي. د تار جوړولو دمخه جوړښت د ایپل لپاره یو وړ سیالي کوونکی دی ، د دې شاهدي چې د لینکس کرنل څومره ښه تارونه تنظیموي.

ZeroHTTPd سرچینې کوډ

ZeroHTTPd سرچینې کوډ دلته. د هر معمارۍ لپاره جلا لارښود شتون لري.

ZeroHTTPd │ ├── 01_iterative │ ├── main.c ├── 02_forking │ ├── main.c ├── main.c ├── 03_preforking ├├─ main├c. 04_ تار کول │ ├── main.c ├── 05_پخوانی خبرتیا │ ├── main.c ├── 06_poll │ ├── main.c ├── 07_epoll │ └── main.c ├├le─ main.c ├Make├le─ main.c ├── index.html │ └── ټوک png └── کينډۍ └── ميلمستون └── index.html

د ټولو جوړښتونو لپاره د اوو لارښودونو سربیره، دوه نور د لوړ پوړ لارښود کې شتون لري: عامه او ټیمپلیټونه. لومړی د index.html فایل او د لومړي سکرین شاټ عکس لري. تاسو کولی شئ هلته نورې فایلونه او فولډرې وساتئ، او ZeroHTTPd باید دا جامد فایلونه پرته له کومې ستونزې خدمت وکړي. که چیرې په براوزر کې لاره په عامه فولډر کې له لارې سره سمون ولري ، نو ZeroHTTPd پدې لارښود کې د index.html فایل لټوي. د میلمه کتاب لپاره مینځپانګه په متحرک ډول رامینځته کیږي. دا یوازې کور پاڼه لري، او د هغې محتوا د 'templates/guestbook/index.html' د فایل پر بنسټ والړ دی. ZeroHTTPd په اسانۍ سره د توسیع لپاره متحرک پاڼې اضافه کوي. نظر دا دی چې کاروونکي کولی شي دې لارښود ته ټیمپلیټونه اضافه کړي او د اړتیا سره سم ZeroHTTPd پراخ کړي.

د ټولو اوو سرورونو جوړولو لپاره، چلول make all د لوړې کچې لارښود څخه - او ټول جوړونه به پدې لارښود کې څرګند شي. د اجرا وړ فایلونه په ډایرکټر کې د عامه او ټیمپلیټ لارښودونو لپاره ګوري چې له کوم ځای څخه دوی پیل شوي.

لینکس API

تاسو اړتیا نلرئ په لینکس API کې ښه پوهه ولرئ ترڅو د دې مقالې لړۍ کې معلومات درک کړئ. په هرصورت، زه د دې موضوع په اړه نور لوستلو وړاندیز کوم؛ په انټرنیټ کې د حوالې ډیری سرچینې شتون لري. که څه هم موږ به د لینکس APIs ډیری کټګوریو سره اړیکه ونیسو، زموږ تمرکز به اساسا په پروسو، تارونو، پیښو، او د شبکې سټیک باندې وي. د لینکس API په اړه د کتابونو او مقالو سربیره ، زه د سیسټم تلیفونونو او کارول شوي کتابتون کارونو لپاره د مانا لوستلو وړاندیز هم کوم.

فعالیت او توزیع وړتیا

د فعالیت او توزیع کولو په اړه یو یادونه. په نظرياتي توګه، د دوی ترمنځ هیڅ اړیکه نشته. تاسو کولی شئ یو ویب خدمت ولرئ چې ډیر ښه کار کوي، د یو څو ملی ثانیو د غبرګون وخت سره، مګر دا په هیڅ ډول اندازه نه کوي. په ورته ډول، کیدای شي یو ضعیف فعالیت لرونکی ویب اپلیکیشن وي چې د ځواب ویلو لپاره څو ثانیې وخت نیسي، مګر دا د لسګونو زرو همغږي کاروونکو اداره کولو لپاره د لسګونو لخوا اندازه کیږي. په هرصورت ، د لوړ فعالیت او توزیع کولو ترکیب خورا پیاوړی ترکیب دی. د لوړ فعالیت غوښتنلیکونه عموما سرچینې لږ کاروي او په دې توګه په سرور کې ډیر همغږي کاروونکو ته په اغیزمنه توګه خدمت کوي، لګښتونه کموي.

د CPU او I/O دندې

په نهایت کې، په کمپیوټر کې تل دوه ډوله دندې شتون لري: د I/O او CPU لپاره. د انټرنیټ له لارې غوښتنې ترلاسه کول (شبکه I/O)، د فایلونو خدمت کول (شبکه او ډیسک I/O)، د ډیټابیس سره اړیکه (شبکه او ډیسک I/O) ټول I/O فعالیتونه دي. د ډیټابیس ځینې پوښتنې کولی شي یو څه CPU ژور وي (ترتیب کول ، د یو ملیون پایلو اوسط کول ، او داسې نور). ډیری ویب غوښتنلیکونه د اعظمي ممکنه I/O لخوا محدود دي، او پروسیسر په ندرت سره په بشپړ ظرفیت کې کارول کیږي. کله چې تاسو وګورئ چې ځینې I/O دندې ډیری CPU کاروي، دا ډیری احتمال د ضعیف غوښتنلیک جوړښت نښه ده. دا پدې معنی کیدی شي چې د CPU سرچینې د پروسې مدیریت او د شرایطو بدلولو کې ضایع کیږي - او دا په بشپړ ډول ګټور ندي. که تاسو یو څه کوئ لکه د عکس پروسس کول، د آډیو فایل تبادله، یا د ماشین زده کړه، نو بیا غوښتنلیک پیاوړې CPU سرچینو ته اړتیا لري. مګر د ډیری غوښتنلیکونو لپاره دا قضیه نده.

د سرور جوړښتونو په اړه نور معلومات ترلاسه کړئ

  1. لومړۍ برخه: تکراري جوړښت
  2. دویمه برخه. د فورک سرورونه
  3. دریمه برخه. پری فورک سرورونه
  4. څلورمه برخه. سرورونه د اجرا کولو تارونو سره
  5. برخه V. مخکینۍ موضوع سرورونه
  6. شپږمه برخه. د پول پر بنسټ معمارۍ
  7. برخه VII. د ایپل پر بنسټ جوړښت

سرچینه: www.habr.com

Add a comment