Sobes.tech
Middle

Kādās pakalpojumu veidos pastāv un kā tie darbojas zemā līmenī?

sobes.tech AI

Atbilde no AI

Ir vairākas galvenās pakalpojumu veidi mikropakalpojumu arhitektūras un izplatītu sistēmu kontekstā:

  • Monolītiskās lietojumprogrammas: Vienota, nedalāma koda bāze, kas satur visu lietojumprogrammas funkcionalitāti.
  • Mikropakalpojumi: Mazas, neatkarīgas pakalpojumu kopas, katra realizē noteiktu biznesa loģiku. Savstarpēji sadarbojas caur API.
  • Serverless (bez serveriem): Mākoņu pakalpojumu sniedzējs dinamiski pārvalda resursu sadali un mērogošanu. Programētājs koncentrējas tikai uz funkciju kodu.

Darbojas zemā līmenī šādi:

Monolīts:

Darbojas kā viens process. Visi komponenti vienlaikus ielādējas atmiņā. Savstarpējā saziņa notiek ar funkciju vai metožu izsaukumiem vienā adreses telpā. Noturība pret kļūdām nodrošināta ar visa monolīta rezerves kopēšanu. Mērogošana ir sarežģīta, nepieciešams paplašināt visu lietojumprogrammu. Resursu izmantošana bieži ir pārmērīga:

Mikropakalpojumi:

Katrs mikropakalpojums ir atsevišķs process vai procesu kopums. Darbojas savā izolētā vidē (konteinerā, virtuālajā mašīnā). Sazinās caur tīklu, parasti caur HTTP/gRPC — sinhroni vai asinhroni protokoli (piemēram, RabbitMQ, Kafka). Katram pakalpojumam var būt savs tehnoloģiju komplekts un datu bāze. Mērogošana notiek neatkarīgi no katra pakalpojuma. Nodrošina augstu uzticamību (viena pakalpojuma neveiksme neietekmē citus) un efektīvu resursu izmantošanu. Vadība ir sarežģīta ( nepieciešams Service Discovery, API Gateway, žurnālu un uzraudzības risinājumi).

Piemērs tīkla sadarbībai starp mikropakalpojumiem:

// Pieprasījums pakalpojumam A
GET /users/123 HTTP/1.1
Host: service-a.example.com
// Atbilde no pakalpojuma A
HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "username": "testuser"
}

Serverless:

Funkcijas kods ir izvietots mākoņu vidē. Mākoņu pakalpojumu sniedzējs izpilda funkciju, reaģējot uz noteiktiem notikumiem (HTTP pieprasījumi, rindas ziņojumi, datu bāzes izmaiņas). Infrastruktūru (serverus, OS) pārvalda pakalpojumu sniedzējs. Funkcijas parasti ir īslaicīgas un bez stāvokļa (bez saglabātas stāvokļa starp izsaukumiem). Mērogošana ir automātiska, balstoties uz notikumu skaitu. Maksājumi tiek veikti pēc resursu patēriņa (izpildes skaits, darba laiks). Zemākā līmenī pakalpojumu sniedzējs izmanto konteinerus vai virtuālās mašīnas funkciju izolācijai un izpildei, bet šis līmenis ir paslēpts lietotājam:

AWS Lambda piemērs — Serverless funkcija:

# Vienkārša Lambda funkcija
import json

def lambda_handler(event, context):
    # Apstrādā ienākošo notikumu
    # Izpilda loģiku
    response_body = {
        "message": "Hello from Lambda!",
        "input": event
    }

    return {
        "statusCode": 200,
        "body": json.dumps(response_body)
    }

Salīdzināšanas tabula:

Raksturlielums Monolīts Mikropakalpojumi Serverless
Arhitektūra Viena koda bāze Neatkarīgi pakalpojumi Funkcijas, pārvaldītas notikumu dēļ
Izvietošana Viena procesa Katram pakalpojumam atsevišķa Pārvalda pakalpojumu sniedzējs
Mērogošana Horizontāla (kopēšana) Katram pakalpojumam atsevišķa Automātiska, notikumu balstīta
Noturība pret kļūdām Zema Augsta (atdalīta) Augsta (iebūvēta)
Resursu izmantošana Daļēji pārmērīga Efektīvāka Maksājums pēc patēriņa
Vadības sarežģītība Zema Augsta Zema (infrastruktūrai)
Komunikācija Iekšprocesu līmenī Tīkla (API, ziņojumi) Notikumu dēļ pakalpojuma sniedzējs