Teko ea Meroalo ea API Ka Litsie

Teko ea Meroalo ea API Ka Litsie

Teko ea Meroalo ea API ka Letsie: Intro

Mohlomong u kile ua ba boemong bona pele: u ngola khoutu e etsang ntho e itseng, mohlala oa qetello. U lekola ntlha ea hau u sebelisa Postman kapa Insomnia, 'me tsohle li sebetsa hantle. U fetisetsa ntlha ea ho qetela ho moqapi oa lehlakore la bareki, ea tlang ho sebelisa API ebe e tsamaisa ts'ebeliso. Empa joale, API e hloleha ha basebelisi ba sebelisa sesebelisoa.

Sena e ka ba boemo bo khopisang haholo ho ba ho bona, re sa bue ka theko e boima bakeng sa khoebo. Ke ka lebaka leo baetsi ba software ba etsang liteko tse fapaneng ho sistimi ea software ho netefatsa hore ba sebetsa kamoo ho lebelletsoeng. Li-API ha li fapane. Pele o ka romelloa, o lokela ho etsa bonyane liteko tsa ts'ebetso le liteko tsa ts'ireletso.

Liteko tsa ts'ebetso li ka hlophisoa ka liteko tsa ts'ebetso le liteko tsa mojaro. Liteko tsa ts'ebetso ke tseo hangata u li sebelisang Postman kapa Insomnia bakeng sa. Ba netefatsa hore API ea hau e sebetsa kamoo u neng u lebelletse. Liteko tsa mojaro, ka lehlakoreng le leng, li amehile haholo ka hore na API ea hau e sebetsa joang ka ts'ebeliso ea 'nete ea lefats'e le mojaro o phahameng, mme ke seo sengoloa sena se buang ka sona. Ha re shebeng liteko tsa mojaro ka botlalo.

Teko ea Mojaro oa API ke Eng?

Teko ea API ke mofuta oa liteko tseo baetsi ba liteko ba li sebelisang ho etsisa maemo a tloaelehileng le a holimo ho li-endpoints. Teko ea mofuta ona e lumella bahlahisi ho lekola ts'ebetso ea 'nete ea API pele e ka sebelisoa. E ba thusa ho tseba boholo ba ts'ebetso ea sistimi, litšitiso haeba li teng, le ho senyeha ha ts'ebetso. Liteko tsa API hangata li etsoa ka ho theha basebelisi ba sebele ebe ba li sebelisa ho lekola ts'ebetso ea API ka nako e le ngoe. 

Liteko tsa boima ba API li lekanya metrics joalo ka nako ea karabelo, basebelisi ba nako e le 'ngoe, litefiso tsa ho feta, maemo a tšebeliso ea lisebelisoa, Nako e Bohareng ea ho Hlokahala(MTBF), Nako e Bolelang ea ho Felloa(MTTF), joalo-joalo. Metrics ena kaofela e ka sebelisoa ho tseba hore na API e sebetsa hantle hakae.

Mefuta ea Tlhahlobo ea Mojaro

Ho na le mefuta e 'maloa ea tlhahlobo ea mojaro, e' ngoe le e 'ngoe e na le linyeoe tsa eona tsa tšebeliso. A re hlahlobeng tse ling tsa tsona.

Teko ea Mojaro: Ena ke mokhoa oa motheo oa tlhahlobo ea mojaro. E sebelisetsoa ho lekola ts'ebetso ea sistimi (tabeng ena, API) tlasa mojaro o tloaelehileng le mojaro o lebelletsoeng.

Teko ea Khatello ea Maikutlo: Sena se sebelisetsoa ho lekola ts'ebetso ea sistimi tlasa mojaro o boima haholo. Sepheo sa teko ena ke ho bona hore na tsamaiso e hlaphoheloa ka mor'a ho hlōleha, le hore na ho nka nako e kae ho etsa joalo. Hangata mojaro o phahamisoa butle ho fihlela o feta bokhoni ba sistimi.

Teko ea Spike: Sena se batla se tšoana le tlhahlobo ea khatello ea maikutlo, ntle le hore mojaro o boima o sebelisoa ka tšohanyetso, ho fapana le ho o nyolla butle. Mofuta ona oa teko o emela se etsahalang ha ho e-na le spike ka tšohanyetso palo ea basebelisi kapa baeti, kapa ha ho e-na le tlhaselo ea DDOS tsamaisong ea hau.

Teko ea Soak: Tlhahlobo ena ha e tšoane le tse ling tse ka holimo. E beha tsamaiso ea hau tlas'a 80% (kapa hoo e ka bang) ea mojaro o tloaelehileng 'me e e siea e sebetsa nako e telele, re re lihora tse 12 ho isa ho tse 14. Mofuta ona oa teko o etsa qeto ea hore na tsamaiso e tšepahala hakae ha nako e ntse e feta.

