Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Ալեքսեյ Նայդենով, գործադիր տնօրեն ITooLabs, խոսում է հեռահաղորդակցության պլատֆորմի մշակման մասին հեռահաղորդակցության օպերատորների համար Go (Golang) ծրագրավորման լեզվով։ Ալեքսեյը նաև կիսվում է պլատֆորմը տեղակայելու և գործարկելու իր փորձով ասիական հեռահաղորդակցության խոշորագույն օպերատորներից մեկում, որն օգտագործել է հարթակը ձայնային փոստի (VoiceMail) և վիրտուալ PBX (Cloud PBX) ծառայություններ տրամադրելու համար:

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Ալեքսեյ Նայդենով (այսուհետ՝ Ա.Ն.). - Բարեւ բոլորին! Ես Ալեքսեյ Նայդենովն եմ։ Ես ITooLabs-ի տնօրենն եմ: Նախ կուզենայի պատասխանել, թե ինչով եմ զբաղված այստեղ և ինչպես եմ հայտնվել այստեղ։

Եթե ​​նայեք Bitrix24 Marketplace-ին (բաժին «Հեռախոսակապ»), ապա այնտեղ գտնվող 14 հավելվածները և 36-ը (40%) մենք ենք.

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Ավելի ճիշտ՝ սրանք մեր գործընկեր օպերատորներն են, բայց այս ամենի հետևում կանգնած է մեր հարթակը (Հարթակը որպես ծառայություն)՝ այն, ինչ մենք նրանց վաճառում ենք մի փոքր կոպեկով։ Իրականում, ես կցանկանայի խոսել այս հարթակի զարգացման և այն մասին, թե ինչպես մենք եկանք Go:

Այժմ մեր հարթակի համարներն են.

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

44 գործընկեր օպերատորներ, ներառյալ MegaFon-ը: Ընդհանրապես, մենք սիրում ենք արկածների գնալ, և իրականում մեզ հասանելի են 100 օպերատորների 44 միլիոն բաժանորդներ այստեղ՝ Ռուսաստանում: Հետևաբար, եթե ինչ-որ մեկը բիզնես գաղափարներ ունի, մենք միշտ ուրախ ենք լսել նրանց:

  • 5000 օգտվող ընկերություններ:
  • Ընդհանուր 20 բաժանորդ։ Ամեն ինչ b000b է. մենք աշխատում ենք միայն ընկերությունների հետ:
  • Օրվա ընթացքում րոպեում 300 զանգ։
  • Անցյալ տարի 100 միլիոն զանգի րոպե (մենք նշեցինք): Սա առանց հաշվի առնելու ներքին բանակցությունները, որոնք մեր հարթակում են։

Ինչպե՞ս սկսվեց:

Ինչպե՞ս են ճիշտ տղաները սկսում ստեղծել իրենց հարթակը: Պետք է նաև հաշվի առնել, որ մենք ունեցել ենք «հարդքոր ձեռնարկության» զարգացման պատմություն և նույնիսկ ձեռնարկության համար տարվա ամենաճշգրիտ ժամանակ։ Դա այն երջանիկ պահն էր, երբ գալիս ես հաճախորդի մոտ և ասում. «Մեզ ևս մի քանի սերվեր է պետք»: Իսկ հաճախորդը. «Այո, հարց չկա: Մենք դարակում ունենք տասը:

Այսպիսով, մենք արեցինք Oracle, Java, WebSphere, Db2 և այդ ամենը: Հետևաբար, մենք վերցրեցինք, իհարկե, լավագույն վաճառող լուծումները, ինտեգրեցինք դրանք և փորձեցինք հանել դրա հետ: Նրանք ինքնուրույն էին խաղում: Դա կլինի այսպիսի ներքին ստարտափ։

