OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየርየጉባዔውን ዘገባ ግልባጭ በድጋሚ እያተምን ነው። HighLoad ++ 2016, ይህም ባለፈው ዓመት ህዳር 7-8 ላይ ሞስኮ አቅራቢያ Skolkovo ውስጥ ተካሄደ. ቭላድሚር ፕሮታሶቭ የNGINX ተግባርን በOpenResty እና Lua እንዴት ማራዘም እንደሚቻል ያብራራል።

ጤና ይስጥልኝ ሁሉም ሰው, ስሜ ቭላድሚር ፕሮታሶቭ እባላለሁ, በ Parallels ላይ እሰራለሁ. ስለራሴ ትንሽ እነግርዎታለሁ። በሕይወቴ ሦስት አራተኛውን ኮድ በመጻፍ አሳልፋለሁ። በጥሬው ፕሮግራመር ሆንኩኝ፡ አንዳንድ ጊዜ በህልሜ ኮድ አይቻለሁ። ሩብ ህይወት የኢንዱስትሪ ልማት ነው, በቀጥታ ወደ ምርት የሚገባውን ኮድ መጻፍ. አንዳንዶቻችሁ የምትጠቀሙት ግን የማታውቁት ኮድ።

ስለዚህ ምን ያህል መጥፎ እንደነበረ ይገባዎታል. ትንሽ ልጅ ሳለሁ፣ መጥቼ እነዚህ ባለ ሁለት ቴራባይት ዳታቤዝ ተሰጠኝ። አሁን እዚህ ላለ ሁሉም ሰው ከፍተኛ ጭነት ነው። ወደ ኮንፈረንሶች ሄጄ ጠየቅሁ፡- “ወንዶች፣ ንገሩኝ፣ ትልቅ መረጃ አላችሁ፣ ሁሉም ነገር ጥሩ ነው? እዚያ ስንት መሰረት አለህ? “100 ጊጋባይት አለን!” ብለው መለሱልኝ። “አሪፍ፣ 100 ጊጋባይት!” አልኩት። እና የፒከር ፊቴን እንዴት በጥንቃቄ መጠበቅ እንዳለብኝ ለራሴ እያሰብኩ ነበር። ይመስላችኋል፣ አዎ፣ ሰዎቹ ጥሩ ናቸው፣ እና ከዚያ ተመልሰህ በእነዚህ ባለብዙ ቴራባይት የውሂብ ጎታዎች ትመርጣለህ። እና ይሄ - ጁኒየር መሆን. ይህ ምን ዓይነት ድብደባ እንደሆነ መገመት ትችላለህ?

ከ20 በላይ የፕሮግራሚንግ ቋንቋዎችን አውቃለሁ። ይህ ስሰራ ማወቅ የነበረብኝ ነገር ነው። በ Erlang፣ C፣ C++፣ Lua፣ Python፣ Ruby፣ ሌላ ነገር ኮድ ይሰጡዎታል እና ሁሉንም መቁረጥ አለብዎት። በአጠቃላይ, ማድረግ ነበረብኝ. ትክክለኛውን ቁጥር ለማስላት አልተቻለም, ነገር ግን በ 20 ኛው አካባቢ የሆነ ቦታ ቁጥሩ ጠፍቷል.

ሁሉም የቀረቡት ትይዩዎች ምን እንደሆኑ እና ምን እንደምናደርግ ስለሚያውቅ፣ ምን ያህል አሪፍ እንደሆንን እና ምን እንደምናደርግ አልናገርም። በአለም ዙሪያ 13 ቢሮዎች, ከ 300 በላይ ሰራተኞች, በሞስኮ, ታሊን እና ማልታ ውስጥ ልማት እንዳለን እነግርዎታለሁ. ከፈለጉ, መውሰድ እና በክረምት ቀዝቃዛ ከሆነ እና ጀርባዎን ማሞቅ ከፈለጉ ወደ ማልታ መሄድ ይችላሉ.

