Vai nu jūsu uzdevums ir mazs, vai arī varat to sadalīt mazākos uzdevumos. Un neliels uzdevums ir lieliski piemērots mikropakalpojumam.

Programmatūras izstrāde ir būtisks programmatūras izstrādes posms. Dizaina pieeja var ietekmēt visu projektu un to, kā jūs izpildāt dažādas prasības.

Izstrādātāji bieži ir izmantojuši monolītu arhitektūru, apvienojot visus programmatūras komponentus vienā modulī. Tomēr šī pieeja var izrādīties neefektīva, jo īpaši lielākiem lietojumiem.

Mikropakalpojumu mērķis ir novērst šos ierobežojumus. Mikropakalpojums ir neliela, modulāra lietojumprogramma, kas veic noteiktas funkcijas. Atšķirībā no monolītajām lietojumprogrammām, mikropakalpojumi nodrošina neatkarīgu izvietošanu un mērogošanu. Rezultātā tie ir elastīgāki un vieglāk kopjami.

Mikropakalpojumu arhitektūra

Mikropakalpojumu arhitektūra ir programmatūras izstrādes pieeja, kas sadala lielu lietojumprogrammu neatkarīgos pakalpojumos, un katrs pakalpojums ir izstrādāts, lai apmierinātu konkrētas uzņēmējdarbības prasības.

instagram viewer

Šie pakalpojumi darbojas, izmantojot īpašus resursus, tostarp atsevišķus datu bāzes gadījumus un skaitļošanas jaudu. Atšķirībā no monolītajām sistēmām, mikropakalpojumu lietojumprogrammas ir brīvi savienotas, nodrošinot lielāku elastību.

Sadalītā sistēmā servera mezgli izvieto un izpilda mikropakalpojumu lietojumprogrammas kā atsevišķas procesi — saziņa savā starpā, izmantojot sakaru protokolus, piemēram, HTTP vai ziņojumu starpniekus piemēram, RabbitMQ.

Būtībā šī arhitektoniskā pieeja ļauj pakalpojumiem saglabāt savu neatkarību vienam no otra, vienlaikus efektīvi darbojoties programmatūras sistēmā.

Šajā apmācībā mēs jums palīdzēsim ieviest vienkāršu lietotāja mikropakalpojumu, kas pārvalda lietotāja datus, izmantojot Flask un PostgreSQL.

Iestatiet PostgreSQL datu bāzi

Lai sāktu, instalējiet PostgreSQL. Ja jums nav instalēta PostgreSQL, varat to uzzināt kā instalēt PostgreSQL operētājsistēmā Windows vai kā instalēt PostgreSQL operētājsistēmā MacOS.

Varat arī konfigurēt a attālā PostgreSQL datu bāze piemēram.

Šajā rokasgrāmatā tiks izmantots Render bezmaksas līmenis, lai iestatītu PostgreSQL datu bāzi. Lai izveidotu PostgreSQL datu bāzes gadījumu Renderā, rīkojieties šādi:

  1. Dodieties uz Rendera vietne, reģistrējieties kontam un piesakieties savā mērinstrumentu panelis lappuse.
  2. Informācijas paneļa lapā parādītajā pakalpojumu sarakstā atlasiet PostgreSQL pakalpojumu.
  3. Datu bāzes iestatījumu lapā aizpildiet nepieciešamo informāciju un noteikti atlasiet bezmaksas līmenisun visbeidzot noklikšķiniet Izveidot datu bāzi.

Jūs varat atrast šī projekta kodu GitHub repozitorijs.

Izveidojiet Kolbas mikropakalpojumu

  1. Terminālī izveidojiet jaunu direktoriju un mainiet tajā:
    mkdir flask-microservice
    cd kolba-mikroserviss
  2. Tālāk instalējiet virtualenv, lai izveidotu izolētu virtuālo izstrādes vidi.
    pip instalēt virtualenv
  3. Izveidojiet virtuālo vidi savā projektā:
    virtualenv venv
  4. Visbeidzot aktivizējiet virtuālo vidi.
    # Windows: 
    .\venv\Scripts\activate
    # Unix vai MacOS:
    avots venv/bin/activate

