Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Septemba 19 na Moscow mere Nzukọ isiokwu mbụ HUG (Highload++ User Group), nke a raara nye microservices. Enwere ihe ngosi "Microservices: Size Matters, Ọbụlagodi na ị nwere Kubernetes," nke anyị na-ekekọrịta ahụmịhe dị ukwuu nke Flant n'ịrụ ọrụ na ụlọ ọrụ microservice. Nke mbụ, ọ ga-abara ndị mmepe niile na-eche echiche iji usoro a na ọrụ ha ugbu a ma ọ bụ n'ọdịnihu.

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Na-ewebata vidiyo nke akụkọ (Nkeji 50, ọtụtụ ihe ọmụma karịa isiokwu), yana isi ihe na-esi na ya dị n'ụdị ederede.

NB: Vidio na ihe ngosi dịkwa na njedebe nke ọkwa a.

Okwu Mmalite

Ọtụtụ mgbe, akụkọ dị mma na-enwe mmalite, nkata bụ isi na mkpebi. Akụkọ a dị ka okwu mmalite, na nke jọgburu onwe ya na nke ahụ. Ọ dịkwa mkpa iburu n'obi na ọ na-enye echiche nke ndị si mba ọzọ banyere microservices. nrigbu.

M ga-amalite na eserese a, onye odee ya (na 2015) ghọrọ Martin Fowler:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ọ na-egosi otú, n'ihe banyere a monolithic ngwa na-eru ụfọdụ uru, arụpụtaghị ihe na-amalite ibelata. Microservices dị iche iche na mmepụta mbụ ya na ha dị ala, mana ka mgbagwoju anya na-abawanye, mmebi na arụmọrụ adịghị ahụ anya maka ha.

M ga-agbakwunye na eserese a maka ikpe iji Kubernetes:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Kedu ihe kpatara ngwa nwere obere ọrụ ji dị mma? N'ihi na ihe owuwu dị otú ahụ na-ebute ihe ndị dị mkpa maka ihe owuwu ahụ, nke n'aka nke ya na-ekpuchi ya nke ọma site na ike nke Kubernetes. N'aka nke ọzọ, ụfọdụ n'ime ọrụ a ga-aba uru maka monolith, karịsịa n'ihi na ụdị monolith taa abụghị kpọmkwem monolith (nkọwa ga-emesịa na akụkọ ahụ).

Dị ka ị na-ahụ, eserese ikpeazụ (mgbe ma monolithic na microservice ngwa dị na akụrụngwa na Kubernetes) adịghị iche na nke mbụ. Ọzọ anyị ga-ekwu maka ngwa eji Kubernetes arụ ọrụ.

Microservices bara uru ma na-emerụ ahụ

Ma ebe a bụ isi echiche:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Kedu ihe ọ bụ nkịtị microservice architecture? O kwesịrị iwetara gị ezigbo uru, na-abawanye arụmọrụ ọrụ gị. Ọ bụrụ na anyị laghachi azụ na eserese, ebe a bụ:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ọ bụrụ na ị kpọọ ya bara uru, mgbe ahụ, n'akụkụ nke ọzọ nke eserese ga-adị emerụ microservices (na-egbochi ọrụ):

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ịlaghachi na "isi echiche": m kwesịrị ntụkwasị obi ahụmahụ m ma ọlị? Kemgbe mmalite nke afọ a ka m na-ele anya 85 oru ngo. Ọ bụghị ha niile bụ microservices (ihe dị ka otu ụzọ n'ụzọ atọ ruo ọkara n'ime ha nwere ụkpụrụ ụlọ dị otú ahụ), mana nke a ka bụ ọnụ ọgụgụ buru ibu. Anyị (ụlọ ọrụ Flant) dị ka ndị na-apụ apụ na-ejikwa ịhụ ụdị ngwa dị iche iche mepụtara ma na obere ụlọ ọrụ (ya na ndị mmepe 5) na ndị buru ibu (~ 500 mmepe). Uru agbakwunyere bụ na anyị na-ahụ ngwa ndị a na-adị ndụ ma na-etolite n'ime afọ.