በተለይም የእኛ ዲፓርትመንት በ Python 2 ውስጥ ይጽፋል. እኛ በንግድ ስራ ላይ ነን እና ፋሽን ቴክኖሎጂዎችን ለመተግበር ጊዜ የለንም, ስለዚህ እንሰቃያለን. ዲጃንጎን የምንጠቀመው ሁሉም ነገር ስላለው ነው፣ እና አላስፈላጊ የሆነውን ወስደን ወረወርነው። እንዲሁም MySQL፣ Redis እና NGINX። ሌሎች ብዙ ጥሩ ነገሮችም አሉን። MongoDB አለን ፣ ዙሪያውን የሚሮጡ ጥንቸሎች አሉን ፣ ሁሉም ነገር አለን - ግን የእኔ አይደለም ፣ እና እኔ አላደርገውም።

ክፍት ሬስቲ

ስለራሴ ነገርኩት። እስቲ ዛሬ ስለምናገረው ነገር እንወቅ፡-

  • OpenResty ምንድን ነው እና ከምን ጋር ነው የሚበላው?
  • ፓይዘን፣ ኖድጄኤስ፣ ፒኤችፒ፣ ሂድ እና ሁሉም ሰው የሚደሰትባቸው ሌሎች ጥሩ ነገሮች እያለን ለምን ሌላ ጎማ እንደገና እንሰራለን።
  • እና ከህይወት ጥቂት ምሳሌዎች። 3,5 ሰአታት ስለፈጀብኝ ሪፖርቱን ብዙ መቁረጥ ነበረብኝ, ስለዚህ ጥቂት ምሳሌዎች ይኖራሉ.

OpenResty NGINX ነው። ለእሱ ምስጋና ይግባውና በደንብ የተፃፈ እና በፍጥነት የሚሰራ ሙሉ አገልግሎት ያለው የድር አገልጋይ አለን. አብዛኞቻችን NGINXን በምርት ውስጥ እንጠቀማለን ብዬ አስባለሁ። እሱ ፈጣን እና አሪፍ እንደሆነ ሁላችሁም ታውቃላችሁ። በውስጡ አሪፍ የተመሳሰለ I/O ሠሩ፣ ስለዚህ ምንም ነገር ማሽከርከር አያስፈልገንም፣ ልክ በፓይዘን ውስጥ እንዳደረጉት። Gevent አሪፍ ነው አሪፍ ነው ነገር ግን ሲ ኮድ ከፃፉ እና የሆነ ችግር ከተፈጠረ በጌቬንት አማካኝነት ማረም ያብዳሉ። ልምዱ ነበረኝ፡ እዚያ ምን እንደተፈጠረ ለማወቅ ሁለት ሙሉ ቀናት ፈጅቷል። አንድ ሰው ለብዙ ሳምንታት ካልቆፈረ ፣ ችግሩን ካላገኘ ፣ በይነመረብ ላይ ቢጽፍ እና ጎግል ባያገኘው ኖሮ ሙሉ በሙሉ እብድ እንሆን ነበር።

NGINX አስቀድሞ መሸጎጫ እና የማይንቀሳቀስ ይዘት ተከናውኗል። በሆነ ቦታ ላይ ገላጭዎችን እንዳያጡ, የሆነ ቦታ እንዳይዘገዩ, ይህንን በሰብአዊነት እንዴት እንደሚያደርጉት መጨነቅ አያስፈልግዎትም. Nginx ለማሰማራት በጣም ምቹ ነው, ምን መውሰድ እንዳለቦት ማሰብ አያስፈልግዎትም - WSGI, PHP-FPM, Gunicorn, Unicorn. Nginx ተጭኗል, ለአስተዳዳሪዎች ተሰጥቷል, ከእሱ ጋር እንዴት እንደሚሰሩ ያውቃሉ. Nginx ጥያቄዎችን በተቀናጀ መልኩ ያስኬዳል። ስለዚህ ጉዳይ ትንሽ ቆይቼ አወራለሁ። ባጭሩ ጥያቄውን ሲቀበል፣ ሲያስተናግድ እና ይዘቱን ለተጠቃሚው ሲያቀርብ ደረጃ አለው።

