Skip to content

Commit

Permalink
feat: lock certain colos to preferred bucket regions
Browse files Browse the repository at this point in the history
  • Loading branch information
zackpollard committed Sep 12, 2024
1 parent adb975b commit 1dd5337
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 10 deletions.
58 changes: 58 additions & 0 deletions tiles/src/buckets.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
export type R2BucketRegion = 'apac' | 'eeur' | 'enam' | 'wnam' | 'weur';

export const preferredBuckets: { [key: string]: R2BucketRegion[] } = {
AMS: ['weur', 'eeur'],
ATL: ['enam'],
BKK: ['apac'],
BOM: ['apac'],
BOS: ['enam'],
BRU: ['eeur', 'weur'],
BUF: ['enam'],
CDG: ['eeur', 'weur'],
CPH: ['eeur', 'weur'],
DEN: ['enam', 'wnam'],
DFW: ['enam', 'wnam'],
DME: ['eeur', 'weur', 'apac'],
DUB: ['eeur', 'weur'],
DUS: ['eeur', 'weur'],
EWR: ['enam'],
EZE: ['enam', 'wnam'],
FRA: ['eeur', 'weur'],
GRU: ['enam'],
HAM: ['apac', 'weur', 'eeur'],
HKG: ['apac'],
HYD: ['apac'],
IAD: ['enam'],
IST: ['eeur', 'weur'],
KEF: ['eeur', 'weur'],
KHH: ['apac'],
KIX: ['apac'],
LAS: ['enam', 'wnam'],
LAX: ['wnam'],
LHR: ['eeur', 'weur'],
MAD: ['eeur', 'weur'],
MAN: ['eeur', 'weur'],
MBA: ['apac', 'weur', 'eeur'],
MIA: ['enam'],
MSP: ['enam', 'wnam'],
MUC: ['eeur', 'weur'],
MXP: ['eeur', 'weur'],
NRT: ['apac'],
ORD: ['enam', 'wnam'],
OSL: ['weur', 'eeur'],
OTP: ['eeur', 'apac'],
PER: ['apac'],
RIX: ['eeur', 'weur'],
SEA: ['enam', 'wnam'],
SIN: ['apac'],
SJC: ['wnam'],
SOF: ['eeur'],
STR: ['eeur', 'weur'],
SYD: ['apac', 'wnam'],
VIE: ['eeur', 'weur'],
WAW: ['eeur', 'weur'],
YUL: ['enam'],
YVR: ['wnam'],
YYZ: ['enam'],
ZRH: ['eeur', 'weur'],
};
25 changes: 15 additions & 10 deletions tiles/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { preferredBuckets, R2BucketRegion } from './buckets';
import { IMetricsRepository } from './interface';
import { PMTilesService } from './pmtiles/pmtiles.service';
import {
Expand Down Expand Up @@ -117,17 +118,21 @@ async function handleRequest(

const memCacheRepository = new MemCacheRepository(globalThis.memCache);
const kvRepository = new CloudflareKVRepository(env.KV);
const storageRepository = new R2StorageRepository(
{
apac: env.BUCKET_APAC,
eeur: env.BUCKET_EEUR,
enam: env.BUCKET_ENAM,
wnam: env.BUCKET_WNAM,
weur: env.BUCKET_WEUR,
},
env.PMTILES_FILE_NAME,
metrics,
const bucketMap: { [key in R2BucketRegion]: R2Bucket } = {
apac: env.BUCKET_APAC,
eeur: env.BUCKET_EEUR,
enam: env.BUCKET_ENAM,
wnam: env.BUCKET_WNAM,
weur: env.BUCKET_WEUR,
};
const colo = request.cf?.colo || '';
const buckets: R2BucketRegion[] = preferredBuckets[colo] || ['weur', 'eeur', 'enam', 'wnam', 'apac'];
console.log('Buckets', buckets);
const filteredBucketMap = Object.fromEntries(
Object.entries(bucketMap).filter(([key]) => buckets.includes(key as R2BucketRegion)),
);

const storageRepository = new R2StorageRepository(filteredBucketMap, env.PMTILES_FILE_NAME, metrics);
const pmTilesService = await metrics.monitorAsyncFunction({ name: 'pmtiles_init' }, PMTilesService.init)(
storageRepository,
memCacheRepository,
Expand Down

0 comments on commit 1dd5337

Please sign in to comment.