Arba jūsų užduotis nedidelė, arba galite ją suskirstyti į smulkesnes užduotis. O maža užduotis puikiai tinka mikroservisui.

Programinės įrangos kūrimas yra esminis programinės įrangos kūrimo etapas. Projektavimo metodas gali turėti įtakos visam projektui ir tai, kaip sprendžiate skirtingus reikalavimus.

Kūrėjai dažnai naudojo monolitinę architektūrą, sujungdami visus programinės įrangos komponentus į vieną modulį. Tačiau šis metodas gali pasirodyti neveiksmingas, ypač didesnių programų atveju.

Mikropaslaugomis siekiama pašalinti šiuos apribojimus. Mikropaslauga yra nedidelė, modulinė programa, atliekanti tam tikras funkcijas. Skirtingai nuo monolitinių programų, mikropaslaugos leidžia savarankiškai diegti ir keisti mastelį. Dėl to jie yra lankstesni ir lengviau prižiūrimi.

„Microservice“ architektūra

Mikropaslaugų architektūra yra programinės įrangos kūrimo metodas, kuris suskaido didelę taikomąją programą į nepriklausomas paslaugas, o kiekviena paslauga yra skirta konkretiems verslo poreikiams patenkinti.

instagram viewer

Šios paslaugos veikia naudojant tam skirtus išteklius, įskaitant atskirus duomenų bazių egzempliorius ir skaičiavimo galią. Skirtingai nei monolitinės sistemos, mikro paslaugų programos yra laisvai sujungtos, todėl suteikiama daugiau lankstumo.

Paskirstytoje sistemoje serverio mazgai diegia ir vykdo mikro paslaugų programas atskirai procesai – bendravimas tarpusavyje naudojant ryšio protokolus, tokius kaip HTTP, arba per pranešimų tarpininkus kaip RabbitMQ.

Iš esmės šis architektūrinis požiūris leidžia paslaugoms išlaikyti savo nepriklausomybę viena nuo kitos efektyviai veikiant programinės įrangos sistemoje.

Šioje pamokoje mes padėsime jums įdiegti paprastą vartotojo mikropaslaugą, kuri valdo vartotojo duomenis naudojant „Flask“ ir „PostgreSQL“

Nustatykite PostgreSQL duomenų bazę

Norėdami pradėti, įdiekite PostgreSQL. Jei nesate įdiegę PostgreSQL, galite tai sužinoti kaip įdiegti PostgreSQL sistemoje Windows arba kaip įdiegti „PostgreSQL“ „MacOS“..

Arba galite sukonfigūruoti a nuotolinė PostgreSQL duomenų bazė instancija.

Šiame vadove PostgreSQL duomenų bazei nustatyti bus naudojama nemokama Render pakopa. Atlikite šiuos veiksmus, kad sukurtumėte PostgreSQL duomenų bazės egzempliorių Render:

  1. Eikite į „Render“ svetainė, prisiregistruokite prie paskyros ir prisijunkite prie savo prietaisų skydelis puslapį.
  2. Informacijos suvestinės puslapyje iš rodomų paslaugų sąrašo pasirinkite PostgreSQL paslaugą.
  3. Duomenų bazės nustatymų puslapyje įveskite reikiamą informaciją ir būtinai pasirinkite nemokama pakopair galiausiai spustelėkite Sukurti duomenų bazę.

Šio projekto kodą rasite čia GitHub saugykla.

Sukurkite „Flask Microservice“.

  1. Savo terminale sukurkite naują katalogą ir pakeiskite jį:
    mkdir kolba-mikroservisas
    cd kolba-mikroservisas
  2. Toliau įdiekite virtualenv, sukurti izoliuotą virtualią kūrimo aplinką.
    pip įdiegti virtualenv
  3. Sukurkite virtualią aplinką savo projekte:
    virtualenv venv
  4. Galiausiai suaktyvinkite virtualią aplinką.
    # „Windows“: 
    .\venv\Scripts\activate
    # Unix arba MacOS:
    šaltinis venv/bin/activate

Įdiekite reikiamus paketus

  1. Sukurti naują reikalavimai.txt failą šakniniame kataloge ir pridėkite šiuos paketus:
    kolba
    psycopg2 dvejetainis
    sqlalchemija
  2. Tada įdiekite paketus.
    pip install -r reikalavimai.txt

Sukurkite „Flask“ serverį