Nginx አሪፍ ነው፣ ነገር ግን አንድ ችግር አለ፡ ምንም እንኳን ሊዋቀር ቢችልም ወንዶቹ ወደ ውቅሩ ባጨናነቁት ጥሩ ባህሪያት እንኳን በበቂ ሁኔታ ተለዋዋጭ አይደለም። ይህ ኃይል በቂ አይደለም. ለዚህም ነው የ Taobao ሰዎች ከረጅም ጊዜ በፊት, ከስምንት አመት በፊት ይመስላል, ሉአን በውስጡ የገነቡት. ምን ይሰጣል?

  • ልክ. ትንሽ ነው. LuaJIT ከ100-200 ኪሎባይት የማህደረ ትውስታ በላይ እና አነስተኛ የአፈፃፀም ትርፍ ይሰጣል።
  • ፍጥነት. የ LuaJIT አስተርጓሚ በብዙ ሁኔታዎች ከ C ጋር ይቀራረባል፣ በአንዳንድ ሁኔታዎች በጃቫ ይሸነፋል፣ በሌላ በኩል ደግሞ ይበልጠዋል። ለተወሰነ ጊዜ በጣም ጥሩው የጂአይቲ ኮምፕሌተር እንደ ጥበብ ሁኔታ ይቆጠር ነበር። አሁን ቀዝቃዛዎች አሉ, ግን በጣም ከባድ ናቸው, ለምሳሌ, ተመሳሳይ V8. አንዳንድ የጄኤስ ተርጓሚዎች እና ጃቫ ሆትስፖት በአንዳንድ ቦታዎች ፈጣን ናቸው፣ ነገር ግን በአንዳንድ ቦታዎች አሁንም ይሸነፋሉ።
  • ለመማር ቀላል. የፔርል ኮድ ቤዝ ካለህ እና እያስያዝክ ካልሆነ የፐርል ፕሮግራመሮችን አያገኙም። እነሱ ስለሌሉ, ሁሉም ተወስደዋል, እና እነሱን ማስተማር ረጅም እና ከባድ ነው. ለሌላ ነገር ፕሮግራመሮችን ከፈለጉ፣ እንደገና ማሰልጠን ወይም እነሱን ማግኘት ሊኖርብዎ ይችላል። በሉዋ ጉዳይ ሁሉም ነገር ቀላል ነው። ማንኛውም ወጣት ሉአን በሶስት ቀናት ውስጥ መማር ይችላል። ለማወቅ ሁለት ሰዓት ያህል ፈጅቶብኛል። ከሁለት ሰዓታት በኋላ በምርት ውስጥ ኮድ እጽፋለሁ ። ከአንድ ሳምንት ገደማ በኋላ በቀጥታ ወደ ምርት ሄዶ ሄደ።

በውጤቱም, ይህንን ይመስላል.

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

እዚህ ብዙ ነገር አለ። OpenResty ሁለቱንም ሉሽ እና ሞተር ሞጁሎችን ሰብስቧል። እና ሁሉም ነገር ዝግጁ ነው - የተሰማራ እና የሚሰራ።

ምሳሌዎች

ግጥሙ ይበቃናል፣ ወደ ኮዱ እንሂድ። ትንሽ ሄሎ አለም እነሆ፡-

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ምን አለ? ይህ የኢንጂኖች መገኛ ነው። አንጨነቅም, የራሳችንን ማዞሪያ አንጽፍም, ዝግጁ የሆነን አንወስድም - ቀድሞውኑ በ NGINX ውስጥ አለን, ጥሩ እና ሰነፍ ህይወት እንኖራለን.

content_by_lua_block የሉአ ስክሪፕት በመጠቀም ይዘትን እያገለገልን ነው የሚል ብሎክ ነው። የኢንጂኖችን ተለዋዋጭ እንወስዳለን remote_addr እና አስገባ string.format. እንደዚያው ነው። sprintfበሉአ ብቻ ትክክል ብቻ። እና ለደንበኛው እንሰጠዋለን.

