Teknoloji
Tek dosya, tek kova, tile sunucusu yok
Çoğu harita altyapısı bir veritabanı, bir çizim servisi ve sürekli bakılması gereken bir önbellektir. Bizimki, nesne depolamada duran tek bir arşiv ve ondan bayt aralıkları okuyan küçük bir Worker. Nasıl çalıştığını ve ne kadara mal olduğunu tam olarak anlatıyoruz.
136 GB
Tek PMTiles arşivi, tüm gezegen
0
Bakılacak tile sunucusu ve veritabanı
z0-15
Zoom aralığı, en dibe kadar vektör
13
Aynı tile'lardan üretilen stil
OpenStreetMap'ten ekranınızdaki piksele
Dört durak. Bu zincirde hiçbir şey kara kutu değil ve her durak inceleyip değiştirebileceğimiz bir yer.
Gezegen tek bir dosyaya dönüşür
OpenStreetMap verisi bir PMTiles arşivine paketlenir: zoom 0'dan 15'e kadar tüm tile piramidi, başında bir dizinle birlikte tek dosyada. Veritabanı yok. Bizimki 136 GB ve Cloudflare R2 nesne depolamasında duruyor.
planet.pmtiles · 136.627.786.308 baytWorker bayt aralıklarını okur
Bir tarayıcı z/x/y tile'ını istediğinde, Cloudflare Worker'ımız arşiv dizininde yerini bulur ve R2'den yalnızca o baytları bir range isteğiyle geri okur. Arşivi asla indirmez ve ısıtılacak hiçbir şey yoktur.
GET /planet/{z}/{x}/{y}.mvtEdge cevabı önbelleğe alır
Tile, ziyaretçiye en yakın Cloudflare noktasında 24 saat önbellekte tutulur. São Paulo'daki ve İstanbul'daki ziyaretçi haritayı birkaç milisaniye uzaktan alır, R2'ye bir daha dokunulmaz.
Cache-Control: public, max-age=86400Tarayıcı haritayı çizer
MapLibre GL vektör tile'ları ve stil JSON'unu alıp haritayı GPU'da çizer. Hiçbir şey resim değildir: harita her ekranda keskindir, döndürülüp ölçeklenirken bulanıklaşmaz ve görünümünü tamamen stil belirler.
maplibre-gl · WebGLNeden vektör tile, neden resim değil
Stil bir çizim değil, veridir
Raster tile'da renkler başkasının sunucusunda bir resmin içine pişirilmiştir. Vektör tile'da tarayıcı geometriyi alır ve nasıl boyayacağına kendisi karar verir. Markaya özel bir stilin mümkün olmasının tek sebebi budur.
Her ekranda keskin
Vektör geometri her piksel yoğunluğuna ve her ara zoom değerine ölçeklenir. Bulanık ara zoom yoktur, saklanıp sunulacak ikinci bir retina tile seti de yoktur.
Veriniz aynı tuvale katılır
İşaretçiler, rotalar ve poligonlar aynı çizici tarafından, aynı sahnede, aynı anda çizilir. Bir resmin üstünde yüzmezler; haritanın parçasıdırlar.
Neden tile sunucusu değil de PMTiles
Klasik bir tile sunucusu milyonlarca küçük soruya cevap verir: bana z/x/y tile'ını ver. Bu, çalıştırılacak, yamalanacak, ölçeklenecek ve izlenecek bir süreç demektir. PMTiles bunu tersine çevirir. Tüm tile'lar bir dizinle birlikte tek arşive paketlenir ve istemci o tek dosyanın bayt aralıklarını ister. Nesne depolama ve CDN'ler bayt aralığı sunmakta son derece iyidir.
- Ayakta tutulacak bir şey yok, yani gece üçte uyanılacak bir şey de yok
- Depolama gigabayt başına kuruşlar, okuma milyon başına kuruşun kesirleri
- Aynı dosya S3 uyumlu her depolamada, hatta bir dizüstünde çalışır
- Cloudflare R2 veri çıkışından ücret almaz, yani trafiğin artması faturayı büyütmez
Dağıtım stratejisinin tamamı edge'dir
Harita altyapısında zor olan veri değil, teslimattır. İstanbul'daki tek bir sunucudan Tokyo'daki ziyaretçiye tile göndermek, takılarak açılan bir harita demektir. Arşivi Cloudflare depolamasında tutuyor ve Cloudflare'in küresel ağından sunuyoruz; harita her zaman ziyaretçiye en yakın noktadan geliyor. Veri çıkışı her hacimde ücretsiz, ve fiyatın istek sayacı yerine sabit aylık bir paket olabilmesinin sebebi tam olarak bu.
Veriyi taze tutmak
OpenStreetMap'ten aylık bir döngüyle tazeliyoruz. Topluluğun eklediği yeni yollar, binalar ve yer adları bu tazelemeyle haritanıza akıyor; özel stiliniz de otomatik takip ediyor, çünkü stil elle düzenlenmiş değil bir renk nesnesinden üretiliyor. Güncelleme sırasında hizmet kesintisi olmuyor.
OpenStreetMap verisi ODbL lisanslıdır. Atıf zorunludur, bu yüzden haritanın köşesindeki kredi görünür kalır. Gizlemenin bir yolunu sunmuyoruz, çünkü o atıf sizin sokağınızı haritalayan gönüllülerin hakkı.
Lisans nasıl uygulanıyor
API anahtarı yok. Worker, herhangi bir şey sunmadan önce isteği yapan alan adını lisans listesiyle karşılaştırır; lisanssız bir alan adı, erişim talebi linkini içeren bir 403 alır. Yani döndürülecek bir şey, istemci kodunda sızacak bir sır ve yanlışlıkla açık bir depoya işlenecek bir token yoktur.
Bu bir alan adı kontrolüdür, kriptografik bir garanti değil. Sunucu tarafında vekil sunucu kuran kararlı biri başlıkları taklit edebilir; istemci tarafında çalışan her harita servisinde durum aynıdır. Bunu size söylemeyi, aksini iddia etmeye tercih ederiz.
Kullandığımız yığın
OpenStreetMap
Her şeyin üzerine kurulduğu açık coğrafi veri
PMTiles
Tek dosyalık tile arşiv formatı
Cloudflare R2
Nesne depolama, veri çıkış ücreti yok
Cloudflare Workers
Edge'deki tile uç noktası
MapLibre GL
Tarayıcıdaki açık kaynak çizici
Aynı yığını kendi altyapınızda ister misiniz?
Yukarıdakilerin hepsi açık formatlardan ve açık kaynaktan kurulu. Kendiniz nasıl çalıştıracağınıza dair rehberler yayınlıyoruz, ve Enterprise anlaşmasıyla kendi Cloudflare hesabınızın içine memnuniyetle kurarız.