serlo / documentation

General documenation for software developers at serlo.org
Creative Commons Zero v1.0 Universal
0 stars 0 forks source link

Dummy issue for inserting images to documentation #9

Open CarolinJaser opened 3 years ago

CarolinJaser commented 3 years ago
Bildschirmfoto 2021-03-03 um 15 06 08 Bildschirmfoto 2021-03-03 um 15 05 51
kulla commented 3 years ago

2021-03-12-145752_802x802_scrot 2021-03-12-145801_777x326_scrot 2021-03-12-145807_505x374_scrot

kulla commented 3 years ago

cache

@startuml

start

:compute cache key for request;

if (cache has value under computed cache key?) then (yes)
 :return value from cache;
else (no)
 :perform request;
 :save response in cache;
 :return response from request;
endif

stop

@enduml
kulla commented 3 years ago

listener

@startuml
actor user as user
participant "legacy serlo.org" as serlo
participant api.serlo.org as api
user -> serlo: Update something (taxonomy term, ...)
serlo -> api: Update cache entry "..." to "..."
serlo <- api: Done ✓
serlo -> api: Update cache entry "..." to "..."
serlo <- api: Done ✓
... updates as often as necessary ...
user <- serlo: Done ✓
@enduml
kulla commented 3 years ago

swr

@startuml
actor user as user
box "api.serlo.org"
participant resolver as resolver
participant "data source" as datasource
database cache as cache
queue "swr queue" as queue
participant "swr worker" as worker
endbox
database service as service

== When a GraphQL query is made ==

user -> resolver: make GraphQL query
resolver -> resolver: calculate necessary ressource(s) to perform query
group for each ressource
resolver -> datasource: request ressource R
datasource -> datasource: calculate cache key K for ressource R
datasource -> cache: get value and it's age for key K
datasource <- cache: return value and it's age
datasource -> datasource: Is cache entry older than specified max age?
datasource -> queue: If yes: put cache key K on queue
resolver <- datasource: return old value from cache
end
user <- resolver: return response for GraphQL query

== In parallel: Algorithm for the SWR worker ==

group endless loop
queue <- worker: get oldest cache key and delete it
queue -> worker: cache key K
worker -> worker: calculate which request need to be done to update K
worker -> service: get current value for K
worker <- service: return current value
cache <- worker: Save current value for cache key K
end

@enduml
CarolinJaser commented 3 years ago
Bildschirmfoto 2021-03-30 um 11 02 08
CarolinJaser commented 3 years ago
Bildschirmfoto 2021-03-31 um 18 28 58