Ամեն ինչ սկսվեց 2009թ. 2006 թվականից մենք սերտորեն ներգրավված ենք օպերատորների որոշումների մեջ, այսպես թե այնպես: Մենք պատրաստեցինք մի քանի հատուկ վիրտուալ PBX (ինչպես այն, ինչ հիմա ունենք պատվերով). մենք նայեցինք, որոշեցինք, որ դա լավ է և որոշեցինք ակտիվացնել ներքին նորաստեղծ ընկերություն:

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Վերցրեք VMWare-ը: Քանի որ մենք ինքնուրույն քայլում էինք, մենք ստիպված եղանք անմիջապես թողնել սառը վաճառող Storage-ը: Դրանց մասին մենք ամեն ինչ գիտենք. որ խոստումները պետք է բաժանել 3-ի, իսկ արժեքը պետք է բազմապատկել 10-ով: Հետևաբար, մենք արեցինք DirDB և այլն:

Հետո այն սկսեց աճել։ Դրան ավելացավ բիլինգ ծառայությունը, քանի որ հարթակն այլևս չէր կարողանում հաղթահարել: Այնուհետև MySQL-ից բիլինգի սերվերը տեղափոխվեց Մոնգո: Արդյունքում մենք ստացանք աշխատանքային լուծում, որը մշակում է այնտեղ գնացող բոլոր զանգերը.

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Բայց ինչ-որ տեղ այնտեղ, ներսում, նույն վաճառող ապրանքն է պտտվում՝ հիմնականը, միջուկայինը, որը մենք ժամանակին վերցրել ենք։ Մոտավորապես մինչև 2011 թվականի վերջ մենք ինքներս հասկացանք, որ մեզ համար հիմնական խոչընդոտը, իհարկե, կլինի հենց այս ապրանքը. մենք կբախվենք դրան: Մենք մեր դիմաց տեսանք մի պատ, որի մեջ մենք վազում էինք ամբողջ վազքով, երբ հաճախորդները քայլում էին, ավելանում էին:
Ըստ այդմ, մենք պետք է ինչ-որ բան անեինք։ Իհարկե, մենք բավականին շատ հետազոտություններ կատարեցինք տարբեր ապրանքների վերաբերյալ՝ և՛ բաց կոդով, և՛ վաճառողներին: Ես հիմա չեմ անդրադառնա սրա վրա, հարցը դա չէ: Հենց վերջին փոխարինումը, որի մասին մենք մտածում էինք, մեր սեփական հարթակը պատրաստելն էր:

Ի վերջո, մենք եկանք այս տարբերակին. Ինչո՞ւ։ Քանի որ բոլոր վաճառողներն ու բաց կոդով արտադրանքները ստեղծվել են 10 տարի առաջ խնդիրները լուծելու համար: Դե, եթե 10 տարեկան, և մի քանիսը ավելին: Մեզ համար ընտրությունն ակնհայտ է դարձել. կա՛մ մենք հրաժեշտ ենք տալիս իդեալական ծառայության մեր հիանալի գաղափարին (գործընկերների, օպերատորների և ինքներս մեզ), կամ մենք անում ենք ինչ-որ մեր սեփականը:

Մենք որոշեցինք այլ բան անել:

Պլատֆորմի պահանջներ