Instalējiet nepieciešamās pakotnes

  1. Izveidojiet jaunu prasības.txt failu saknes direktorijā un pievienojiet šīs pakotnes:
    kolba
    psycopg2-binārais
    sqlalķīmija
  2. Pēc tam instalējiet pakotnes.
    pip install -r prasības.txt

Izveidojiet Flask serveri

Saknes direktorijā izveidojiet jaunu failu: service.py, un šādu kodu:

  1. Veiciet šādu importēšanu:
    no kolba imports Kolba, pieprasījums, jsonify
    no sqlalķīmija imports create_engine, kolonna, vesels skaitlis, virkne
    no sqlalchemy.orm imports sesiju veidotājs
    no sqlalchemy.ext.declarative imports deklaratīvā_bāze
    imports psycopg2
  2. Izveidojiet Flask instanci un konfigurējiet datu bāzes savienojumu.
    lietotne = Kolba (__name__)

    dzinējs = create_engine("postgresql+psycopg2://flask_service_fe0v_user: 4785MhjfkdjfhjfjyUx67O2Nuzjchb2MQIP@dpg-chffjfjdkgfk54d6mb7860-a.oregon-postgres.0v_service"/feflaskv_service.)

    Kopējiet ārējās datu bāzes URL Rendera datu bāzes iestatījumu lapā. Mēs izmantosim SQLAlchemy create_engine metode un Psycopg2 lai konfigurētu datu bāzes savienojumu. Noteikti atjauniniet un aizstājiet datu bāzes URL iepriekš minētajā kodā ar savas PostgreSQL instances URL, kas atbilst iepriekš norādītajam formātam. Ja URL formāts ir nepareizs, kods radīs kļūdu.
  3. Izveidojiet datu bāzes SQLAlchemy modeli.
    Bāze = deklaratīvā_bāze()
    klasēLietotājs(bāze):
    __tabulas nosaukums__ = 'lietotāji'
    id = kolonna (vesels skaitlis, primārā_atslēga=Taisnība)
    name = Kolonna (String(50))
    Base.metadata.create_all (dzinējs)
    drukāt ("Tabula "lietotāji" ir veiksmīgi izveidota.")
    Sesija = sesiju veidotājs (dzinējs)
    Kods definē datu modeli lietotāju tabulai. Pēc modeļa definēšanas tas izveido tabulu, izmantojot SQLAlchemy Create_all metode, kas ņem datu bāzi savienojuma dzinēja objekts kā parametrs. Visbeidzot, tiek izveidots gadījums sesiju veidotājs izmantojot vienu un to pašu dzinēja objektu, lai iespējotu mijiedarbību ar datu bāzi.
  4. Visbeidzot, definējiet mikropakalpojuma API maršrutus.
    @app.route("/api/user", method=["POST"])
    defizveidot_lietotājs():
    dati = request.get_json()
    nosaukums = dati["vārds"]
    mēģināt:
    sesija = sesija ()
    new_user = Lietotājs (vārds = vārds)
    session.add (jauns_lietotājs)
    session.commit()
    atgriezties {"id": new_user.id, "vārds": new_user.name, "ziņa": f"Lietotājs {name} izveidots."}, 201
    izņemot Izņēmums e:
    drukāt (f "kļūda"{e}' notika.")
    atgriezties {"kļūda": "Izveidojot lietotāju, radās kļūda."}, 500
    @app.route("/api/user", method=["GET"])
    defget_all_users():
    mēģināt:
    sesija = sesija ()
    lietotāji = session.query (Lietotājs).all()
    ja lietotāji:
    rezultāts = []
    priekš lietotājs iekšā lietotāji:
    result.append({"id": Lietotāja ID, "vārds": lietotājvārds})
    atgriezties jsonify (rezultāts)
    cits:
    atgriezties jsonify({"kļūda": f"Lietotāji nav atrasti."}), 404
    izņemot Izņēmums e:
    drukāt (f "kļūda"{e}' notika.")
    atgriezties {"kļūda": "Iegūstot visus lietotājus, radās kļūda."}, 500
    ja __nosaukums__ == "__galvenais__":
    app.run (debug=Taisnība, saimniekdators="0.0.0.0")

Pārbaudiet mikroservisu

Iepriekš minētais kods demonstrē vienkāršu lietotāja datu mikropakalpojumu, kas pievieno un ienes datus no PostgreSQL datu bāzes. Ideālā gadījumā mikropakalpojumi atspoguļo REST API arhitektūra jo tā nodrošina elastīgu pieeju tīmekļa pakalpojumu izveidei — šī arhitektūra labi atbilst mikropakalpojumu dizaina modelim.

Tomēr ir svarīgi atzīmēt, ka mikropakalpojumi var izmantot arī cita veida dizaina pieejas un sakaru protokolus atkarībā no sistēmas īpašajām vajadzībām.

Lai pārbaudītu pakalpojumu, pagrieziet izstrādes serveri un dodieties uz Postman, lai veiktu HTTP pieprasījumus definētajiem galapunktiem.

flask — lietotnes pakalpojuma palaišana

Programmā Postman veiciet POST pieprasījumu, lai pievienotu lietotāja datus.

Mikropakalpojumu konteineru ievietošana ar Docker

Docker apvieno lietojumprogrammas un to atkarības konteineros. Šī pieeja racionalizē mikropakalpojumu izstrādi, izvietošanu un pārvaldību ražošanas vidē jo katrs pakalpojums var darboties neatkarīgi un sazināties ar citiem pakalpojumiem, izmantojot konfigurēto komunikāciju protokols.

Pirms sākat darbu, vispirms ir jāinstalē Docker, veicot darbības, kas norādītas lapā Docker vietne. Pēc tam izveidojiet Docker attēlu no Docker faila, kurā ir ietverti nepieciešamie norādījumi nepieciešamo atkarību iestatīšanai, lai lietojumprogrammu palaistu konteinerā.

  1. Izveidojiet Dockerfile sava projekta mapes saknes direktorijā un pievienojiet šīs instrukcijas:
    NO python:3.9- alpīnis
    DARBA DIREKTĪVĀ /app
    KOPĒT prasības.txt ./
    RUN pip install -r prasības.txt
    KOPĒT. .
    ATKLĀJOT5000
    CMD ["pitons", "./service.py"]
  2. Palaidiet tālāk norādīto komandu, lai izveidotu Docker attēlu.
     docker build -t flask-microservice .
  3. Visbeidzot palaidiet Docker konteineru.
    docker run -p 5000:5000 flask-microservice

Tas sāks Docker konteineru, kurā darbojas mikropakalpojums Flask, un pakļaus konteinera portu 5000 resursdatora datora ports 8000, kas ļauj veikt HTTP pieprasījumus no tīmekļa pārlūkprogrammas vai pastnieka, izmantojot URL http://localhost: 5000.

Mikropakalpojumu arhitektūras pieņemšana

Mikropakalpojumu arhitektūra ir kļuvusi par populāru pieeju mērogojamu un stabilu programmatūras lietojumprogrammu izstrādei. Sadalot lietojumprogrammu mazos, neatkarīgi izvietojamos pakalpojumos, mikropakalpojumu arhitektūra atvieglo sistēmas uzturēšanu un mērogošanu.

Lai gan šai arhitektūrai ir potenciālas priekšrocības, tā nav piemērota visiem lietošanas gadījumiem. Jebkurā gadījumā projekta specifiskajām biznesa prasībām galvenokārt vajadzētu ietekmēt pieņemto dizaina pieeju.