Load Testing Your APIs With Locust

Bahlahisi ba na le monyetla oa ho fumana mekhoa e fapaneng ea ho lekola li-API tsa bona. Lisebelisoa tse ling tse tloaelehileng tsa tlhahlobo ea mojaro ke Gatling, JMeter, le Locust. Re tla tsepamisa maikutlo ho Tsie sehloohong sena.

Locust ke sesebelisoa sa tlhahlobo ea mojaro o bulehileng oa python se sebelisoang ke lik'hamphani tse holimo tse kang Google, Microsoft, le Riot Games ho leka li-API tsa bona. Sehloohong sena, re tla bonts'a mokhoa oa ho kenya tlhahlobo ea API. 

Bakeng sa thupelo ena, ke tla be ke theha API e bonolo ka Flask. U ka latela le 'na kapa ua iketsetsa API ea hau ka Node, kapa moralo ofe kapa ofe oo u nang le oona.

litlhokahalo

python 3

Ho seta le ho kenya

Taba ea pele, o hloka ho theha tikoloho e fumanehang ho PC ea hau hore o se ke oa senya tikoloho ea hau ea Python ea lefats'e. Ho etsa joalo, tsamaisa litaelo tse latelang. Hlokomela hore litaelo tsena li sebetsa ho terminal ea Windows.

$ mkdir morero

$ cd /d tsela\to\project

$ python -m venv venv

$ venv\Scripts\activate

 

Taba ea pele, re entse a projeke directory. Eaba re fetola directory ea rona ea hajoale ho projeke. Eaba re theha le ho kenya tšebetsong tikoloho e fumanehang bakeng sa Python ka har'a bukana eo. 

Hona joale, re tla tsoela pele ho kenya Flask(re tla e sebelisa ho theha li-endpoints tse lokelang ho lekoa) le Tsie ka boeona. 

 

Ho kenya Flask, matha. Etsa bonnete ba hore u kene projeke moo o entseng tikoloho ea sebele.

$ pip kenya botlolo

 

Ho kenya Locust, matha

$ pip kenya litsie

 

Ha seo se se se entsoe, ngola litaelo tse latelang. Etsa bonnete ba hore u sebakeng sa hau projeke directory ha u etsa sena.

$ kopitsa ha ho __init__.py

$ mkdir app

$ kopitsa nul app\app.py

$ kopitsa nul app\__init__.py

 

Litaelo tsena li theha lifaele tseo re tla li sebelisa ho etsa li-endpoints re sebelisa Flask. U ka boela ua etsa lifaele tsena u sebelisa sebatli sa hau sa faele ka tsela. Empa ke eng se monate ho seo? Ha u se u entse joalo, kopitsa khoutu e ka tlase ho app.py

ho tsoa ho flask import Flask, jsonify, kopo

app = Flask(__lebitso__)

likoloi_model = [

  {'brand': 'Tesla', 'model': 'Model S'}

]

 

plane_models = [

  {'brand': 'Boeing', 'model': '747'}

]

 

@app.route('/cars')

def get_cars():

  return jsonify(car_models)

@app.route('/planes')

def get_planes():

  return jsonify(plane_models)

haeba __lebitso__ == '__main__':

    app.run(debug=Nnete)  

 

Khoutu e ka holimo e na le mokhoa fumana_koloi sebelisoa ho fumana lethathamo la mefuta ea likoloi le mehlala ea tsona, le fumana_lifofane se sebedisoang ho fumana lethathamo la mefuta ea lifofane le mehlala ea tsona. E le hore re kenye tlhahlobo ena ea ho qetela, re hloka ho sebelisa app.py. Ho etsa joalo tsamaisa taelo e ka tlase.

$ python tsela\to\app.py

Ka mor'a hore u tsamaee, u lokela ho bona ntho e kang ena:

Teko ea Mojaro oa API 1

Haeba u kopitsa URL ho terminal ebe u thaepa likoloi or lifofane ka mor'a /, u lokela ho khona ho bona data moo. Leha ho le joalo, sepheo sa rona ke ho leka ntlha ea ho qetela ka litsie, eseng ka sebatli. Kahoo ha re etse joalo. Matha taelo e latelang motsong oa hau projeke dibaka.

 

$ kopitsa nul locust_test.py

 

Sena se theha faele ea 'locust_test.py' motsong oa hau projeke directory. Ha u se u entse joalo, bula faele ebe u beha khoutu e ka tlase. Re tla e hlalosa haufinyane.

 

nako ea ho kenya

ho tsoa ho kenya litsie HttpUser, mosebetsi, pakeng tsa

 