በውጤቱም, እንደሚከተለው ይሆናል.

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ግን ወደ እውነተኛው ዓለም እንመለስ። ሄሎ አለምን ወደ ምርት የሚያሰማራ የለም። የእኛ መተግበሪያ ብዙውን ጊዜ ወደ ዳታቤዝ ወይም ሌላ ቦታ ይሄዳል እና ብዙ ጊዜ ምላሽ ይጠብቃል።

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ዝም ብሎ ተቀምጦ ይጠብቃል። በጣም ጥሩ አይደለም. 100.000 ተጠቃሚዎች ሲመጡ, ለእኛ በጣም ከባድ ነው. ስለዚህ ቀላል መተግበሪያን እንደ ምሳሌ እንጠቀም። ምስሎችን ለምሳሌ ድመቶችን እንፈልጋለን. ግን መፈለግ ብቻ ሳይሆን ቁልፍ ቃላቶችን እናሰፋለን እና ተጠቃሚው "ድመቶችን" ከፈለገ ድመቶችን, ፀጉራማ ድመቶችን እና የመሳሰሉትን እናገኛለን. በመጀመሪያ የጥያቄውን መረጃ በጀርባው ላይ ማግኘት አለብን። ይህን ይመስላል።

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ሁለት መስመሮች የ GET መለኪያዎችን እንዲያነሱ ያስችሉዎታል, ምንም ውስብስብ ነገሮች የሉም. በመቀጠል፣ ለቁልፍ ቃል እና ቅጥያ ምልክት ካለው የውሂብ ጎታ፣ ይህንን መረጃ የምናገኘው መደበኛ የSQL ጥያቄን በመጠቀም ነው። ቀላል ነው። ይህን ይመስላል።

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ቤተ መፃህፍቱን በማገናኘት ላይ resty.mysql, ቀደም ሲል በኪት ውስጥ ያለን. ምንም ነገር መጫን አያስፈልገንም, ሁሉም ነገር ዝግጁ ነው. እንዴት እንደሚገናኙ እና የ SQL መጠይቅን እንጠቁማለን፡-

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

እዚህ ትንሽ አስፈሪ ነው, ግን ሁሉም ነገር ይሰራል. እዚህ 10 ገደብ ነው. 10 ግቤቶችን እናወጣለን, ሰነፍ ነን, ተጨማሪ ማሳየት አንፈልግም. በ SQL ውስጥ ስላለው ገደብ ረሳሁ.

በመቀጠል ለሁሉም ጥያቄዎች ስዕሎችን እናገኛለን. ብዙ ጥያቄዎችን እንሰበስባለን እና የተጠራውን የሉዋ ጠረጴዛ እንሞላለን። reqs, እና እናደርጋለን ngx.location.capture_multi.

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

እነዚህ ሁሉ ጥያቄዎች በትይዩ ተልከዋል፣ እና መልሶች ወደ እኛ ተመልሰዋል። የሥራው ጊዜ በጣም ቀርፋፋ ከሆነው ምላሽ ጊዜ ጋር እኩል ነው። ሁላችንም በ 50 ሚሊሰከንዶች ውስጥ ከተኩስን, እና መቶ ጥያቄዎችን ከላክን, በ 50 ሚሊሰከንዶች ውስጥ መልስ እናገኛለን.

ሰነፍ ስለሆንን HTTP እና መሸጎጫ አያያዝን መጻፍ ስለማንፈልግ NGINX ሁሉንም ነገር እንዲያደርግልን እናደርጋለን። እንዳየኸው ጥያቄ ነበር። url/fetchእነሆ እሱ፡-

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ቀላል እናደርጋለን proxy_pass, መሸጎጫ የት እንዳለ, እንዴት ማድረግ እንዳለብን እንጠቁማለን, እና ሁሉም ነገር ለእኛ ይሰራል.