Šakniniame kataloge sukurkite naują failą: service.pyir šį kodą:

  1. Atlikite šiuos importavimo veiksmus:
     kolba importuoti Kolba, prašymas, jsonify
    sqlalchemija importuoti sukurti_variklis, stulpelis, sveikas skaičius, eilutė
    sqlalchemy.orm importuoti seansų kūrėjas
    sqlalchemy.ext.declarative importuoti deklaratyvus_bazė
    importuoti psichopg2
  2. Sukurkite „Flask“ egzempliorių ir sukonfigūruokite duomenų bazės ryšį.
    programa = Kolba (__name__)

    variklis = kurti_variklis("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.0v_service_feflaskv_service.)

    Nukopijuokite išorinės duomenų bazės URL Render duomenų bazės nustatymų puslapyje. Mes naudosime SQLAlchemy Create_engine metodas ir Psycopg2 Norėdami sukonfigūruoti duomenų bazės ryšį. Būtinai atnaujinkite ir pakeiskite duomenų bazės URL aukščiau pateiktame kode savo PostgreSQL egzemplioriaus URL, atitinkančiu aukščiau nurodytą formatą. Jei URL formatas neteisingas, kodas išmes klaidą.
  3. Sukurkite duomenų bazės SQLAlchemy modelį.
    Pagrindas = deklaratyvus_bazė()
    klasėVartotojas(Bazė):
    __lentelės pavadinimas__ = "vartotojai"
    id = Stulpelis (Sveikasis skaičius, pagrindinis_raktas=Tiesa)
    pavadinimas = Stulpelis (String(50))
    Base.metadata.create_all (variklis)
    spausdinti ("Lentelė "vartotojai" sėkmingai sukurta.")
    Sesija = seansų kūrėjas (variklis)
    Kodas apibrėžia vartotojų lentelės duomenų modelį. Apibrėžęs modelį, jis sukuria lentelę naudodamas SQLAlchemy Create_all metodas, kuris paima duomenų bazę jungties variklio objektas kaip parametras. Galiausiai sukuriamas egzempliorius seansų kūrėjas naudojant tą patį variklio objektą, kad būtų galima sąveikauti su duomenų baze.
  4. Galiausiai apibrėžkite mikropaslaugos API maršrutus.
    @app.route("/api/user", method=["POST"])
    defsukurti_vartotojas():
    duomenys = request.get_json()
    vardas = duomenys["vardas"]
    bandyti:
    sesija = sesija ()
    new_user = Vartotojas (vardas = vardas)
    session.add (naujas_vartotojas)
    session.commit()
    grąžinti {"id": naujas_vartotojas.id, "vardas": naujas_vartotojas.vardas, "žinutė": f"Vartotojas {vardas} sukurtas“.}, 201
    išskyrus Išimtis kaip e:
    spausdinti (f "klaida"{e}' įvyko.")
    grąžinti {"klaida": "Kuriant naudotoją įvyko klaida."}, 500
    @app.route("/api/user", method=["GET"])
    defget_all_users():
    bandyti:
    sesija = sesija ()
    vartotojai = session.query (User).all()
    jeigu vartotojai:
    rezultatas = []
    dėl Vartotojas in vartotojai:
    result.append({"id": Vartotojo ID, "vardas": Vartotojo vardas})
    grąžinti jsonify (rezultatas)
    Kitas:
    grąžinti jsonify({"klaida": f „Vartotojai nerasta“.}), 404
    išskyrus Išimtis kaip e:
    spausdinti (f "klaida"{e}' įvyko.")
    grąžinti {"klaida": „Priimant visus vartotojus įvyko klaida“.}, 500
    jeigu __vardas__ == "__pagrindinis__":
    app.run (debug=Tiesa, šeimininkas="0.0.0.0")

Išbandykite „Microservice“.

Aukščiau pateiktas kodas demonstruoja paprastą vartotojo duomenų mikroservisą, kuris prideda ir gauna duomenis iš PostgreSQL duomenų bazės. Idealiu atveju mikropaslaugos atspindi REST API architektūra nes tai leidžia lanksčiai kurti žiniatinklio paslaugas – ši architektūra puikiai dera su mikropaslaugų dizaino modeliu.

Tačiau svarbu pažymėti, kad mikropaslaugos taip pat gali naudoti kitų tipų projektavimo metodus ir ryšio protokolus, atsižvelgiant į konkrečius sistemos poreikius.

Norėdami išbandyti paslaugą, sukite kūrimo serverį ir eikite į „Postman“, kad pateiktumėte HTTP užklausas į apibrėžtus galinius taškus.

flask – programos paslaugos paleidimas

„Postman“ pateikite POST užklausą, kad pridėtumėte vartotojo duomenis.

Mikropaslaugų talpinimas naudojant „Docker“.

„Docker“ sujungia programas ir jų priklausomybes į konteinerius. Šis metodas supaprastina mikro paslaugų kūrimą, diegimą ir valdymą gamybos aplinkoje nes kiekviena paslauga gali veikti savarankiškai ir susisiekti su kitomis tarnybomis naudodama sukonfigūruotą ryšį protokolas.

Prieš pradėdami, pirmiausia turite įdiegti „Docker“, atlikdami veiksmus, nurodytus Docker svetainė. Tada sukurkite „Docker“ vaizdą iš „Dockerfile“, kuriame yra būtinos instrukcijos, kaip nustatyti reikiamas priklausomybes, kad programa būtų paleista konteineryje.

  1. Sukurkite Dockerfile savo projekto aplanko šakniniame kataloge ir pridėkite šias instrukcijas:
    NUO Python:3.9- alpinis
    DARBO VADOVAS /app
    KOPIJUOT reikalavimai.txt ./
    BĖGTI pip install -r reikalavimai.txt
    KOPIJUOT. .
    ATSAKYTI5000
    CMD ["python", "./service.py"]
  2. Vykdykite toliau pateiktą komandą, kad sukurtumėte „Docker“ vaizdą.
     docker build -t flask-microservice .
  3. Galiausiai paleiskite „Docker“ konteinerį.
    docker run -p 5000:5000 flask-microservice

Taip bus paleistas „Docker“ konteineris, kuriame veikia „Flask“ mikro paslauga, ir bus parodytas konteinerio 5000 prievadas. 8000 prievadą pagrindiniame kompiuteryje, leidžiantį pateikti HTTP užklausas iš savo žiniatinklio naršyklės arba paštininko naudojant URL http://localhost: 5000.

„Microservice“ architektūros pritaikymas

„Microservices“ architektūra tapo populiariu metodu kuriant keičiamo dydžio ir patikimas programinės įrangos programas. Padalijus programą į mažas, nepriklausomai diegiamas paslaugas, mikropaslaugų architektūra palengvina sistemos priežiūrą ir mastelį.

Nors ši architektūra turi galimų pranašumų, ji tinka ne visais naudojimo atvejais. Bet kokiu atveju konkretūs projekto verslo reikalavimai pirmiausia turėtų turėti įtakos pasirinktam projektavimo požiūriui.