Gịnị kpatara microservices?

Maka ajụjụ gbasara uru nke microservices enwere kpọmkwem azịza Site na Martin Fowler a kpọtụrụ aha:

  1. doo anya oke nke modularity;
  2. ntinye onwe onye;
  3. nnwere onwe ịhọrọ teknụzụ.

Agwara m ndị na-ese ụkpụrụ ngwanrọ na ndị mmepe okwu ọtụtụ ihe wee jụọ ya ihe kpatara ha ji chọọ microservices. M wee depụta ihe ha tụrụ anya ya. Nke a bụ ihe mere:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ọ bụrụ na anyị akọwa ụfọdụ isi ihe “na mmetụta,” mgbe ahụ:

  • ókèala doro anya nke modul: ebe a, anyị nwere monolith dị egwu, ma ugbu a, a ga-edozi ihe niile nke ọma na ebe nchekwa Git, nke ihe niile dị "na shelves", na-ekpo ọkụ na nro adịghị agwakọta;
  • nnwere onwe nkenye: anyị ga-enwe ike iwepụta ọrụ n'onwe ya ka mmepe na-aga ngwa ngwa (bipụta atụmatụ ọhụrụ n'otu n'otu);
  • nnwere onwe mmepe: anyị nwere ike inye microservice a na otu / onye mmepụta, na nke ọzọ, ekele maka nke anyị nwere ike ịmalite ngwa ngwa;
  • боntụkwasị obi ka ukwuu: ọ bụrụ na mmebi akụkụ na-eme (otu microservice n'ime 20 dara), mgbe ahụ naanị otu bọtịnụ ga-akwụsị ịrụ ọrụ, na usoro n'ozuzu ga-anọgide na-arụ ọrụ.

Ihe owuwu microservice na-ahụkarị (na-emerụ ahụ).

Iji kọwaa ihe kpatara na eziokwu abụghị ihe anyị tụrụ anya ya, m ga-eweta mkpokọta onyonyo nke ụlọ ọrụ microservice dabere na ahụmịhe sitere na ọtụtụ ọrụ dị iche iche.

Otu ihe atụ ga-abụ ụlọ ahịa dị n'ịntanetị nke na-aga ịsọ mpi Amazon ma ọ bụ opekata mpe OZON. Ihe owuwu microservice ya dị ka nke a:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Maka nchikota nke ihe kpatara ya, edere microservices ndị a na nyiwe dị iche iche:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ebe ọ bụ na microservice ọ bụla ga-enwerịrị ikike, ọtụtụ n'ime ha chọrọ nchekwa data na cache nke ha. Ihe owuwu ikpeazụ bụ nke a:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Gịnị na-esi na ya pụta?

Fowler nwekwara nke a enwere edemede - gbasara "ụgwọ" maka iji microservices:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Anyị ga-ahụ ma ihe anyị tụrụ anya ya emezuola.

Kpochapụ oke modul...

Ma ole microservice ka anyị kwesịrị idozi?iwepụta mgbanwe? Anyị nwere ike chọpụta otú ihe niile si arụ ọrụ na-enweghị onye na-ekesa tracer (mgbe niile, a na-edozi arịrịọ ọ bụla site na ọkara nke microservices)?

Enwere ụkpụrụ"nnukwu ntụ ntụ“, ebe a, ọ ghọkwara unyi ekesa ekesara. Iji kwado nke a, ebe a bụ nkọwa gbasara otu arịrịọ si aga:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Nnwere onwe nke ibunye...

Na teknụzụ, e mezuru ya: anyị nwere ike ibugharị microservice ọ bụla iche iche. Ma na omume ị kwesịrị iburu n'uche na ọ na-apụta mgbe niile ọtụtụ microservices, na anyị kwesịrị iburu n'uche usoro nke mbughari ha. N'ụzọ dị mma, anyị na-achọkarị ịnwale na sekit dị iche ma anyị na-atụgharị ntọhapụ n'usoro ziri ezi.

Nnwere onwe ịhọrọ teknụzụ...

Ọ bụ. Naanị cheta na nnwere onwe na-abụkarị mmebi iwu. Ọ dị ezigbo mkpa ebe a ka ị ghara ịhọrọ teknụzụ naanị iji "egwu" ha.

Nnwere onwe nke mmepe...

Kedu ka esi eme loop ule maka ngwa niile (nwere ọtụtụ ihe)? Ma ị ka kwesịrị ime ka ọ dị ọhụrụ. Ihe a niile na-eduga n'eziokwu ahụ ọnụ ọgụgụ nke sekit ule n'ezie, nke anyị nwere ike na ụkpụrụ nwere, na-atụgharị ka ọ dị ntakịrị.

Kedu maka ịkwanye ihe a niile na mpaghara?... Ọ na-apụta na mgbe mgbe onye mmepụta na-arụ ọrụ ya n'onwe ya, ma "na-enweghị ihe ọ bụla", n'ihi na a na-amanye ya ichere ruo mgbe sekit nwere onwe maka ule.

Nhazi dị iche...

Ee, mana ọ bụ oke na mpaghara DBMS eji. N'ime ihe atụ ụkpụrụ ụlọ enyere, Cassandra agaghị enwe nsogbu, mana MySQL na PostgreSQL ga-enwe.

Боntụkwasị obi ka ukwuu...

Ọ bụghị naanị na ọdịda nke otu microservice na-emebikarị arụ ọrụ nke sistemu niile, mana enwerekwa nsogbu ọhụrụ: ime ka ọ bụla microservice na-anabata mmejọ siri ike. N'ihi na microservices na-eji teknụzụ dị iche iche (memcache, Redis, wdg), maka onye ọ bụla, ị ga-eche echiche site na ihe niile ma mejuputa ya, nke, n'ezie, ga-ekwe omume, ma na-achọ nnukwu ego.

Ibu nha nha...

Nke a dị mma n'ezie.

"Ịdị ọkụ" nke microservices ...

Ọ bụghị naanị na anyị nwere nnukwu netwọk n'elu (arịrịọ maka DNS na-amụba, wdg), mana n'ihi ọtụtụ subqueries anyị malitere oyiri data (nchekwa ụlọ ahịa), nke butere nnukwu nchekwa.

Na nke a bụ nsonaazụ nke imezu ihe anyị tụrụ anya ya:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ma nke ahụ abụghị naanị!

N'ihi na:

  • O yikarịrị ka anyị ga-achọ ụgbọ ala ozi.
  • Kedu otu esi eme nkwado ndabere na mpaghara n'oge kwesịrị ekwesị n'oge? Naanị otu n'ezie nhọrọ bụ ịgbanyụ okporo ụzọ maka nke a. Ma otu esi eme nke a na mmepụta?
  • Ọ bụrụ na anyị na-ekwu maka ịkwado ọtụtụ mpaghara, mgbe ahụ ịhazi nkwado na nke ọ bụla n'ime ha bụ ọrụ na-arụsi ọrụ ike.
  • Nsogbu nke ime mgbanwe etiti na-ebilite. Dịka ọmụmaatụ, ọ bụrụ na anyị kwesịrị imelite ụdị PHP, anyị ga-etinye aka na ebe nchekwa ọ bụla (ma enwere ọtụtụ n'ime ha).
  • Mmụba dị na mgbagwoju anya arụ ọrụ bụ, na-apụ apụ, ọpụrụiche.

Kedu ihe a ga-eme na ihe a niile?

Malite na ngwa monolithic. Ahụmahụ Fowler kwuru na ihe fọrọ nke nta ka ọ bụrụ ngwa microservice niile na-aga nke ọma malitere dị ka monolith nke buru oke ibu wee gbajie. N'otu oge ahụ, ihe fọrọ nke nta ka ọ bụrụ sistemụ niile arụnyere dị ka microservices site na mmalite nke mbụ nwere nnukwu nsogbu.

Echiche ọzọ bara uru bụ na maka ọrụ nwere ụlọ ọrụ microservice ga-aga nke ọma, ị ga-amarịrị nke ọma na mpaghara isiokwu, na otu esi eme microservices. Ụzọ kacha mma isi mụta mpaghara isiokwu bụ ime monolith.

Ma gịnị ma ọ bụrụ na anyị abanyelarị n'ọnọdụ a?

Nzọụkwụ mbụ iji dozie nsogbu ọ bụla bụ ikwenye na ya ma ghọta na ọ bụ nsogbu, na anyị achọghị ịta ahụhụ ọzọ.

Ọ bụrụ na, n'ihe banyere monolith toro eto (mgbe anyị gwụchara ohere ịzụta ihe ndị ọzọ maka ya), anyị na-ebipụ ya, mgbe ahụ, na nke a, akụkọ na-abụghị nke a ga-apụta: mgbe oke microservices anaghịzi enyere aka, ma na-egbochi - bepụ ngafe ma gbasaa!

Dịka ọmụmaatụ, maka foto mkpokọta a tụlere n'elu...

Wepụ microservices kacha enyo enyo:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Gwakọta microservice niile na-ahụ maka ọgbọ n'ihu:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

... n'ime otu microservice, nke edere n'otu (nke oge a na nke nkịtị, dịka gị onwe gị chere) asụsụ / usoro:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ọ ga-enwe otu ORM (otu DBMS) na nke mbụ ngwa abụọ:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

... mana n'ozuzu ị nwere ike ịnyefe ọtụtụ ihe n'ebe ahụ, na-enweta nsonaazụ ndị a:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ọzọkwa, na Kubernetes anyị na-agba ọsọ a niile n'ụdị dị iche iche, nke pụtara na anyị ka nwere ike tụọ ibu ma tụọ ha iche.

Na ichikota

Lee foto ka ukwuu. Ọtụtụ mgbe, nsogbu ndị a niile na microservices na-ebilite n'ihi na mmadụ weere ọrụ ha, mana ọ chọrọ "iji microservices egwu egwu".

Na okwu "microservices" akụkụ "micro" bụ ejighi oru.. Ha bụ "micro" naanị n'ihi na ha dị obere karịa nnukwu monolith. Ma echela ha ka ihe dị obere.

Ma maka echiche ikpeazụ, ka anyị laghachi na chaatị mbụ:

Microservices: Oke okwu, ọ bụrụgodị na ị nwere Kubernetes

Ihe ndetu edere na ya (n'elu aka nri) na-agbada n'eziokwu ahụ nkà nke otu na-eme ka oru ngo gị na-abụkarị isi - ha ga-arụ ọrụ dị mkpa na nhọrọ gị n'etiti microservices na monolith. Ọ bụrụ na otu ahụ enweghị nkà zuru oke, mana ọ na-amalite ịme microservices, akụkọ ahụ ga-egbu egbu.

Vidiyo na slide

Vidiyo sitere na okwu (~ nkeji 50; ọ dị mwute ikwu, ọ naghị ebute ọtụtụ mmetụta nke ndị ọbịa, bụ nke kpebisiri ike ọnọdụ nke akụkọ ahụ, mana ọ bụ otu a):

Ngosipụta akụkọ a:

PS

Akụkọ ndị ọzọ na blọọgụ anyị:

Ị nwekwara ike ịmasị akwụkwọ ndị a:

isi: www.habr.com

Tinye a comment