ግን ይህ በቂ አይደለም, አሁንም መረጃውን ለተጠቃሚው መስጠት አለብን. በጣም ቀላሉ ሀሳብ ሁሉንም ነገር በ JSON ውስጥ ፣ በቀላሉ ፣ በሁለት መስመሮች ውስጥ መደርደር ነው። የይዘት አይነት እንሰጣለን JSON እንሰጣለን።

ግን አንድ ችግር አለ፡ ተጠቃሚው JSON ማንበብ አይፈልግም። የፊት-መጨረሻ ገንቢዎችን መሳብ አለብን። አንዳንድ ጊዜ መጀመሪያ ላይ ይህን ማድረግ አንፈልግም። እና የ SEO ስፔሻሊስቶች ስዕሎችን የምንፈልግ ከሆነ ለእነሱ ምንም ለውጥ የለውም ይላሉ. እና አንዳንድ ይዘቶችን ከሰጠናቸው የፍለጋ ፕሮግራሞቻችን ምንም ነገር አይጠቁሙም ይላሉ.

ስለ እሱ ምን ማድረግ አለበት? በእርግጥ ለተጠቃሚው HTML እንሰጠዋለን። በእጅ ማመንጨት comme il faut አይደለም፣ ስለዚህ አብነቶችን መጠቀም እንፈልጋለን። ለዚህ ቤተ-መጽሐፍት አለ lua-resty-template.

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ሦስቱን አስፈሪ ፊደላት ኦፒኤም አይተህ ይሆናል። OpenResty ከራሱ የጥቅል አቀናባሪ ጋር አብሮ ይመጣል፣በዚህም ብዙ የተለያዩ ሞጁሎችን በተለይም፣ lua-resty-template. ይህ ከጃንጎ አብነቶች ጋር ተመሳሳይ የሆነ ቀላል የአብነት ሞተር ነው። እዚያ ኮድ መጻፍ እና ተለዋዋጭ ምትክ ማከናወን ይችላሉ.

በውጤቱም, ሁሉም ነገር እንደዚህ ያለ ነገር ይመስላል.

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ውሂቡን ወስደን አብነቱን እንደገና በሁለት መስመሮች አደረግን. ተጠቃሚው ደስተኛ ነው, ድመቶችን ተቀብሏል. ጥያቄውን ስላሰፋን ለድመቶች የሚሆን የፀጉር ማኅተም ተቀበለ። በጭራሽ አታውቁም፣ ምናልባት እሱ በትክክል ይህንን እየፈለገ ሊሆን ይችላል፣ ነገር ግን ጥያቄውን በትክክል ማዘጋጀት አልቻለም።

ሁሉም ነገር አሪፍ ነው፣ ግን እኛ በመገንባት ላይ ነን እና ለተጠቃሚዎች እስካሁን ማሳየት አንፈልግም። ፈቃዱን እናድርግ። ይህንን ለማድረግ፣ NGINX ጥያቄውን በOpenResty ውሎች እንዴት እንደሚይዝ እንመልከት፡-

  • የመጀመሪያ ደረጃ - መዳረሻ, ተጠቃሚው ልክ እንደደረሰ, እና በአርእስቶች, በአይፒ አድራሻ እና በሌላ ውሂብ ተመለከትነው. ካልወደድን ወዲያውኑ ልንቆርጠው እንችላለን. ይህ ለፍቃድ ሊያገለግል ይችላል፣ ወይም ብዙ ጥያቄዎችን ከተቀበልን፣ በዚህ ደረጃ በቀላሉ ማቋረጥ እንችላለን።
  • እንደገና ጻፍ. አንዳንድ የጥያቄ ውሂብን እንደገና እንጽፋለን።
  • ይዘት. ይዘቱን ለተጠቃሚው እናደርሳለን።
  • ራስጌዎች ማጣሪያ. የምላሽ ራስጌዎችን እንተካለን. ከተጠቀምን proxy_passለተጠቃሚው ከመስጠታችን በፊት አንዳንድ ራስጌዎችን እንደገና መፃፍ እንችላለን።
  • የሰውነት ማጣሪያ. ሰውነታችንን መለወጥ እንችላለን.
  • መዝገብ - ምዝግብ ማስታወሻ. ያለ ተጨማሪ ንብርብር በelasticsearch ውስጥ ምዝግብ ማስታወሻዎችን መጻፍ ይችላሉ።