Եթե ​​երկար ժամանակ ինչ-որ բան եք անում (շահագործում եք ուրիշի արտադրանքը), ապա ձեր գլխում կամաց-կամաց ձևավորվում է այն միտքը՝ ինչպե՞ս ես ինքս դա անեի։ Քանի որ մենք բոլորս ընկերությունում ծրագրավորողներ ենք (բացի վաճառողներից, ոչ ծրագրավորողներ չկան), մեր պահանջները վաղուց են ձևավորվել, և դրանք պարզ էին.

  1. Զարգացման բարձր արագություն: Վաճառողի ապրանքը, որը տանջում էր մեզ, ի սկզբանե մեզ չէր սազում, քանի որ ամեն ինչ երկար ու դանդաղ էր ստացվում։ Մենք ուզում էինք արագ. մենք ունեինք շատ գաղափարներ: Մենք դեռ շատ գաղափարներ ունենք, բայց հետո գաղափարների ցանկն այնպիսին էր, որ թվում էր, թե տասը տարի առաջ է: Հիմա ընդամենը մեկ տարի։
  2. Բազմամիջուկ երկաթի առավելագույն օգտագործումը: Սա նույնպես կարևոր էր մեզ համար, քանի որ մենք տեսանք, որ ավելի ու ավելի շատ միջուկներ են լինելու։
  3. Բարձր հուսալիություն: Նա, ում մենք էլ լացեցինք։
  4. Սխալների բարձր հանդուրժողականություն:
  5. Մենք ուզում էինք ավարտվել ամենօրյա թողարկման գործընթացով: Դա անելու համար մեզ անհրաժեշտ էր լեզվի ընտրություն:

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Համապատասխանաբար, արտադրանքի պահանջներից, որոնք մենք ներկայացրել ենք մեզ, լեզվին ներկայացվող պահանջները հստակ տրամաբանական կերպով աճում են։

  1. Եթե ​​մենք ցանկանում ենք աջակցություն բազմաբնույթ համակարգերի համար, ապա մեզ անհրաժեշտ է աջակցություն զուգահեռ կատարման համար:
  2. Եթե ​​մեզ անհրաժեշտ է զարգացման արագություն, մեզ պետք է լեզու, որն աջակցում է մրցակցային զարգացմանը, մրցակցային ծրագրավորմանը: Եթե ​​որևէ մեկը չի հանդիպել տարբերությանը, ապա դա շատ պարզ է.
    • զուգահեռ ծրագրավորումն այն մասին է, թե ինչպես են երկու տարբեր թելեր աշխատում տարբեր միջուկների վրա.
    • միաժամանակյա կատարումը, ավելի կոնկրետ՝ միաժամանակյա աջակցությունը, այն մասին է, թե ինչպես է լեզուն (կամ գործարկման ժամանակը, ինչ էլ որ լինի) օգնում թաքցնել զուգահեռ կատարումից առաջացող ողջ բարդությունը:
  3. Բարձր կայունություն: Ակնհայտ է, որ մեզ անհրաժեշտ էր կլաստեր, և դա ավելի լավ էր, քան այն, ինչ ունեինք վաճառողի արտադրանքի վրա:

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Մենք իրականում շատ տարբերակներ չունեինք, եթե հիշում եք։ Նախ, Էրլանգը. մենք սիրում ենք այն և գիտենք դա, դա իմ անձնական, անձնական սիրելին էր: Երկրորդ, Java-ն նույնիսկ Java չէ, այլ կոնկրետ Scala: Երրորդ՝ լեզուն, որ այն ժամանակ մենք ընդհանրապես չգիտեինք՝ Գնա։ Այն ժամանակ նոր էր հայտնվել, ավելի ճիշտ՝ արդեն գոյություն ուներ մոտ երկու տարի, բայց դեռ դուրս չէր եկել։

Պարտված Գո՜

Go-ի պատմություն

Մենք դրա վրա հարթակ պատրաստեցինք։ Ես կփորձեմ բացատրել, թե ինչու:

Go-ի համառոտ պատմություն: Սկսվել է 2007 թվականին, բացվել է 2009 թվականին, առաջին տարբերակը թողարկվել է 2012 թվականին (այսինքն՝ մենք սկսել ենք աշխատել նույնիսկ առաջին թողարկումից առաջ)։ Նախաձեռնողը Google-ն էր, որը ցանկանում էր փոխարինել, ինչպես ես կասկածում եմ, Java-ին:

Հեղինակները շատ հայտնի են.

  • Քեն Թոմսոնը, ով կանգնած էր Unix-ի հետևում, հորինեց UTF-8-ը, աշխատեց Plan 9 համակարգի վրա;
  • Ռոբ Փայքը, ով Քենի հետ նախագծել է UTF-8-ը, աշխատել է նաև Plan 9, Inferno, Limbo վրա Bell Labs-ում;
  • Ռոբերտ Գիզմերին, ում մենք ճանաչում և սիրում ենք Java HotSpot Կազմողի հորինելու և V8-ում գեներատորի վրա աշխատելու համար (Google-ի Javascript թարգմանիչ);
  • Եվ ավելի քան 700 ներդրողներ, ներառյալ մեր որոշ կարկատաններ:

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Գնացեք մի հայացքով

