8C/16T Begin met 1 Microservicesom door de Routekaart capaciteit-structuur(Veronderstellingen: Go/Rust-centrisch, Elixir real-time, Laravel=Alleen beheer, Nginx/Envoy, Redis, Postgres, MeiliSearch, S3/R2, Cloudflare-cache intensief gebruikt)
Premisse (realistische aannames)
- Verkeersmix: Lezen 80% / Schrijven 20%API gemiddelde respons 2-8KB
- Cloudflare Cache Treffers: statisch 85%+, API GET 20-40%
- Doel vertraging: p95 < 80ms (API), < 150ms (Zoeken)
- Cijfers zijn **voorzichtige schattingen (±30%)** en zijn de stabiele werkingslimieten gebaseerd op p95.
Gelaagde microservice-structuur/capaciteitstabel (8 cores 16 threads)
Stappen | Aantal fysieke servers | Batch (aanbevolen service) | Geschatte aanhoudende banden (gebaseerd op aanmelding) | Stabiele RPS (totaalbedrag) | Belangrijkste knelpunten en triggers |
---|---|---|---|---|---|
A. Alles-in-één | 1 | Nginx/Envoy, Ga naar APILaravel(Admin), Redis, Postgres, Meili, Elixir (WS), Beeldwerker | 20.000 tot 40.000 | 6k tot 12k | DB/Schijf, Geheugendruk. p95↑Als , CPU>70%, DB TPS>2k, dan volgende stap |
B. De twee scheiden | 2 eenheden | S1: Nginx + Go API + Elixir + Redis / S2: Postgres + Meili + Media | 60.000 tot 100.000 | 12k tot 20k | DB IOPS-gesloten, zoek QPS. 3 eenheden als DB CPU>60%, QPS>1,5k |
C. De drie scheiden | Drie | S1: Nginx+Go API / S2: Postgres (alleen) / S3: Elixir(WS)+Meili+Media | 120.000 tot 180.000 | 20k tot 35k | WS-sessies↑, zoekpieken. Meili p95>150ms, WS>8 alleen voor 4-5 eenheden. |
D. Optimaal voor 4-5 | 4-5 eenheden | +S4: Alleen zoeken (Meili), +S5: Media/Kue/Cron (Optioneel) | 200,000 - 300,000 | 35k tot 55k | API CPU, cache misses, DB leesbelasting. Leespiek↑ als redupliceren |
E. 7-9 eenheden verlengen | 7-9 eenheden | 2-3 API's horizontaal, DB: primair1 + redundantie1-2, Zoeken 1-2, WS 1-2, Media/Batch 1 | 350.000 tot 550.000 | 60k tot 90k | Netwerk/LB, cachestrategie. DB-replicatievertraging, wanneer search sharding nodig is |
Referentiedrempels (1 x 8-core 16-thread, aannames voor optimalisatie/cache):
-. Ga naar API: 6k-12k RPS Stabiel / 20.000+ aanhoudende banden (alleen-lezen)
-. Elixir WS: 60.000-100.000 sessies
-. PostgresStabiel binnen 2-4k QPS voor eenvoudige query's, 1-2k TPS voor schrijfopdrachten
-. Redis50.000+ OPS/S (netwerk/hotkey-aandacht)
-. MeiliSearch600-1.500 QPS (varieert afhankelijk van complexiteit query/filters)
Checklist voor faseovergang (operationele triggers)
- API p95 > 80 ms 15 minuten of meer of CPU > 65% ondersteund
- DBGemiddelde latentie > 20 ms, actieve verbindingspool 80%↑, checkpointvertraging
- Cache: Sneltoets bias, cache miss rate > 30%
- WSSessies op één knooppunt > 80k of zendvertraging ↑.
- Zoek op: p95 > 150 ms, geaccumuleerde indexeringsvertraging
Aanbevelingen voor het inzetten van microservices (samenvatting)
- Kern-APIGo (eerste prioriteit), met hotpaths met ultrahoge prestaties, gescheiden in Rust
- Live/ChatStandalone knooppunt van Elixir (Phoenix)
- Admin/ContentLaravel (+Octane) afzonderlijke container, wachtrij/cache vereist
- gegevensPostgres (main) → In stap D/E wordt de Een leadreplica toevoegen
- Zoek opSpecifiek knooppunt voor Meili (stap C~), sharding/replica bij QPS↑.
- Wachtrij/Batch/MediaKnooppunt met alleen werknemers (stap D naar)
- RandCloudflare Cache Regels - SWR - API Cache (glijdende TTL)
Snelle beslissingsgids
- Eerste lancering/POC → A (1 eenheid)
- MAU↑ - officieel geopend → B (2 eenheden)(DB-ontkoppeling alleen al verhoogt de stabiliteit enorm)
- Real-time/zoeken in actie → C (3)
- Nationale campagne/piekvoorbereiding → D (4-5 eenheden)
- Altijd massale co-occurrence - meerdere pieken tegelijkertijd → E (7-9 eenheden)
✅ 1. Inschatten van de behoeften aan middelen/prestaties voor elke dienst
www | Frontend SSR, Nuxt, enz. | Gemiddeld tot hoog (CPU/RAM/SSD) | SEO antwoord |
api | Gemiddeld tot hoog (CPU/IO/RAM) | REST of GraphQL | |
winkelen | Winkeleigenschappen | Gemiddeld tot hoog (RAM/DB IO) | Producten, winkelwagen en afrekenen |
db | MariaDB / MySQL | Fase (RAM/SSD) | SSD's zijn belangrijk |
redis | Cache / sessie / wachtrij stuurprogramma's | Gemiddeld tot hoog (RAM) | Snelle geheugenreactie vereist |
cdn | Statische bron-servers | Fase (DiskIO/Netwerk) | Beschikbare mitigaties wanneer Cloudflare CDN wordt gebruikt |
gemeenschap | Gemeenschappen, prikborden | Medium (DB/Zoeken) | Commentaar, empathie en meldingen |
chat | Live chat (Socket.io, enz.) | Fase (CPU/Memory/Netwerk) | Websockets vereist |
raad aan | Aanbevelingsalgoritmen | Gemiddeld tot hoog (RAM/CPU) | Meilisearch of ML |
bladwijzer | Favorieten | ha (DB) | Eenvoudige staten |
zoek | Op MeiliSearch gebaseerde zoekservice | Fase (RAM/SSD) | Volledige tekst index |
extern | Externe API-integraties (adressen, eigenschappen, enz.) | Laag tot medium (netwerk) | Aanbevolen scheiding van asynchrone wachtrijen |
auth | OAuth2/JWT/SSO-authenticatie | Medium (CPU/RAM) | Hoog aantal verzoeken |
admin | Filament etc. beheerderspaneel | Medium (CPU/DB) | Voor intern gebruik |
admin-api | API's alleen voor beheerders | Medium (RAM/CPU) | Interne API's |
gebruiker | Ledenbeheer, Mijn pagina | Medium (DB/CPU) | Profiel/Instellingen |
betaling | Integratie van betalingen (KG Inesis, enz.) | Medium (Netwerk/Veiligheid) | Denk aan veiligheid |
wachtrij | Asynchrone wachtrijen voor taken (Laravel Queue, Horizon, enz.) | Fase (CPU/IO) | Beeldverwerking, e-mail en meer |
melding | Meldingen verzenden (push/e-mail/SMS, enz.) | Fase (Netwerk/CPU) | Integreren met externe API's |
verslag | Rapportage/statistieken verzamelen | ha (DB) | Ondersteunende functies |
stats | Statistieken over gebruikersgedrag verzamelen en analyseren | Gemiddeld tot hoog (RAM/opslag) | Langdurige opslag vereist |
db | MariaDB / MySQL | Zeer hoog (IO/RAM) | Moet een aparte server zijn |
gateway | API Gateway (bijv. Kong, Traefik, Nginx) | Routing, verificatie en logboekregistratie samenvoegen | |
bestand | Bestandsservers (bijv. MinIO/R2 Proxy) | Afbeeldingsuploads beheren |
✅ 2. Als een microservice Extra aanbevolen diensten
Aanvullende diensten | Rol/Omschrijving | Reden |
---|---|---|
back-up | Periodieke back-upservice DB/Bestand | Reactie op storing |
logger | Centraal loggen (bijv. Loki, FluentBit, Logstash) | Logboekverzameling per service |
monitor | Systeemmonitoring (bijv. Prometheus, Grafana) | Gezondheidscontroles, meldingen |
mailer | Mailing-only service (met SMTP-integratie) | Bulkmail |
cron | Services met alleen een planner (zoals Laravel Schedule) | Op tijd gebaseerde gebeurtenisisolatie |
sso | OAuth-integratie of SSO-service | Unified login-ondersteuning |
✅ 3. Hulpbronverdeling / inzet van 2 server microservices voorstellen
🖥️ Server1 (8 cores 16 threads, hoge klok)
Front-end verwerking / API / realtime service gericht (snelle respons cruciaal)
www
(Nuxt SSR)api
(Laravel API)winkelen
veiling
wedstrijd
auth
admin-api
chat
(Socket.io)wachtrij
melding
raad aan
gateway
(Nginx of Traefik)cron
/mailer
extern
(API-integratie)
karakteristiekFocus op reactiesnelheid en real-time verwerking van kritieke services, gebruikmakend van de voordelen van snelle NVMe SSD's en DDR5
🖥️ Server2 (8 cores 16 threads, hoge klok)
Opslag/analyse centraal, IO/bulkverwerking geoptimaliseerd
db
(MariaDB/MySQL)redis
meilisearch
cdn
(voor het cachen van statische bronnen)stats
verslag
gebruiker
admin
(Draad)gemeenschap
bladwijzer
zoek
bestand
(Uploaden, CDN-opslag)logger
,monitor
,back-up
karakteristiek: Veel kernen, goed voor het afhandelen van veel verzoeken tegelijkertijd, gericht op analyse/opslag/cache
✅ 4. Batchoverzicht (tabel)
Type service | Installatieserver |
---|---|
Real-time/responsgeoriënteerde diensten | Server1 |
Opslag/analyse/zoekgerichte diensten | Server2 |