የእኛ ፍቃድ እንደዚህ ያለ ነገር ይመስላል።

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ይህንን ወደዚያ እንጨምራለን location, ቀደም ብለን የገለፅነውን እና የሚከተለውን ኮድ እዚያ ላይ አስቀምጠው.

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

የኩኪ ቶከን እንዳለን ለማየት እንሞክራለን። ካልሆነ፣ ፍቃድ እንጠይቃለን። ተጠቃሚዎች ተንኮለኛ ናቸው እና የኩኪ ማስመሰያ ማዘጋጀት እንደሚያስፈልጋቸው መገመት ይችላሉ። ስለዚህ በሬዲስ ውስጥም እናስቀምጠዋለን፡-

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ከRedis ጋር ለመስራት ኮድ በጣም ቀላል እና ከሌሎች ቋንቋዎች የተለየ አይደለም። በተመሳሳይ ጊዜ, ሁሉም ግብአት / ውፅዓት, እዚህ እና እዚያ, አይታገድም. የተመሳሰለ ኮድ ከጻፉ፣ በማይመሳሰል መልኩ ይሰራል። ከሞላ ጎደል gevent እንደ, ነገር ግን በደንብ ተከናውኗል.

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ፈቀዳውን እራሱ እናድርግ፡-

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

የጥያቄውን አካል ማንበብ አለብን እንላለን። የPOST ክርክሮችን እንቀበላለን እና የመግቢያ እና የይለፍ ቃል ትክክል መሆናቸውን እንፈትሻለን። ትክክል ካልሆኑ፣ ፍቃድ እንዲሰጡን እንቃወምዎታለን። እና ትክክል ከሆነ ምልክቱን በሬዲስ ውስጥ ይፃፉ፡-

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ኩኪውን ማዘጋጀትዎን አይርሱ, ይህ እንዲሁ በሁለት መስመሮች ይከናወናል.