Մենք տեսնում ենք, որ լեզուն քիչ թե շատ պարզ է ու հասկանալի։ Մենք ունենք ակնհայտ տեսակներ. որոշ դեպքերում դրանք պետք է հայտարարվեն, որոշ դեպքերում՝ ոչ (նշանակում է, որ տեսակներն ամեն դեպքում ենթադրվում են)։

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Երևում է, որ մոդայիկ է կառուցվածքները նկարագրելը։ Կարելի է տեսնել, որ մենք ունենք ցուցիչ հասկացությունը (որտեղ աստղանիշն է): Կարելի է տեսնել, որ կա հատուկ աջակցություն զանգվածների և ասոցիատիվ զանգվածների սկզբնավորումը հայտարարելու համար:

Մոտավորապես հասկանալի է՝ դու կարող ես ապրել։ Փորձելով գրել Բարև աշխարհ.

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Ի՞նչ ենք մենք տեսնում։ Սա C-ի նման շարահյուսություն է, ստորակետը ընտրովի է: Այն կարող է բաժանարար լինել երկու տողի համար, բայց միայն այն դեպքում, եթե դրանք երկու կոնստրուկցիաներ են, որոնք գտնվում են ճիշտ նույն գծի վրա:

Մենք տեսնում ենք, որ հսկիչ կառույցներում փակագծերը (14-րդ տողում) ընտրովի են, բայց գանգուրները միշտ պահանջվում են։ Մենք տեսնում ենք, որ մուտքագրումը ստատիկ է: Ժամը շատ դեպքերում ցուցադրվում է: Այս օրինակը մի փոքր ավելի բարդ է, քան սովորական Բարև, աշխարհ, պարզապես ցույց տալու համար, որ կա գրադարան:

Էլ ի՞նչ կարևոր ենք տեսնում: Կոդը կազմակերպված է փաթեթների մեջ: Եվ փաթեթը ձեր սեփական կոդով օգտագործելու համար անհրաժեշտ է ներմուծել այն ներմուծման հրահանգով, սա նույնպես կարևոր է: Մենք սկսում ենք - այն աշխատում է: Հիանալի

Փորձենք ավելի բարդ բան. Բարև աշխարհ, բայց հիմա այն http սերվեր է: Ի՞նչ հետաքրքիր ենք տեսնում այստեղ:

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Նախ, գործառույթը գործում է որպես պարամետր: Սա նշանակում է, որ մեր ունեցած գործառույթը «առաջին կարգի քաղաքացի» է, և դրանով կարելի է շատ հետաքրքիր բաներ անել ֆունկցիոնալ ոճով։ Մենք տեսնում ենք անսպասելի հաջորդը՝ ներմուծման հրահանգը ուղղակիորեն վերաբերում է GitHub պահեստին: Ճիշտ է, այդպես է, ավելին, այդպես էլ պետք է արվի։

Go-ում փաթեթի համընդհանուր նույնացուցիչը նրա պահեստի url-ն է: Գոյություն ունի հատուկ Goget կոմունալ ծրագիր, որը վերաբերում է բոլոր կախվածություններին, ներբեռնում է դրանք, տեղադրում, հավաքում և անհրաժեշտության դեպքում պատրաստում դրանք օգտագործելու համար: Միևնույն ժամանակ, Goget-ը գիտի html-meta-ի մասին։ Համապատասխանաբար, դուք կարող եք պահել http գրացուցակ, որը կպարունակի հղումներ դեպի ձեր կոնկրետ պահոց (ինչպես մենք, օրինակ, անում ենք):

Էլ ի՞նչ ենք մենք տեսնում։ Http և Json սովորական գրադարանում: Ակնհայտ է, որ կա ներդաշնակություն՝ արտացոլում, որը պետք է օգտագործվի կոդավորման / json-ի մեջ, քանի որ մենք դրա փոխարեն պարզապես փոխարինում ենք ինչ-որ կամայական օբյեկտ։

Մենք գործարկում ենք այն և տեսնում, որ ունենք 20 տող օգտակար կոդ, որը կազմում է, գործարկում և տալիս է մեքենայի ընթացիկ միջին ծանրաբեռնվածությունը (մեքենայի վրա, որի վրա այն աշխատում է):
Էլ ի՞նչն է կարևոր այն ամենից, ինչ մենք կարող ենք անմիջապես տեսնել այստեղ: Այն կազմվում է մեկ ստատիկ երկուականի (բուինարի): Այս երկուականն ընդհանրապես չունի կախվածություն, չունի գրադարաններ: Այն կարող է պատճենվել ցանկացած համակարգում, անմիջապես գործարկել, և այն կաշխատի:

Մենք առաջ ենք շարժվում:

Գնացեք. մեթոդներ և միջերեսներ

Go-ն ունի մեթոդներ. Դուք կարող եք հայտարարել մեթոդ ցանկացած հատուկ տեսակի համար: Ավելին, սա պարտադիր չէ, որ կառույց լինի, այլ կարող է լինել ինչ-որ տեսակի այլանուն: Դուք կարող եք հայտարարագրել N32-ի կեղծանունը և դրա համար գրել մեթոդներ՝ ինչ-որ օգտակար բան անելու համար:

Եվ ահա, որտեղ մենք առաջին անգամ ընկնում ենք թմբիրի մեջ... Պարզվում է, որ Go-ն որպես այդպիսին դասեր չունի։ Go-ին իմացողները կարող են ասել, որ կա տիպային ընդգրկում, բայց սա բոլորովին այլ է։ Որքան շուտ մշակողը դադարի դրա մասին մտածել որպես ժառանգություն, այնքան լավ: Գոյում դասեր չկան, ժառանգություն էլ չկա։

Հարց! Ի՞նչ տվեց մեզ Google-ի գլխավորած հեղինակների ընկերությունը՝ աշխարհի բարդությունը ցուցադրելու համար։ Մեզ տրվել են միջերեսներ:

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

Ինտերֆեյսը հատուկ տեսակ է, որը թույլ է տալիս գրել պարզ մեթոդներ, մեթոդների ստորագրություններ: Ավելին, ցանկացած տեսակ, որի համար գոյություն ունեն այս մեթոդները (կատարվում են), կհամապատասխանի այս ինտերֆեյսին: Սա նշանակում է, որ դուք կարող եք պարզապես գրել համապատասխան ֆունկցիա մի տեսակի, մյուսի համար (որը համապատասխանում է այդ ինտերֆեյսի տեսակին): Հաջորդը, հայտարարեք այս ինտերֆեյսի տեսակի փոփոխական և վերագրեք այս օբյեկտներից որևէ մեկը:

Հարդքոր երկրպագուների համար կարող եմ ասել, որ այս փոփոխականն իրականում կպարունակի երկու ցուցիչ՝ մեկը տվյալներին, մյուսը՝ հատուկ նկարագրիչ աղյուսակին, որը հատուկ է այս տեսակին, այս տեսակի միջերեսին: Այսինքն՝ կոմպիլյատորը կապելու պահին կազմում է նկարագրիչների նման աղյուսակներ։

Եվ Go-ում, իհարկե, կան անվավեր ցուցումներ: Ինտերֆեյս {} բառը (երկու գանգուր փակագծերով) փոփոխական է, որը թույլ է տալիս սկզբունքորեն մատնանշել ցանկացած առարկա:
Առայժմ ամեն ինչ կարգին է, ամեն ինչ ծանոթ է։ Ոչ մի զարմանալի բան.

Գնացեք: գորուտիններ

Այժմ մենք հասնում ենք նրան, ինչ մեզ հետաքրքրում է՝ թեթև պրոցեսներ՝ գորուտիններ (գորուտիններ) Go տերմինաբանության մեջ:

Ալեքսեյ Նայդենով. ITooLabs. Մշակման պատյան Go (Golang) հեռախոսային հարթակում։ Մաս 1

  1. Նախ, դրանք իսկապես թեթև են (2 Կբ-ից պակաս):
  2. Երկրորդ, նման գորուտինի ստեղծման արժեքը աննշան է. վայրկյանում կարող եք հազար հատ ստեղծել, ոչինչ չի ստացվի:
  3. Նրանք սպասարկվում են իրենց սեփական ժամանակացույցով, որը պարզապես փոխանցում է կառավարումը մի գորուտինից մյուսին:
  4. Այս դեպքում վերահսկողությունը փոխանցվում է հետևյալ դեպքերում.
    • եթե հանդիպում է գնա հայտարարություն (եթե գորուտինը սկսում է հաջորդ գորուտինը);
    • եթե արգելափակող մուտքի/ելքի զանգը միացված է.
    • եթե աղբահանությունը սկսվում է.
    • եթե սկսվում է ալիքների հետ որոշակի գործողություն:

Այսինքն, երբ Go ծրագիրը գործարկվում է համակարգչով, այն հայտնաբերում է համակարգի միջուկների քանակը, սկսում է այնքան թելեր, որքան անհրաժեշտ է (քանի միջուկ կա համակարգում, կամ քանիսն եք ասել): Համապատասխանաբար, ժամանակացույցը կգործարկի կատարման այս թեթև թելերը յուրաքանչյուր միջուկի բոլոր այս օպերացիոն համակարգի թելերի վրա:

Հարկ է նշել, որ սա երկաթի օգտագործման ամենաարդյունավետ միջոցն է։ Բացի այն, ինչ ցույց ենք տվել, մենք շատ ավելին ենք անում։ Մենք պատրաստում ենք, օրինակ, DPI համակարգեր, որոնք թույլ են տալիս սպասարկել 40 գիգաբիթ մեկ միավորում (կախված նրանից, թե ինչ է տեղի ունենում այս տողերում):

Այնտեղ, նույնիսկ Go-ից առաջ, մենք օգտագործում էինք հենց նույն սխեման հենց այս պատճառով. քանի որ այն թույլ է տալիս պահպանել պրոցեսորի քեշի տեղայնությունը, զգալիորեն նվազեցնել OS-ի համատեքստային անջատիչների քանակը (ինչը նույնպես շատ երկար ժամանակ է պահանջում): Կրկնում եմ՝ սա երկաթի օգտագործման ամենաարդյունավետ միջոցն է։

Այս պարզ 21 տողանոց օրինակը մի օրինակ է, որը պարզապես աշխատում է echo-server: Միևնույն ժամանակ, նշեք, որ սպասարկման գործառույթը չափազանց պարզ է, այն գծային է: Չկան հետզանգեր, կարիք չկա անհանգստանալու և մտածելու... Դու ուղղակի կարդում ու գրում ես:

Միևնույն ժամանակ, եթե դուք կարդում և գրում եք, այն իրականում պետք է արգելափակվի. այս գորուտինը պարզապես հերթագրվում և վերցվում է ժամանակացույցի կողմից, երբ կատարումը կրկին հնարավոր է դառնում: Այսինքն, այս պարզ կոդը կարող է հանդես գալ որպես արձագանքող սերվեր այնքան միացումների համար, որքան թույլ կտա այս մեքենայի ՕՀ-ն:

Շարունակությունը շատ շուտով...

Մի քանի գովազդ 🙂

Շնորհակալություն մեզ հետ մնալու համար: Ձեզ դուր են գալիս մեր հոդվածները: Ցանկանու՞մ եք տեսնել ավելի հետաքրքիր բովանդակություն: Աջակցեք մեզ՝ պատվիրելով կամ խորհուրդ տալով ընկերներին, ամպային VPS մշակողների համար $4.99-ից, մուտքի մակարդակի սերվերների եզակի անալոգ, որը հորինվել է մեր կողմից ձեզ համար. Ամբողջ ճշմարտությունը VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps 19 դոլարից կամ ինչպես կիսել սերվերը: (հասանելի է RAID1 և RAID10-ով, մինչև 24 միջուկով և մինչև 40 ԳԲ DDR4):

Dell R730xd 2 անգամ ավելի էժան Ամստերդամի Equinix Tier IV տվյալների կենտրոնում: Միայն այստեղ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 հեռուստացույց $199-ից Նիդեռլանդներում! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99-ից: Կարդացեք մասին Ինչպես կառուցել ենթակառուցվածքի կորպ. դաս՝ 730 եվրո արժողությամբ Dell R5xd E2650-4 v9000 սերվերների օգտագործմամբ մեկ կոպեկի համար:

Source: www.habr.com

Добавить комментарий