20. 20
Sequence diagram V1 2019-02
client AP Redis DB
get POIs get cache from Redis
return cache
21. 21
Sequence diagram V1 2019-02
client AP Redis DB
get POIs get cache from Redis
return cacheif hits, return POIs
22. 22
Sequence diagram V1 2019-02
client AP Redis DB
get POIs get cache from Redis
return cacheif hits, return POIs
if misses, calculate POIs from DB
23. 23
Sequence diagram V1 2019-02
client AP Redis DB
get POIs get cache from Redis
return cacheif hits, return POIs
if misses, calculate POIs from DB
return calculated results
24. 24
Sequence diagram V1 2019-02
client AP Redis DB
get POIs get cache from Redis
return cacheif hits, return POIs
if misses, calculate POIs from DB
return calculated results
store cache to Redis
25. 25
Sequence diagram V1 2019-02
client AP Redis DB
get POIs get cache from Redis
return cacheif hits, return POIs
if misses, calculate POIs from DB
return calculated results
store cache to Redis
store OK
26. 26
Sequence diagram V1 2019-02
client AP Redis DB
get POIs get cache from Redis
return cacheif hits, return POIs
if misses, calculate POIs from DB
return calculated results
store cache to Redis
store OK
return POIs
31. 31
Advisory lock
client
req A (search Taipei city)
res B (data processing...)
req B (search Taipei city)
V1 2019-02
server
calculate
T
T+1
T+3
32. 32
Advisory lock
client
req A (search Taipei city)
res B (data processing...)
req B (search Taipei city)
res A (calculated)
V1 2019-02
server
calculate
T
T+1
T+3
T+10
76. 76
Summary
● Remove unnecessary OSM POI
– drinking_water
– place_of_worship
– basketball, football, volleyball
V2.2 2020-07 late
77. 77
Summary
● Remove unnecessary OSM POI
– drinking_water
– place_of_worship
– basketball, football, volleyball
– parking
V2.2 2020-07 late
78. 78
Summary
● Remove unnecessary OSM POI
– drinking_water
– place_of_worship
– basketball, football, volleyball
– parking
● Expired time
V2.2 2020-07 late
79. 79
Summary
● Remove unnecessary OSM POI
– drinking_water
– place_of_worship
– basketball, football, volleyball
– parking
● Expired time
– KNN cache has expired after 14d
V2.2 2020-07 late
80. 80
Summary
● Remove unnecessary OSM POI
– drinking_water
– place_of_worship
– basketball, football, volleyball
– parking
● Expired time
– KNN cache has expired after 14d
– POI history cache has expired after 1d
V2.2 2020-07 late
84. 84
Summary
● Read Redis at first, if not exists, set refresh true
● Read DB second, if not exists, calculate and store DB & Redis
V3 2020-09-22 late
85. 85
Summary
● Read Redis at first, if not exists, set refresh true
● Read DB second, if not exists, calculate and store DB & Redis
● Set instead of uniq function
V3 2020-09-22 late
86. 86
Summary
● Read Redis at first, if not exists, set refresh true
● Read DB second, if not exists, calculate and store DB & Redis
● Set instead of uniq function
● L2 & L3 cache
V3 2020-09-22 late
87. 87
Summary
● Read Redis at first, if not exists, set refresh true
● Read DB second, if not exists, calculate and store DB & Redis
● Set instead of uniq function
● L2 & L3 cache
● Refresher to scan refresh true and calculate
V3 2020-09-22 late
92. 92
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
V3 2020-09-22 late
93. 93
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
V3 2020-09-22 late
94. 94
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
V3 2020-09-22 late
95. 95
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
V3 2020-09-22 late
96. 96
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
V3 2020-09-22 late
97. 97
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
V3 2020-09-22 late
return cache
98. 98
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
if hits, return POIs
V3 2020-09-22 late
return cache
99. 99
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
if hits, return POIs
V3 2020-09-22 late
if misses, calculate POIs
return cache
100. 100
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
if hits, return POIs
V3 2020-09-22 late
if misses, calculate POIs
return cache
return POI IDs
101. 101
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
if hits, return POIs
V3 2020-09-22 late
if misses, calculate POIs
return cache
return POI IDs
store cache
102. 102
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
if hits, return POIs
V3 2020-09-22 late
if misses, calculate POIs
return cache
return POI IDs
store cache
store OK
103. 103
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
if hits, return POIs
V3 2020-09-22 late
if misses, calculate POIs
return cache
return POI IDs
store cache
store cache
store OK
104. 104
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
if hits, return POIs
V3 2020-09-22 late
if misses, calculate POIs
return cache
return POI IDs
store cache
store cache
store OK
store OK
105. 105
Sequence diagram - API
client AP RedisDB
get POIs get cache
return cache
if hits, return POIs
if misses, set refresh=true
set OK
get cache
if hits, return POIs
V3 2020-09-22 late
if misses, calculate POIs
return cache
return POI IDs
store cache
store cache
return POIs
store OK
store OK
109. 109
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
V3 2020-09-22 late
110. 110
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
return POI IDs
V3 2020-09-22 late
111. 111
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
return POI IDs
store cache
V3 2020-09-22 late
112. 112
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
return POI IDs
store cache
store OK
V3 2020-09-22 late
113. 113
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
return POI IDs
store cache
store OK
V3 2020-09-22 late
store cache
114. 114
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
return POI IDs
store cache
store OK
V3 2020-09-22 late
store cache
store OK
115. 115
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
return POI IDs
store cache
store OK
V3 2020-09-22 late
store cache
store OK
set refresh=false
116. 116
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
return POI IDs
store cache
store OK
V3 2020-09-22 late
store cache
store OK
set refresh=false
set OK
117. 117
Sequence diagram - refresher
city IDs refresher RedisDB
run calculate POIs
return POI IDs
store cache
store OK
done
V3 2020-09-22 late
store cache
store OK
set refresh=false
set OK
127. 127
Sequence diagram
client AP RedisDB
run get cache
return cache
if hits, get cache
return cache
V3.1 2020-09-23 early
128. 128
Sequence diagram
client AP RedisDB
run get cache
return cache
if hits, get cache
return cache
if misses, store cache
V3.1 2020-09-23 early
129. 129
Sequence diagram
client AP RedisDB
run get cache
return cache
if hits, get cache
return cache
if misses, store cache
store OK
V3.1 2020-09-23 early
130. 130
Sequence diagram
client AP RedisDB
run get cache
return cache
if hits, get cache
return cache
done
if misses, store cache
store OK
V3.1 2020-09-23 early
154. 154
Sequence diagram
client AP DBLRU cache
get results
(with POI IDs, city ID,language)
return results
V3.4 2020-09-24 mid
(at AP)
155. 155
Sequence diagram
client AP DBLRU cache
get results
if hits, return POIs
(with POI IDs, city ID,language)
return results
V3.4 2020-09-24 mid
(at AP)
156. 156
Sequence diagram
client AP DBLRU cache
get results
if hits, return POIs
if misses, build results
(with POI IDs, city ID,language)
return results
V3.4 2020-09-24 mid
(at AP)
157. 157
Sequence diagram
client AP DBLRU cache
get results
if hits, return POIs
if misses, build results
return results
(with POI IDs, city ID,language)
return results
V3.4 2020-09-24 mid
(at AP)
158. 158
Sequence diagram
client AP DBLRU cache
get results
if hits, return POIs
if misses, build results
return results
store results
(with POI IDs, city ID,language)
return results
V3.4 2020-09-24 mid
(at AP)
159. 159
Sequence diagram
client AP DBLRU cache
get results
if hits, return POIs
if misses, build results
return results
store results
store OK
(with POI IDs, city ID,language)
return results
V3.4 2020-09-24 mid
(at AP)
160. 160
Sequence diagram
client AP DBLRU cache
get results
if hits, return POIs
if misses, build results
return results
store results
return POIs store OK
(with POI IDs, city ID,language)
return results
V3.4 2020-09-24 mid
(at AP)