OpenResty፡ NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ምሳሌው ቀላል እና ግምታዊ ነው. በእርግጥ ለሰዎች ድመቶችን የሚያሳይ አገልግሎት አንሰራም. ግን ማን ያውቃል። ስለዚህ በምርት ውስጥ ምን ሊደረግ እንደሚችል እንመልከት.

  • አነስተኛ ጀርባ. አንዳንድ ጊዜ ትንሽ ዳታ ወደ ጀርባ ማውጣት አለብን፡ የሆነ ቦታ ቀን ማስገባት አለብን፣ የሆነ ቦታ ዝርዝር ማሳየት አለብን፣ አሁን በጣቢያው ላይ ምን ያህል ተጠቃሚዎች እንዳሉ ይናገሩ፣ ቆጣሪ ወይም ስታቲስቲክስ ያያይዙ። በጣም ትንሽ የሆነ ነገር. አንዳንድ አነስተኛ ቁርጥራጮች በጣም በቀላሉ ሊሠሩ ይችላሉ. ይህ ፈጣን, ቀላል እና ታላቅ ያደርገዋል.
  • የውሂብ ቅድመ ሂደት. አንዳንድ ጊዜ ማስታወቂያዎችን ወደ ገጻችን መክተት እንፈልጋለን፣ እና ይህን ማስታወቂያ የምንቀበለው የኤፒአይ ጥያቄዎችን በመጠቀም ነው። እዚህ ማድረግ በጣም ቀላል ነው. ቀድሞውንም ተቀምጦ ጠንክሮ የሚሰራውን የኋለኛ ክፍል አንጫንም። እዚህ መውሰድ እና መሰብሰብ ይችላሉ. አንዳንድ JS አንድ ላይ እንሰበስባለን ወይም በተቃራኒው መፍታት እና የሆነ ነገር ለተጠቃሚው ከመስጠታችን በፊት ቀድመን ልንሰራው እንችላለን።
  • ለማይክሮ አገልግሎት የፊት ገጽታ. ይህ ደግሞ በጣም ጥሩ ጉዳይ ነው, እኔ ተግባራዊ አድርጌዋለሁ. ከዚያ በፊት፣ የኤሌክትሮኒካዊ ሪፖርት አቀራረብን በሚመለከት እና በአገሪቱ ውስጥ ካሉት ህጋዊ አካላት ግማሽ ያህሉ ሪፖርት በሚያቀርብ ቴንዞር ኩባንያ ውስጥ ሠርቻለሁ። አንድ አገልግሎት ፈጠርን ፣ ብዙ ነገሮች እዚያው ተመሳሳይ ዘዴ በመጠቀም ተደርገዋል-ማዘዋወር ፣ ፈቃድ እና ሌሎችም።
    OpenResty ለማይክሮ ሰርቪስዎ እንደ ሙጫ ሆኖ ሊያገለግል ይችላል፣ ይህም ለሁሉም ነገር አንድ መዳረሻ እና አንድ በይነገጽ ነው። ማይክሮ ሰርቪስ በዚህ መንገድ ሊጻፍ ስለሚችል Node.js እዚህ፣ ፒኤችፒ እዚህ፣ ፓይዘን እዚህ፣ አንዳንድ የኤርላንግ ነገር እዚህ አለ፣ እኛ በሁሉም ቦታ ተመሳሳይ ኮድ መፃፍ እንደማንፈልግ እንረዳለን። ስለዚህ, OpenResty ከፊት ለፊት ሊሰካ ይችላል.

  • ስታቲስቲክስ እና ትንታኔ. ብዙውን ጊዜ NGINX በመግቢያው ላይ ነው, እና ሁሉም ጥያቄዎች በእሱ ውስጥ ያልፋሉ. ለመሰብሰብ በጣም አመቺ የሆነው በዚህ ቦታ ነው. አንድ ነገር ወዲያውኑ ማስላት እና የሆነ ቦታ መስቀል ይችላሉ፣ ለምሳሌ፣ Elasticsearch፣ Logstash፣ ወይም በቀላሉ ወደ ምዝግብ ማስታወሻው ይፃፉ እና ከዚያ የሆነ ቦታ ይላኩት።
  • ባለብዙ ተጠቃሚ ስርዓቶች. ለምሳሌ የመስመር ላይ ጨዋታዎችን ለመስራት በጣም ጥሩ ናቸው። ዛሬ በኬፕ ታውን አሌክሳንደር ግላዲሽ OpenRestyን በመጠቀም የባለብዙ ተጫዋች ጨዋታን እንዴት በፍጥነት መተየብ እንደሚቻል ይናገራል።
  • ማጣሪያ ይጠይቁ (WAF). በአሁኑ ጊዜ ሁሉንም አይነት የዌብ አፕሊኬሽን ፋየርዎል መስራት ፋሽን ነው፡ የሚሰጡዋቸውን ብዙ አገልግሎቶች አሉ። OpenRestyን በመጠቀም፣ እንደፍላጎትዎ ጥያቄዎችን በቀላሉ እና በቀላሉ የሚያጣራ እራስዎ የድር መተግበሪያ ፋየርዎል ማድረግ ይችላሉ። ፓይዘን ካለህ ፒኤችፒ በእርግጠኝነት ወደ አንተ ውስጥ እንደማይገባ ተረድተሃል፣ በእርግጥ ከኮንሶሉ ውስጥ የትኛውም ቦታ ላይ ካልፈጠርከው በስተቀር። MySQL እና Python እንዳለህ ታውቃለህ። ምናልባት፣ አንድ ዓይነት የማውጫ መሻገሪያ ለማድረግ እና የሆነ ነገር ወደ ዳታቤዝ ውስጥ ለማስገባት ሊሞክሩ ይችላሉ። ስለዚህ፣ እንግዳ የሆኑ መጠይቆችን በፍጥነት እና በርካሽ ፊት ለፊት ማጣራት ይችላሉ።
  • ማህበረሰብ. OpenResty በNGINX ላይ ስለተገነባ፣ ጉርሻ አለው - ይህ NGINX ማህበረሰብ. እሱ በጣም ትልቅ ነው፣ እና መጀመሪያ ላይ ከሚኖሯቸው ጥያቄዎች ውስጥ ጥሩ ክፍል አስቀድሞ በNGINX ማህበረሰብ ተፈትቷል።

    Lua ገንቢዎች. ትናንት ወደ HighLoad++ የሥልጠና ቀን ከመጡት ሰዎች ጋር ተነጋገርኩ እና ታራንቶል በሉዋ ብቻ እንደተጻፈ ሰማሁ። ይህ እውነት አይደለም፣ ብዙ ነገሮች በሉዋ ተጽፈዋል። ምሳሌዎች፡ OpenResty፣ Prosody XMPP አገልጋይ፣ Love2D ጨዋታ ሞተር፣ ሉአ በዋርክራፍት እና በሌሎች ቦታዎች የተፃፈ። ብዙ የሉዋ ገንቢዎች አሉ፣ ትልቅ እና ምላሽ ሰጪ ማህበረሰብ አላቸው። ሁሉም የሉአ ጥያቄዎቼ በጥቂት ሰዓታት ውስጥ ተፈትተዋል። ወደ የደብዳቤ መላኪያ ዝርዝር ሲጽፉ፣ በጥሬው በጥቂት ደቂቃዎች ውስጥ ምን እና እንዴት፣ ምን እንደሆነ የሚገልጹ ብዙ ምላሾች አሉ። በጣም ምርጥ. እንደ አለመታደል ሆኖ እንዲህ ዓይነቱ ደግ መንፈሳዊ ማህበረሰብ በሁሉም ቦታ አይገኝም።
    የሆነ ነገር ከተሰበረ ችግር የሚከፍቱበት GitHub ለOpenResty አለ። በጎግል ቡድኖች ላይ የደብዳቤ መላኪያ ዝርዝር አለ፣ አጠቃላይ ጉዳዮችን የምትወያይበት፣ በቻይንኛ የደብዳቤ መላኪያ ዝርዝር አለ - በጭራሽ አታውቅም፣ ምናልባት እንግሊዝኛ አትናገርም፣ ግን ቻይንኛ ታውቃለህ።

