Tüccarların üyelerinin hızla büyümesine, kullanıcı aktivitesini sürdürmesine ve kullanıcının büyüme sistemini iyileştirmesine daha iyi yardımcı olmak için Youzan Kullanıcı Merkezi-Üyelik Büyüme Ekibi, mevcut iş senaryolarına dayalı nispeten eksiksiz bir görev merkezi sistemi tasarladı. Ayrıca uygulanabilecek birçok ortak teknik bileşen vardır. Daha sonra, bu makale bu yaygın olarak kullanılan teknik bileşenleri kısaca paylaşacak ve öneriler sunacaktır.
Başlamadan önce birkaç soru soracağız:
1.1 İçimizdeki bazı siyah kelimeler
2.1 Görev merkezinin başlangıç noktası:
2.2 Görev merkezinin hedefleri:
3.1 Teknik çözümlerimiz
B tarafı konfigürasyon merkezini ve C tarafı görev işleme merkezini mevcut iş sisteminden ayırıyoruz, yaygın olarak kullanılan bazı sistem bileşenlerini topluyoruz, atomik arayüz, düzenleme ve yeteneklerin bütünlüğünü sağlamaya çalışıyoruz; genel araç kavanozu ile birleştirildiğinde, İş sistemi erişimi yeterince hızlıdır; aynı zamanda, platform tipi bir genel konfigürasyon kurulur ve apollo tabanlı dinamik yükleme konfigürasyon bilgileri yerel olarak önbelleğe almak için kullanılır, böylece yeni görevlere uygulamaları yayınlamadan hızlı bir şekilde erişilebilir.
3.2 Platformlar, tüccarlar ve kullanıcılar nasıl bağlanır?
Youzan bir saas şirketi olmasına rağmen, Youzan'ın iç platformları, tüccarları ve kullanıcıları ile ilgili kavramlar korunur, üçünün birbirini tamamladığı ve bağımsız olarak ortaya çıkmayacağı söylenebilir.
3.2 Başka hangi yetenekleri sağlıyoruz?
3.3 Ortak görev durumu
Evrensel ve makul durum akışı, C-son kullanıcısının görev tamamlama durumunu hızlı bir şekilde bulabilir ve ayırt edebilir. Başarısız olan ve sonlandırılan iş, görev tamamlama ve tekrar oynatma için zamanlı görevlere güvenebilir, tamamlanmaya hızlı bir şekilde ilerleyebilir ve kullanıcılara anormalliklerin getirilmesini önlemek için ödüller verebilir. Ödül bilgilerinin senkronize edilmemesi sorunu, sistemde tutarlılığı sağlar.
4.1 Idempotent kontrol bileşenleri
4.1.1 Neden idempotent bileşenleri kullanmalı?
Görev merkezinin inişinde, birçok senaryonun görevin tek idempotansını kontrol etmesi gerekir ve çoklu sürümler yeniden iletilmez vb. Önceden, idempotence sağlamak için esas olarak db idempotent tabloları kullanıyorduk ve iş benzersiz dizinlerini ekledik, ancak veritabanı işlem garantisine ihtiyacımız var, yani idempotent ardışık düzen ve iş birlikte sunulmalı ve başarısız olursa geri alınmalıdır. Çoklu veritabanı senaryosu kullanıldığında, iş sisteminin her kitaplığı bir akış tablosu eklemeli ve parçadaki iş kimliğini, kullanışsız olan parça kimliğiyle tutarlı olacak şekilde kontrol etmelidir.
İş talebi kayıtlarını depolamak için dağıtılmış depolamayı (redis gibi) kullanan bazı dahili sistemler de vardır. İsteği aldıktan sonra sunucu, işin benzersiz akışının depoya düşmesini sağlamak için atomik sorgu ve kaydetme işlemlerini (redis'in setnx komutu gibi) kullanır ve işletme tarafından belirlenen zaman aşımı süresinden önce iş akışının idempotansını kontrol eder. Tekrarlayan bir akış bulunduğunda, belirli bir stratejiye göre geri dönün.
Görev merkezi sistemi uygulandığında, iki mod aynı anda korunur ve erişim tarafının bağlı olduğu depolamanın ölçeklenebilirliği ve hızlı erişimi de dikkate alınmalıdır.
4.1.2 idempotent bileşenler için kurallar
4.1.3 idempotent bileşenlerin tasarımı
Temel alet kavanoz paketi, hızlı erişim amacına ulaşmak için tüm idempotent bileşen mantığını taşır. Apollo aracılığıyla, ilgili konfigürasyon, herhangi bir zamanda iş sisteminin hızlı geçişini ve çevrimiçi acil durumu sağlamak için dinamik olarak itilebilir.
4.2 Entegre genel önbelleğe alma yeteneği süreci düzenleme bileşeni
Birden fazla görev nedeniyle, birçok temel bileşen özelliği doğrudan yeniden kullanılabilir. Örneğin, ödüllendirmede: büyüme puanları yayınlama, puan verme, kupon verme vb. Birçok görev, tekrarlanan geliştirme olmadan yeni görevlere hızlı erişim amacına ulaşmak için aynı mantığa sahiptir.
Mevcut mantığı hızla düzenleyebilen ve tekrarlayan geliştirme çalışmalarını azaltabilen bir dizi db + xml yapılandırma süreci düzenleme motoru geliştirdik.
Düzenleme ayrıca temel yetenekler sağlar:
4.3 Dinamik konfigürasyon değişim bileşenleri
Şu anda, birçok temel konfigürasyon, bağımlı konfigürasyon dosyaları veya apollo'nun dinamik konfigürasyonu yoluyla yapılmaktadır.
Ancak bu iki yöntemin belirli avantajları ve dezavantajları vardır: yapılandırma dosyası yöntemi, depolama kapasitesi sınırlı olmamakla birlikte, yapılandırma değişikliklerinden sonra uygulamanın yeniden başlatılması gerekir, bu da daha karmaşıktır. Apollo anahtar yöntemi dinamik olarak değiştirilebilse de, depolanan yapılandırma bilgileri çok küçüktür ve belirli bir uzunluk sınırına sahiptir. Görev merkezinin çoklu görev platformunun konfigürasyonu üzerinde belirli bir etkisi vardır.
Sonuç olarak, jvm + apollo tabanlı bir gecikmeli yükleme stratejisi kullanılır, bu da sık sık yayınlamaya gerek kalmamasını ve yapılandırma bilgilerinin dinamik olarak değiştirilebilmesini sağlar.
4.4 Bağımsız eşzamansız günlük işlem hattı kaydı
Geleneksel eşzamanlı günlük kayıtları, sistem kaynaklarını işgal eder ve görev merkezinin özellikleri nedeniyle, C tarafında görevlerin tamamlanmasıyla ilgili birçok bilgi olacaktır. Bu nedenle, görev merkezi indirildiğinde, eşzamansız akış olayı bir günlüğe dönüştürülür ve ayrı bir günlük sistemi, günlük toplama, karşıya yükleme, görselleştirme ve alma gibi genel yetenekler sağlar.
Görselleştirme ve konfigürasyon ilkesi doğrultusunda, içsel gelişim ilkesini azaltırken dışarıdan erişimi kolaylaştırmak için. Ardından, sistemi geliştirmeye devam edeceğiz: