Bu paylaşım, esas olarak aşağıdaki dört hususu tanıtır:
Zaman serisi iş panoraması
Düşük seviyeli makine izlemeden kullanıcıya yönelik uygulamalara kadar, zaman serisi iş senaryoları ayrılmaz ve zaman serisi verileri genellikle profesyonel zaman serisi veritabanları tarafından saklanır ve analiz edilir.Aşağıda, TSDB'nin kapsadığı iş senaryoları ve karşılaştığı zorluklar açıklanmaktadır.
1.1 Zaman serisi veritabanı kapsama senaryoları
Altyapı katmanı: kabin, fiziksel makine, işletim sistemi izleme günlüğü
Temel işletim ve bakım: sunfire (grup birleşik izleme, toplama ve alarm sistemi), Alibaba Cloud Monitoring, GOC (Ali Global Emergency Dispatching Command System)
Kaynak planlama: Grup dahili planlama sistemi, Kubernetes
Küme yönetimi: DBPaas (Ali'deki tüm veritabanı örneklerinin izlenmesi ve planlanması)
Uygulama katmanı: APM senaryosundaki çeşitli uygulamalar
1.2 Zaman serisi veri tabanlarının karşılaştığı zorluklar
Çeşitli seviyelerdeki farklı senaryolar nedeniyle, zaman serisi veritabanları da farklı zorluklarla karşı karşıyadır:
TSDB tanıtımı
2.1 TSDB'nin geliştirilmesi ve performansı
TSDB, 2016 yılında hizmete başladı ve şimdiye kadar üç Double Eleven promosyonuna katıldı. 2017 ile karşılaştırıldığında, okuma ve yazma işlem hacmi iki katına çıktı, TPS4000w'ye yazıldı ve grubun 130'dan fazla iş kolunu kapsayan 2wQPS sorgulama ve 10 milyar depolama zaman çizelgesi .
2.2 TSDB Mimarisine Giriş
Yukarıdaki şekilde gösterildiği gibi, soldan sağa veri toplama işleminin görüntülenmesi:
Edge bilişim : Temelde veri toplamadan sorumlu olan hafif ve güvenilir bilgi işlem çözümü, bulutta TSDB ile bağlantı kurar ve stabil olmayan kaynaklarla OLAP senaryolarında veya senaryolarında kararlı veri toplama ve temizlemeyi gerçekleştirir.
Zamanlama motoru :
Zaman serisi indeksi: zaman çizelgesi sorgusu;
Depolama motoru: zaman serisi verileri ve büyük veri depolaması için çözümler;
Akış veri toplama: zaman serisi veritabanının büyük verilerinde verimli toplama analizi gerçekleştirin;
Kararlılık yönetimi: bulut üzerinde kararlı ve güvenli çalışma;
Hesaplama motoru, sql motoru, akıllı motor : Zamanlama motorunun yeteneklerini genişletebilen ve kullanım eşiğini düşürebilen veri hesaplama, sql analizi, model algoritması vb. Gibi işlevleri gerçekleştirmek için temel olarak zamanlama motoruyla etkileşim kurun;
Protokol desteği : Temelde kullanıcılar için, kullanıcılara bazı görsel sorgulama ve analiz desteği sağlar.
Çekirdek teknolojisi
3.1 Büyük zaman serisi veri depolama
3.1.1 Veri Sıkıştırma
Depolamadan bahsetmişken, sıkıştırma kaçınılmazdır.Veri sıkıştırma yöntemlerinin ve sıkıştırma algoritmalarının seçimi, büyük miktarda verinin depolanmasını büyük ölçüde destekler.
Yukarıdaki şekil, bir saatlik bir zaman aralığına sahip verileri temsil eder; 0-3600, anahtar olarak ikinci değer ve değer depolaması olarak saniye başına veri ile anahtar-değer depolama biçimini kullanarak son bir saatteki verileri temsil eder.
Burada facebook grada fikrine istinaden bir zamanlama sıkıştırma algoritması tanıtılmıştır.Tüm zaman damgaları ve bunlara karşılık gelen değerler sütun birleştirilerek iki büyük veri bloğunda toplanır ve daha sonra bu iki büyük blok üzerinde zamanlama sıkıştırma algoritması gerçekleştirilir ve daha sonra genel amaç kullanılır. Sıkıştırma için blok sıkıştırma algoritması.
Ayrıca, farklı veri türleri farklı veri sıkıştırma formatları kullanır, örneğin:
Zaman damgası: delta-delta
Kayan nokta: XOR kodlaması
Tamsayı: değişken uzunluklu kodlama
Dize: Sıkıştırılmış verilerin doğruluğunu sağlamak için depolama katmanında sıra dışı veri sıkıştırmasını gerçekleştiren LZ4 ve sıralama için sıkıştırma oranı 15: 1'dir.
3.1.2 Veri sıkıştırma etkisi
Neden zamanlama sıkıştırması + blok sıkıştırması kullanılıyor, bu resme bakabiliriz.
İlk olarak, zaman serisi sıkıştırma, farklı veri türleri için farklı sıkıştırma formatları kullanır, bu nedenle genel etki, blok sıkıştırma algoritmasından daha iyidir.Zaman serisi sıkıştırma algoritması verileri sıkıştırdıktan sonra, genel blok sıkıştırması kullanılır ve bu, blok sıkıştırmanın sıkıştırma verimliliğini etkilemez. , Zaman serisi sıkıştırma + blok sıkıştırmanın kullanılması, büyük verilerin depolanması için güçlü bir yardım sağlayan tek blok sıkıştırmaya kıyasla sıkıştırma oranını% 40 artırabilir.
3.2 Yüksek frekans ve düşük gecikmeli sorgu
Taobao Motu, kablosuz veri analizi ve izleme kullanan bir Alibaba ürünüdür.Grup içindeki 500'den fazla uygulamayı destekler.Çift Eleven promosyonu sırasında, en yüksek sorgu normal sorgu hacminden 10 kat daha yüksek olan 4000QPS'ye ulaşabilir. , Okuma ve yazma hızının% 99'unun 20 ms içinde olması gerekir, peki TSDB kullanıcı tarafında yüksek frekanslı ve düşük gecikmeli sorguları nasıl gerçekleştirir?
3.2.1 Dağıtılmış önbellek depolama uyarlaması
Java tabanlı Facebook Gorilla belgesine bakın, dinamik genişleme ve daralmayı gerçekleştirebilen ve tüm Double 11 boyunca 1000wTPS yazmayı ve 4000'i destekleyen, parçalama ve kapasite ayarlamasını gerçekleştirmek için zookeeper'a dayalı bir dizi dağıtılmış bellek önbellek depolaması yaptı. QPS sorgusu.
3.2.2 TsMem tasarımı
Şekilde gösterildiği gibi, TsMem, Disruptor'a dayalı bir RingBuffer oluşturur ve tüm kullanıcı okuma ve yazma isteklerini RingBuffer'da geçici olarak saklar.Birden çok üretici ve bir tüketici modu ile, bir tüketicinin talebi birden çok çalışan iş parçacığına gönderilecektir. Bir işçi iş parçacığı bir parçadır, bu nedenle aslında RingBuffer'a dayalı bir bellek parçacığıdır.Bu şekilde, bir iş parçacığı bir parçaya karşılık gelir, böylece hiçbir paylaşılan kaynak üretilmez ve kilitlerin uygulanmasını dikkate almaya gerek yoktur.
Hem yazmayı hem de okumayı tek bir bağlantıya dağıtın ve bir işçi aynı anda okuma ve yazma işlemlerini gerçekleştirerek okuma ve yazma performansını artırın
Aynı zamanda, RingBuffer'ın gruplama özelliği, kullanıcının okuma ve yazma isteklerini geçici olarak bir kesimde saklamak için de kullanılır ve daha sonra belirli bir eşik veya zamana ulaşıldığında, işçi doğrudan bir parti gönderecektir.Bu, istekte belirli bir gecikmeye neden olur, ancak büyük ölçüde iyileşecektir. İşçinin verimi.
Peki verimli bellek yönetimi ve son derece düşük aksaklık gecikmesi nasıl sağlanır?
Veri bloklarının referans sayımına dayalı yığın havuzu yönetimi için, tüm zaman serisi veri blokları bellekte toplanır, bu da verileri okurken geçici nesnelerin oluşturulmasını azaltabilir ve aynı zamanda titremeyi ve gecikme.
3.3 Yüksek enlem toplama analizi
3.3.1 TSDB motor çekirdek modülü
TSDB ve çekirdek modül esas olarak iki bölümden oluşur, yani zaman serisi indeksi ve akış toplama motoru.Kullanıcıdan bir sorgu talebi geldiğinde, zaman serisi sorgu motoru, bir ardışık düzen zaman çizelgesi seti oluşturmak için karşılık gelen zaman serisi dizinini ve ardından akış toplama Motor, ilgili toplama sonuçlarını hesaplar.
3.3.2 Zamanlama Dizini
Zamanlama indeksi nedir?
Esas, zaman damgası olan tersine çevrilmiş bir dizindir, veriler ters çevrilir ve ardından zaman damgası eklenir, böylece kullanıcı isteği geldiğinde, verilerin konumu kullanıcının filtreleme koşullarına ve ardından zaman çizelgesine göre elde edilebilir. Zaman damgası iki kez filtrelenir, bu da dizinin isabet oranını artırır ve ayrıca zaman çizelgesinin TTL'sini destekler.
Nasıl saklanır?
Zaman serisi dizini kv'ye göre saklanır ve yatay genişlemeyi destekleyebilen durumsuz bir düğümdür.
3.3.3 Zamanlama Dizini Optimize Edici
Zamanlama dizini optimize edici, temel olarak ters çevrilmiş dizini sorgularken kullanıcıların verimliliği artırmasına yardımcı olmak içindir. Burada optimize edici, kullanıcı isteklerini üç şekilde ele alacaktır:
Optimize edici, kullanıcı sorguları için optimizasyonu nasıl değerlendirir?
İlk olarak, kullanıcının sorgu koşullarına göre hesaplama için en küçük kümeyi seçecek ve ardından sorgu zaman çizelgesinin var olup olmadığını belirleyecektir.Eğer yoksa, doğrudan dönün, bazı açıkça tanımlanmış koşullar bulanık koşullara göre önceliklidir, örneğin, belirli önceliklerin dahil edilmesine eşittir.
3.3.4 Akış Toplama Motoru
Akış toplama motoru, kullanıcı sorguladığında kullanıcının karmaşık sorgusunu bir toplama operatörleri kombinasyonuna dönüştüren hafif bir tek işlemli uygulama kullanır. Akış toplama motoru, 10'dan fazla çekirdek toplama operatörü, 20'den fazla doldurma stratejisi ve 10'dan fazla enterpolasyon içerir algoritması.
Karmaşık sorgular operatör birleştirme işlemlerine dönüştürüldüğünden, uygulamada gevşek bağlı bir yapıdır, güçlü ölçeklenebilirliğe sahiptir ve her operatörün yürütülmesi çok verimli ve hızlıdır, bellek ek yükünü ve temeldeki depolamayı azaltır. Ek olarak, toplanan veriler, önceden toplanmış ve hassasiyeti azaltılmış toplanmış verilerle sorunsuz bir şekilde bağlanabilir, bu da sorgu sonuçlarının yeniden kullanım oranını artırır.
3.4 Kararlılık garantisi
3.4.1 TSBD stabilite garanti mekanizması
TSDB sadece tescilli bulutu değil, aynı zamanda müşterilere genel bulut üzerinde de hizmet veriyor, bu nedenle kararlılık, çekirdek ile aynı seviyede bahsedilebilecek bir konudur.TSDB, üç yönden kararlılığı garanti eder.
Kaynak izolasyonu
Okuma ve yazma konularının ayrılması: Sorgu hatalı olduğunda yazmanın etkilenmemesini ve yazma hatalı olduğunda sorgunun etkilenmemesini sağlar;
Yavaş sorgu ve büyük sorgunun izolasyonu: Kullanıcının sorgu koşullarına göre bir parmak izi oluşturun ve parmak izinin yavaş bir sorgu mu yoksa geçmiş kayıtlara dayalı büyük bir sorgu mu olduğuna karar verin. Öyleyse, sorgu ayrı bir sıraya yerleştirilecektir. Kaynaklar sınırlıdır ve normal sorgular normal kuyruğa girer, bu da genel sorguyu bir dereceye kadar hızlandırır;
Sorgu durumu yönetimi ve zamanlama: Sorgu görevlerinin durum yönetimi ve izlenmesi, görev planlamasından ayrılmıştır, bu da görev yönetimi ile zamanlama arasındaki bağlantıyı azaltır ve görev operasyonunun kararlılığını artırır.
Zaman çizelgesi ve zaman serisi verilerine dayalı ince taneli akış kontrolü
Her bir veri parçası, kullanıcının sorgu koşullarının verilere daha ayrıntılı bir şekilde ulaşmasını ve gereksiz kaynak tüketimini azaltmasını sağlamak için tersine çevrilmiş dizin + zaman damgası endeksi yöntemiyle konumlandırılır.
Kapsamlı izleme göstergeleri
TSDB, TSDB'de hangi sorunların meydana geldiğini gerçek zamanlı olarak anlayabilmesini ve ardından sorunları hızla bulup çözebilmesini sağlamak için genel verim, sorgu yanıt süresi, IO katmanının temel göstergeleri ve her bir çekirdek modülün ayrıntılı ve kapsamlı bir şekilde izlenmesine sahiptir.
3.4.2 TSDB iş yükü yönetimi
Uçtan uca akış kontrolü: Kullanıcının yazma arayüzü kaynak IO kontrolü yapacak, iki çekirdek modül zamanlama indeksi yapacak ve toplama motorunun giriş katmanı, taraf kullanıcının daha fazla yazmasını veya sorgulamasını sağlamak için bir IO akış kontrolü de yapacaktır. Miktar çok büyük olduğunda, iki çekirdek modül etkilenmeyecektir;
Çok boyutlu kontrol: Sorgu zaman çizelgesinin çok uzun olması, çok fazla veri noktasına erişilmesi, okunan bayt sayısının çok büyük olması, tüm sorgunun çok uzun sürmesi gibi farklı boyutlardan TSDB okuma ve yazma konusunda bazı kısıtlamalar vardır. .
Özet görünüm
TSDB'nin geliştirme geçmişini ve çözdüğü sorunları zaten tanıttım.Aşağıdakiler, TSDB'nin gelecekteki gelişme yönünü ve özelliklerini tanıtacaktır:
Zaman geçtikçe, veri miktarı daha da artacaktır.Kullanıcı maliyetlerini azaltmak için bazı gereksiz veya düşük ısılı verilerin mevcut veri depolama yöntemine göre depolanması gerekmez ve daha düşük maliyetli bir depolama yöntemi ile değiştirilebilir.
Kullanıcılar için daha iyi çözümler sağlamak için mevcut zamanlama motorunu ve hesaplama motorunu, endüstrideki prometheus, kubernetes, openTSDB vb. Gibi birçok olgun zamanlama ekolojisi ile birleştirin.
Kullanıcılara daha istikrarlı ve güvenilir akıllı analiz modelleri sağlayın, sektördeki bazı kullanıcıların sıkıntılarını anlayın ve bazı acil sorunları çözün.
yazar hakkında
Zhang Xiaoguang Alibaba'da kıdemli geliştirme mühendisi olan Hua Ming Chai Wu, APM SaaS ürün geliştirme konusunda uzun yıllara dayanan deneyime sahip ve endüstride Druid, ClickHouse, InfluxDB vb. Dahil olmak üzere birçok ana akım zaman serisi veritabanı ürününü kullanmış, zaman serisi veritabanları alanında uzun yıllara dayanan deneyime sahip ve şu anda Alibaba'dan sorumludur. Baba TSDB çekirdek motor geliştirme.
Bu makale, Zhang Xiaoguangın DataFun tarafından düzenlenen DataFun topluluğundaki konuşmasından gelmektedir.