class UserBehaviour(HttpUser):

    wait_time = lipakeng tsa(5, 10)

 

    @mosebetsi

    def get_cars(self):

        self.client.get('/cars')

    

    @mosebetsi

    def get_planes(self):

        self.client.get('/planes')

 

Ona ke mohlala oa mantlha oa ho sebelisa Locust ho kenya tlhahlobo ea API. Pele, re theha sehlopha UserBehaviour, e ka fuoang lebitso leha e le lefe le loketseng empa e tlameha ho atolosa HttpUser. HttpUser ke sehlopha se hlokomelang ho kenya basebelisi ba bangata ba sebele ho etsa mesebetsi eo re e hlalosang ho UserBehaviour tlelaseng. 

Mosebetsi o hlalosoa ka ho khabisa mokhoa ka @mosebetsi mokgabi. Re boetse re na le mosebetsi o bitsoang pakeng tsa() e re lumellang hore re hlalose mefuta e mengata ea metsotsoana eo re ka e emelang pele re etsa mosebetsi o latelang. U ka bona hore re fane ka mefuta e mengata ea metsotsoana e 5 ho isa ho e 10 bakeng sa seo khoutu ea rona. 

Ho tsamaisa khoutu, etsa bonnete ba hore o ntse o le tikolohong ea hau ea sebele. Haeba eo ue entseng e sebelisoa ke seva e sebeletsang API, bula terminal e ncha, fetola bukana ea hau ho ea hau projeke directory, 'me u kenye tšebetsong tikoloho eo u e entseng. U ka fumana taelo ea ho kenya tshebetsong tikoloho e ka hodimo. Joale, kenya taelo e ka tlase ho terminal ea hau.

 

$ tsie -f locust_test.py

 

U lokela ho bona ntho e kang ena:

Teko ea Mojaro oa API 2

Ka linako tsohle, sebopeho sa marang-rang sa litsie se fumaneha ho http://localhost/8089. Haeba u etela sebaka sa marang-rang, u lokela ho bona sebopeho se kang sena:

Teko ea Mojaro oa API 3

Ho tsoa ho sebopeho, re ka hlakisa palo ea basebelisi, sekhahla sa spawn (basebelisi ba entsoeng ka motsotsoana), le Host. U ka fumana aterese ea moamoheli oa hau ka ho sheba terminal moo seva e sebetsang teng. Tabeng ea rona, e boema-kepe ba 5000. Ha o tobetsa Qala ho lla, o tla hlahiswa le segokanyimmediamentsi sa sebolokigolo mona ka tlase.

Teko ea Mojaro oa API 4

Sena se u bontša metrics e fapaneng ea bohlokoa joalo ka palo ea likopo tse hlolehileng, karolelano ea nako ea kopo, nako e nyane ea kopo, likopo ka motsotsoana, joalo-joalo. Hang ha u khotsofetse ke seo u se bonang, u ka tobetsa konopo ea ho emisa. 


Ntle ho Lipalo-palo li tab, ho na le lichate tab e bontšang ho feta boitsebiso bo ka sebopeho sa kerafo, joalo ka setšoantšo se ka tlase.

Ho na le kakaretso ea likopo ka kerafo ea bobeli, graph ea nako ea karabo, 'me palo ea basebelisi kerafo, bohle ba reriloe khahlanong le nako. U sebelisa li-graph, u ka tseba hore na ke basebelisi ba bakae ba amohelehang bakeng sa nako e tsitsitseng ea karabo, kapa u ka shebella lichate tsa hau bakeng sa nako e sa khaotseng ea ho arabela ho sa tsotellehe palo e ntseng e eketseha ea basebelisi, le lintlha tse ling tse joalo. Haeba u batla ho arolelana tsena statistics le motho e mong, u ka thowuni tlaleho ho tswa ho Khoasolla data Tab.

Ho Qetella...

Ho lekola API ea hau ke ts'ebetso ea bohlokoa ts'ebetsong ea hau ea nts'etsopele, kahoo etsa bonnete ba hore e kenyelelitsoe potolohong ea hau ea moralo. Ka tsela, o ka etsa mefuta e meng ea liteko tsa mojaro ka ho fetola boleng ba palo ea basebelisi le sekhahla sa phallo. 

Haeba u batla ho etsa tlhahlobo ea spike, hlakisa boleng bo boholo (e re 2000) bakeng sa palo ea basebelisi, 'me u be le boleng bo lekanang bakeng sa sekhahla sa hau sa spawn (500 ka mohlala). Sena se bolela hore ka mor'a metsotsoana e 4, u tla be u e-na le basebelisi bohle ba 2000 le ho fumana lintlha tsa hau tsa ho qetela. Teko ea khatello ea maikutlo e tla tšoana, empa ka boleng bo tlase haholo bakeng sa sekhahla sa spawn. Ho tseba sohle seo o ka se etsang, sheba Letsie litokomane