ውጤቶች

  • OpenResty ለድር የተበጀ በጣም ምቹ ማዕቀፍ መሆኑን ለማስተላለፍ እንደቻልኩ ተስፋ አደርጋለሁ።
  • ኮዱ ከምንጽፈው ጋር ተመሳሳይ ስለሆነ የመግባት እንቅፋት አነስተኛ ነው፣ ቋንቋው በጣም ቀላል እና ዝቅተኛ ነው።
  • ያልተመሳሰለ I/O ያለ መልሶ ጥሪ ያቀርባል፣ አንዳንድ ጊዜ በ NodeJS ውስጥ እንደምንጽፈው ምንም አይነት ኑድል አይኖረንም።
  • አስፈላጊው ሞጁል እና የእኛ ኮድ ያለው NGINX ብቻ ስለሚያስፈልገን ቀላል ማሰማራት አለው, እና ሁሉም ነገር ወዲያውኑ ይሰራል.
  • ትልቅ እና ምላሽ ሰጪ ማህበረሰብ።

ማዘዋወር እንዴት እንደሚደረግ በዝርዝር አልገለጽኩም ፣ በጣም ረጅም ታሪክ ሆኖ ተገኘ።

ለሚያደርጉት ጥረት እናመሰግናለን!


ቭላድሚር ፕሮታሶቭ - OpenResty: NGINXን ወደ ሙሉ የመተግበሪያ አገልጋይ መቀየር

ምንጭ: hab.com

አስተያየት ያክሉ