Altyapı, terminal optimizasyonu, yeni oyun gerçekleştirme: QQ kırmızı zarf teknik çözümlerinin şifresi tamamen çözüldü

Yazar Xu Lingfeng Zhou Haifa

Düzenle | kuyruk kuyruğu

2017 Bahar Festivali'nde AR kırmızı zarflar parlak bir şekilde parladı. Bu kırmızı zarf savaşında, QQ'nun AR kırmızı zarfları, kırmızı zarfları kaydırarak ve ardından yeni bir zirveye ulaştığında, momentum küçümsenemez. Bu makale, QQ kırmızı zarfların teknik tasarımcılarının deneyimidir ve QQ kırmızı zarfların teknik arka planını çok yönlü olarak ortaya çıkaracaktır.

Editörün Notu

2015'teki Bahar Şenliği'nden bu yana, QQ Bahar Şenliği kırmızı zarfları birkaç aşamadan geçti: kurumsal kırmızı zarflar (2015), hızlıca kaydırılan kırmızı zarflar (2016) ve AR kırmızı zarflar (2017). Oynanıştaki sürekli yenilik sayesinde, etkinlik arttı ve Bahar Şenliği haline geldi Kırmızı Bahar Şenliği'ne renk katmak çok eğlenceli. 2017 Yılbaşı Arifesinde AR kırmızı zarflar ve hızlıca kayan kırmızı zarflar yeni bir rekora ulaştı. Kırmızı zarf kapan kullanıcı sayısı 342 milyona ulaştı ve toplam 3.77 milyar kırmızı zarf kaydırıldı.

Peki, QQ kırmızı zarfın teknik çözümü nedir? Genel yapısı nedir? Önemli sistemler nasıl tasarlanır? Kullanıcı deneyimini sağlamak için mobil Q terminalinde hangi optimizasyonlar yapıldı? Bu yılki QQ kırmızı zarflarında hangi yeni girişimler yapıldı ve karşılaşılan sorunlar nasıl çözüldü? Bu makale mimariden, mobil QQ terminalinin optimizasyonuna, kişiselleştirilmiş kırmızı zarf ve yeni AR oyununa kadar başlayacak ve QQ kırmızı zarf teknik çözümünün şifresini herkes için tamamen çözecektir.

QQ red envelope genel yapısı ve önemli sistemler

QQ Bahar Şenliği kırmızı zarfları, Yeni Yıl gecesi boyunca birbiri ardına tüm saat boyunca kaydırılan kırmızı zarflardır ve Yeni Yıl Arifesinde zirveye ulaşır. Bu, büyük kullanıcılar için tipik bir ani ölüm senaryosudur. Yenileyici ve güvenli kırmızı zarf ödemesini sağlamak için büyük kullanıcılar tarafından yapılan kırmızı zarf seliyle nasıl başa çıkılır , QQ kırmızı zarf tasarımında çözülmesi gereken en önemli teknik zorluktur. Ek olarak, kırmızı zarf projesi, mobil QQ terminali, mobil QQ arka uç, QQ cüzdan (on ödeme) sistemi, hediye sertifikası sistemi, resmi hesap ve diğer birçok iş sistemini içerir.Süreç uzun ve çoktur ve her sistemin performansı ve verimi büyük ölçüde farklılık gösterir.Her sistem nasıl sağlanır? Organik bir bütün oluşturmak, hizmetleri koordine etmek ve verimli bir şekilde sunmak da zorluklardan biridir.

Aşağıdaki şekil, QQ kırmızı zarfın basitleştirilmiş yapısını göstermektedir. Erişim katmanı, piyango sistemi, depolama sistemi, teslimat sistemi, resmi hesap mesaj bildirimi ve CDN kaynakları Birkaç bölüm bekleyin, lütfen önce genel bir anlayışa sahip olun, böylece aşağıdakileri okuyabilirsiniz.

Bu makale erişim katmanı, piyango sistemi ve dağıtım sistemine odaklanacaktır.

1. Erişim katman

Erişim katmanı, geçerli isteklerin şeffaf bir şekilde arka uç hizmetlerine iletilmesini sağlamak için piyango taleplerinin ön işlemesinden sorumlu olan kırmızı zarf arka uç hizmetinin kapısıdır. Erişim katmanı, yüksek kullanılabilirliğini ve yüksek kararlılığını sağlamak için, mobil QQ isteklerinin sıklığını gerçek zamanlı olarak kontrol ederek, erişim katmanını ezip geçerek kontrol edilemeyen bir duruma neden olan büyük taleplerin önüne geçebilir.

Büyük hizmet senaryosunda, ağ ek yükünden kaçınmak ve performansı artırmak için arka uç hizmetler için önbellek kullanımını kolaylaştırmak amacıyla, erişim katmanı, aynı kullanıcının isteğinin yalnızca aynı kırmızı zarf piyango mantığı makinesi tarafından işlenmesini sağlamak için tutarlı karma adresleme kullanır.

2. Piyango sistemi

QQ Red Envelope'un temel sistemi olan piyango sistemi, kullanıcı piyango taleplerinin kabul edilmesinde, piyango işleminin makul bir tasarım olasılığına göre tamamlanmasında, piyango sonuçlarının güvenli bir şekilde saklanmasında ve sorunsuz sevkiyatta kilit rol oynar. Büyük piyango talepleri karşısında, zamanında nasıl cevap verileceği, piyango sisteminin karşılaştığı zor bir sorundur.

Bu sorunları çözmek için bazı tasarım yöntemlerini benimsedik:

  • Erişim katmanında tutarlı Hash algoritması kullanın , Aynı kullanıcıdan gelen piyango talepleri yalnızca işlenmek üzere aynı piyango sistemine iletilecektir;

  • Piyango sistemi bir önbellek mekanizması kullanır , Piyango sürecini hızlandırırken, aynı zamanda depolama katmanına erişim baskısını da azaltır; Ödül kontenjan mekanizması, piyango sürecini kolaylaştırır, her türlü ödül orantılı olarak düzenli bir şekilde çekilir;

  • Akış ve mutabakat mekanizması , Piyango verilerinin nihayet kullanıcı hesabına hatasız olarak gönderilmesini sağlamak;

Piyango sisteminin mimarisi aşağıdaki şekilde gösterilmektedir:

(1) Önbellek mekanizması

İş gereksinimi, her kaydırma etkinliğindeki kullanıcının kazanma sayısını ve katılım süresini (30 saniye) sınırlamaktır. Her bir kullanıcının piyango talebi gelirse, önce kullanıcının kazanan geçmiş bilgilerini almak için depolama katmanına gidin ve ardından büyük ve oldukça eşzamanlı bir istek senaryosunda, kullanıcının piyango için uygun olup olmadığını belirleyin, bu kaçınılmaz olarak depolama katmanında büyük bir baskıya neden olacaktır. Bu yüzden burada, kullanıcının kazanan geçmiş bilgilerini kaydetmek için yerel bir bellek önbellek katmanı sunuyoruz. Bir istek geldiğinde, kullanıcının kazanan geçmiş bilgilerini almak için önce önbellek katmanına gidecek. Önbellek katmanında bulunamazsa, almak için depolama katmanına gidecektir. Böylelikle depolama katmanı üzerinde çok fazla baskıya neden olmaz ve aynı zamanda iş ihtiyaçlarını karşılayabilir. Önbelleğe alma katmanı, açık kaynaklı Memcached bileşenleri kullanılarak uygulanır.

(2) Tutarlı hash adresleme

Kırmızı zarf piyango sistemi dağıtılmış bir sistemdir, bu nedenle önbelleğe alma mekanizmasını etkili kılmak için, aynı kullanıcı (uin) isteklerinin her zaman aynı olmasını sağlamak için mobil QQ erişim katmanında tutarlı bir karma yönlendirme algoritması kullanırız. İşleme için mantıklı bir makine.

(3) Protokol işleme modülü

Mobil QQ arka ucunun hem istemcinin ikili isteğini hem de diğer Web sistemlerinin HTTP talebini işlemesi gerektiğinden, protokol işleme modülünün birincil görevi, çeşitli protokol formatlarıyla uyumlu olmak ve arka uç modülüne en basit yapıyı vermektir. Bu amaçla, Protobuf formatında (JSON formatıyla uyumlu ve işlem için tek tip olarak Protobuf'a dönüştürülecek) etkileşimli bir protokol geliştirdik ve arka uç modülüne geçtik.

(4) Kota yönetimi modülü

Mobil QQ Çin Yeni Yılı kırmızı zarfları birçok düzenli "etkinlik" aracılığıyla dağıtılır. Her bir olayda ne kadar nakit dağıtılabileceği, kaç sanal öğenin dağıtılabileceği ve dağıtım oranı kota verileridir.

Ayrıca, nakit ve sanal öğelerin ihraç hızını tam olarak kontrol etmemiz gerekiyor, böylece kullanıcılar bir etkinliğe katılmaya başladıklarında, ilk birkaç dakika içinde kullanıcılar tarafından süpürülmek yerine kırmızı zarf alma şansına sahip oluyorlar.

Kota bilgileri, kota yönetim aracı tarafından kontrol edilir ve değiştirilir ve her değişiklik yeni bir SeqNo oluşturur. Kota aracısı SeqNo'nun değiştiğini tespit ettiğinde, yerel paylaşılan belleği güncelleyecektir. Temsilci çift arabellekli bir tasarım benimsediğinden, mevcut iş süreci güncelleme tamamlanana kadar etkilenmeyecektir.

(5) Piyango modülü

Çekilişe odaklanırsak, QQ kırmızı zarf piyango algoritması aslında karmaşık değildir, ancak ürün ihtiyaçlarını karşılayıp karşılayamayacağı çok önemlidir. Tasarım fikrimiz, en azından aşağıdaki gereksinimleri karşılamaktır:

  • Nakit verme hızı ve her bir kalem ikinci seviyede kontrol edilebilir;

  • Nakit ve her bir kalemin dağıtım oranını ayarlamak uygundur;

  • Tüm kırmızı paketlerin dağıtıldığından emin olmaya çalışın.

Bu amaçla, aşağıdaki piyango süreci algoritmasını tasarladık:

Kırmızı zarflar, kota kısıtlamaları nedeniyle başarısız olduğu sürece, ödüllerin mümkün olduğunca dağıtılmasını sağlamak için, verilecek herhangi bir ödül kalmayana kadar kullanıcılara diğer ödüller için kırmızı zarf vermeye devam edeceğimizi belirtmek gerekir.

(6) Akış sistemi tasarımı

Akış sistemi, etkinlik sırasında çekiliş akış kayıtlarını kaydetmek ve etkinlik sonrasında ödül dağıtımı ve makbuzunun istatistiklerini ve mutabakatını yapmak için kullanılır. Sistem ayrıca, ödüllerin kullanıcı hesaplarına dağıtılmasını sağlamak için başarısız istekleri düzenli olarak yeniden yapar ve uzlaştırır.

Boru hattı sistem mimarisi aşağıdaki gibidir:

Ardışık düzen, kullanıcının kazanan bilgilerini ve kullanım durumunu kaydetmesi gerektiğinden, veri miktarı çok büyüktür, bu nedenle piyango mantığı katmanı, kayıt için yerel olarak sıralı yazma dosya yöntemini kullanır. Piyango mantık katmanı, özet ve yedekleme için yerel boru hattı dosyalarını periyodik olarak uzak boru hattı sistemine senkronize edecektir.Aynı zamanda, boru hattı sistemi başarısız olan boru hattını yeniden yapacak, piyango mantık katmanına bir talep gönderecek ve piyango mantık katmanı teslimatı arayacaktır. Sistem arayüzü, teslimat işlemini tamamlar.

(7) Depolama katmanı seçimi

Depolama katmanının tasarımı, arka uç mimari tasarımında her zaman odak noktası ve zorluk olmuştur. Şu anda, Tencent'teki daha olgun NoSQL depolama sistemleri arasında CKV ve Grocery bulunmaktadır. Bazı karşılaştırmalardan sonra, Market'i kullanmayı seçtik. Ana nedenler aşağıdaki gibidir:

Koşullu yargılama ile güçlü dağıtılmış atomik aritmetik işlem

Piyango mantığında, daha fazla ve daha az gönderim göndermekten kaçınmak için her ödülü saymak gerekir.Bu nedenle, verimli ve güvenilir bir dağıtılmış atomik toplama sayacı özellikle önemlidir.Bakkal, koşullu yargılamalı bir atomik toplama sayacını destekler.Ödül sayısı değeri, arayüzü bir kez arayarak tamamlanabilir. Kota kararı ve ödül sayısının artırılması;

Esnek veri türleri

Market, Anahtar-Anahtar-Satır veri depolama formatını destekler, kullanıcının kırmızı zarf kazanan bilgilerini esnek bir şekilde depolayabilir ve bir kullanıcının tek kırmızı zarf veya kırmızı zarf listesini elde etmek için zengin bir arayüz sağlar;

Dağıtımı ve genişletmesi kolay

Grocery, dağıtımı ve genişletmesi kolay özel ekip desteğine sahiptir.

Düzgün frekans sınırı tasarımı

Her ödül türü için, ilgili işletmenin kendi kapasitesi ve yetenekleri vardır ve her işletmenin yetenekleri aynı değildir (sarı elmas 4w / s, JD 2k / s, vb.). Kırmızı zarf faaliyetlerinin devam etmesini sağlamak için, piyango sistemi işin tepe değerini sıkı bir şekilde kontrol etmelidir. Dağıtım zirvesi, iş tarafı tarafından yetersiz değerlendirmeden kaynaklanan aşırı yüklemeyi önlemek için gerçek zamanlı ayarlamayı destekler.

Böyle bir senaryo düşünüldüğünde, iş tarafının farklı mimarilerinin uygulanmasıyla sınırlı olarak 1 saniyenin en başında tüm talepler iş tarafına taşınırsa, iş tarafının frekans sınırını veya aşırı yük korumasını tetikleyebilir. Bu nedenle, frekans sınırı ayrıntı düzeyini 100 milisaniyeye ayarladık, böylece ödüller 1 saniye içinde nispeten eşit bir şekilde dağıtılacak ve böylece yukarıdaki sorunları çözdük.

3. QQ kırmızı zarf dağıtım sistemi

QQ kırmızı zarf ödülleri iki tür nakit ve hediye çeki içerir.Nakit Tenpay'e bağlanır.Hediye çekleri Tencent'in dahili sanal öğelerine ve üçüncü şahıs hediye çeklerine ayrılır. Son olarak, hediye kullanıcının hesabına (QQ Cüzdan bakiyesi, QQ kart kuponu veya üçüncü taraf sistem hesabı) düşecektir. Piyango sistemi sorunsuz bir şekilde işlenmesine rağmen, uzun vadeli büyük hacimli gönderiler de iş sisteminin en yoğun koşullarda hizmet kabiliyetlerini sağlayamamasına neden olabilir. Yukarıdakilerle sonraki arasında nasıl bağlantı kurulacağı, yalnızca piyango sisteminin sorunsuz bir şekilde teslimat yapmasını ve dağıtım sistemi (kendi) üzerinde baskı oluşturmasını engellemekle kalmaz, aynı zamanda arka uç iş sistemini korur ve hesaba daha hızlı bir şekilde ödülleri güvenli bir şekilde verir, bu da teslimat sistemidir. Tasarım Noktaları. Uygulama sistemi tasarımı aşağıdaki stratejileri izler:

  • Hızlı ve yavaş ayırma

  • Eşzamansız tepe kırpma

  • Esnek kullanım

  • İş sistemlerini koruyun

  • Nihai tutarlılık

Uygulama sistemi mimarisi aşağıdaki şekilde gösterilmektedir:

Hızlı ve yavaş ayırma

Nakit ve hediye çeklerinin arka uç sistemleri tamamen farklıdır.Nakit Tenpay hesabına QQ cüzdan sistemi üzerinden gönderilir ve hesabın gerçek zamanlı gelişinin geciktirilmemesi gerekir. Ve hediye sertifikası yerleştirmenin arka uç işi büyük ölçüde değişir ve hizmet kapasitesi ile performans farklıdır. Hediye çeklerinin yavaş dağıtımının nakitin hızlı dağıtımını etkilemesini önlemek için nakit kanalı ile hediye çeki kanalı birbirine karışmayacak şekilde ayrılmıştır.

Eşzamansız tepe kırpma

Kullanıcının çekilişinin zamanlaması tamamen rastgele olduğundan, piyango sistemi kesinlikle sorunsuz teslimat sağlayamaz. Piyango sisteminin teslimat talebini doğrudan iş sistemine iletmesine izin verilmesi, öngörülemeyen sorunlara yol açacak, bu da ağır durumlarda kabul edilemez bir iş sistemi çığına yol açabilecektir. Ayrıca, oyun hediye paketleri ve Didi kuponları gibi üçüncü taraf hediye sertifikaları bir kullanıcı hesabına sahip olmayabilir (kullanıcının oyunu oynamaması veya kullanıcının üçüncü şahıs hesabı olmaması) ve teslimattan önce kullanıcının bir hesap oluşturması için yönlendirilmesi gerekir. Teslimat sistemi, ödül bilgilerinin geçici olarak saklanmasına ve teslimatı erteleme özelliğine sahip olmalıdır.

Dağıtım sistemi, teslimat taleplerini geçici olarak depolamak için bir asenkron mesaj kuyruğu olarak açık kaynak RocketMQ mesaj ara yazılımını kullanır ve ardından hediye sertifikası teslim modülü, her işletmenin hız limiti yapılandırmasına göre teslimat için iş arayüzünü eşit olarak çağırır.

Esnek kullanım

Hediye çeki ödülleri asenkron olarak kullanıcı hesaplarına dağıtılır.Yılbaşının zirvesinde dağıtım hızı çekilişin hızına yetişemeyebilir ve gelmesi bir süre gecikebilir.Bu gerçeği bilmeyen kullanıcılar için kafa karışıklığına neden olabilir. Bu nedenle, kullanıcının kazanan bilgiler sayfasında, kullanıcının hesabına 24 saat (veya 48 saat) içinde gelmesi istenecektir. Teslimat sürecinin her adımı anormal bir şekilde başarısız olabilir ve teslimatın başarısız olmasına neden olabilir. Bu nedenle, öğe ayrıntı sayfasındaki düğme, teslimatın birden çok başlatılmasını destekler. "Hediye sertifikası teslimi" modülünde, teslimat durumuna göre birden çok kez deneyebilirsiniz. Gönderin ve ödülün yalnızca bir kez verileceğini garanti edin.

İş sistemlerini koruyun

Daha önce belirtildiği gibi, teslimat sistemi, piyango sistemini asenkron bir mesaj kuyruğu yoluyla iş geliştirmeden izole eder.Piyango sel zirvesi, iş sistemini doğrudan etkilemeyecek, ancak iş sistemini izole edecek ve koruyacaktır.

Hediye sertifikası teslim modülü, her işletme için ayrı bir hız sınırı eşiği yapılandırır ve ödülleri, hız sınırı eşiğini aşmayan bir hızda her işletmenin teslimatına kesin olarak dağıtır. İşletmede bir zaman aşımı varsa veya aşırı hız istenirse, belirli bir karşılaştırmaya göre yavaşlayacaktır.

Hediye çeki teslim modülü, önce ödülün doğru ve geçerli olup olmadığını kontrol etmek için depolama sistemine gidecek ve ardından durumun normal olup olmadığını kontrol etmek için teslimat durumu deposuna gidecektir.Sadece teslimat için gerçekten gerekli olan ödüller, teslimatın geçerliliğini sağlamak için iş sistemine bir teslimat talebi başlatacaktır. Yanlış göndermeden ve çoklu göndermeden kaçının.

Nihai tutarlılık

Eşzamansız teslimat nedeniyle, ödüllerin çekiliş anında kullanıcının hesabına verilmesi garanti edilemez. Ancak kullanıcının ödülü kaybedilmeyecektir.Geçici olarak eşzamansız sırada depolayarak, hediye sertifikası teslim modülü ödülü kademeli olarak kullanıcının hesabına uygun bir hızda dağıtacaktır.

Teslimat sürecinde bir gecikme veya başarısızlık varsa, kullanıcı teslimat talebini birden fazla tahsilat yoluyla iletebilir ve sistem birden fazla gönderimi destekler.

Birden fazla gönderi hala başarısız olursa, mutabakat aracı, kullanıcının piyango verilerini ikinci gün boru hattı sisteminden gelen gönderi verileriyle uzlaştıracak ve anormal gönderileri olan kullanıcılara gönderileri yeniden başlatacaktır. Mutabakat hala başarısız olursa, yöneticiye müdahale etmesini hatırlatın.

Mobil Q terminalinin optimizasyon stratejisi

Sıradan kullanıcılar, QQ kırmızı zarfların arka planının ne kadar karmaşık olduğunu umursamazlar Mobil QQ terminallerinde kırmızı zarfları alırken edindikleri deneyimler, kullanıcının QQ kırmızı zarfları değerlendirmesini doğrudan belirler. Kullanıcılar için kırmızı zarfı gördükten sonra sorunsuz bir şekilde tutup kaydırıp çekemeyecekleri en doğrudan deneyim acı noktasıdır.Bu nedenle, daha iyi bir ağ ortamında bile takılı kalmış deneyimi ortadan kaldırmak için gecikmeyi olabildiğince azaltmak gerekir. Deneyim. Bu hedefe ulaşmak için mobil Q terminali aşağıdaki optimizasyon stratejilerini benimsedi:

1. Kaynak önyüklemesi

QQ kırmızı zarflarda kullanılan sayfalar, resimler, JS vb. Gibi seyrek olarak değişen statik kaynaklar, erişim hızını artırmak için çeşitli CDN'lere dağıtılacak ve yalnızca dinamik olarak değişen içerik arka plandan gerçek zamanlı olarak çekilecektir. Bununla birlikte, tüm statik kaynaklar CDN tarafından dağıtılsa bile, gerçek trafik değerlendirilirse, CDN'nin baskısı yine de kesinlikle tepe noktası olamaz. Kırmızı zarf sayfasını aynı anda ziyaret eden kişi sayısı nispeten fazla olduğundan, 830.000 / sn'lik tepe değerine göre bir sayfa 200K'da değerlendirilir ve bu da yaklaşık 158.3G CDN bant genişliği gerektirir ve bu da CDN'ye anlık baskı getirecektir. CDN'nin basıncını azaltmak için QQ kırmızı zarflar, kırmızı zarfla ilgili statik kaynakları önceden mobil QQ terminaline önceden yüklemek için mobil QQ çevrimdışı paket mekanizmasını kullanır ve bu, CDN'nin basıncını büyük ölçüde azaltabilir.

Şu anda mobil QQ çevrimdışı paketleri için iki ön yükleme yöntemi vardır:

  • Statik kaynakları ön yükleme listesine ekleyin ve kullanıcı Mobile Q'da tekrar oturum açtığında ve talep üzerine yüklediğinde çevrimdışı paketin güncellenip güncellenmediğini izleyin (1 günde% 60, 2 günde% 80 kapsama, ön ısıtma hacmi için uygundur).

  • Çevrimdışı paketleri aktif olarak itin ve çevrimdışı paketleri mevcut çevrimiçi kullanıcılara gönderin. (Acil durumlar için uygun, toplamın yaklaşık% 40'ını kaplayan itme 2 saatte tamamlanabilir) Çevrimdışı paket üzerinden ön yükleme yapıldıktan sonra, Yılbaşı Gecesi CDN trafiğinin nispeten istikrarlı olan anormal bir zirvesi yoktu.

2. Önbellek ve gecikme

Aynı anda 259 milyon kullanıcı çevrimiçidir ve bir kullanıcının kaydırmasının en yüksek değeri saniyede 830.000'e kadar çıkmaktadır.Bu kullanıcının tüm işlem istekleri aynı anda arka planda yoğunlaşırsa, arka plan buna dayanabilse bile, gerekli bant genişliği ve ekipman kaynağı maliyetleri astronomiktir. Arka plan sunucusu üzerindeki baskıyı olabildiğince azaltmak için, kullanıcının kaydırma deneyimine göre, kullanıcının her kaydırma işlemi için arka plana bir istek başlatması gerekli değildir.Bu nedenle, mobil QQ, kullanıcının terminaldeki kaydırma işlemini düzenli olarak sayar (1 ~ 3 saniye) Özet verileri eşzamansız olarak arka plan çekilişine gönderin ve ardından piyango sonucunu görüntülemek için mobil QQ terminaline geri gönderin. Bu sadece sorunsuz bir "kaydırma" deneyimi sağlamakla kalmaz, aynı zamanda arka plan üzerindeki baskıyı büyük ölçüde azaltır.Piyango sonuçları da yanlışlıkla üretilir ve kullanıcı deneyimi tamamen zarar görmez.

3. Kademeli zirveler

Grup kullanıcıları.Farklı gruplardaki kullanıcılar için kırmızı zarfları (kurumsal yıldız kırmızı zarflar, AR kırmızı zarflar vb.) Kaydırmanın başlangıç zamanı aynı değildir, ancak bir süre boyunca (1 ~ 5 dakika) kademeli olarak düzenlenmiştir, böylece her bir kırmızı zarf kaydırma turunu kademeli olarak kaydırarak Başlangıç zamanında, kullanıcının bir kaydırma talebinin zirvesini etkili bir şekilde düzeltebilir.

4. Dinamik ayar

Mobil QQ terminali ve arka plan iki izole sistem değil, bir bütündür. Mobil QQ sistemi, eksiksiz bir yük izleme sistemi oluşturmuştur.Arka plan yükü uyarı hattına yükseldiğinde, mobil QQ terminali arka planda aşırı yüklenmeyi ve çığları önlemek için arka plan yük durumuna göre arka plana gönderilen istekleri dinamik olarak azaltabilir.

5. Toplam limit ve temizleme

Kırmızı zarfların ve AR kırmızı zarfların kaydırılması sürecinde, kullanıcının çektiği ödül sayısı bir sınıra ulaştığında (örneğin, 5), kullanıcı artık ödülü kazanamaz. Şu anda, kullanıcının piyango talebi artık arka plana değil, doğrudan terminale gönderilir Kullanıcıya "kazanılmadı, lütfen daha sonra tekrar deneyin" bilgisini verin ve AR kırmızı zarf haritasındaki kırmızı zarf görüntüsünü temizleyin.

Kırmızı zarf yenilik oyun mücadelesi

Bahar Şenliği kırmızı zarf savaşı, kurumsal kırmızı zarflardan hızlıca kayan kırmızı zarflara, kişiselleştirilmiş kırmızı zarflara ve AR kırmızı zarflara evrildi. Oyun yenilenmeye devam ediyor, kullanıcı deneyimi daha iyi ve aktivite seviyesi artıyor. 2017 Bahar Şenliği'nde katılımcı sayısı da 200 milyondan 342 milyona çıktı.

1. Kişiselleştirilmiş kırmızı zarf

QQ kişilik kırmızı zarfı, kırmızı zarfın görünümünde cesur bir girişimdir.Bu işlevle, kullanıcılar, soyadlarını / veya diğer karakterleri (basitleştirilmiş ve geleneksel karakterler arasında otomatik dönüşüm ile) kırmızı zarfın zarfı üzerine kazımak için otoriter kaligrafiyi kullanabilirler. Ayrıca, Yeni Yıl atmosferine sahip yeni yıl kırmızı zarflar, Tencentin IP'si ile yakından entegre QQ ailesi, oyun görüntüleri, çizgi film görüntüleri ve QQ kırmızı zarfların eğlencesini ve beğenisini büyük ölçüde artıran diğer kırmızı çizgi zarflar da sunuyoruz. Kişiselleştirilmiş kırmızı zarf işlevi başlatıldıktan sonra, kırmızı zarf kullanıcılarının% 30'undan fazlası kişiselleştirilmiş kırmızı zarfı kullanmayı tercih etti. 2016 Bahar Şenliği boyunca, toplam 15 milyon kullanıcı bu özelliği kullandı ve kişiselleştirilmiş kırmızı zarf sayısı 2016 Yılbaşı Gecesi'nde 80 milyonu aştı.

Kişiye özel kırmızı zarflar ortak bir temelde olup, kullanıcıların kişiliği göstermek ve sahneye uyum sağlamak için kırmızı zarfların zarflarını değiştirmelerine olanak tanır. Bu nedenle, tasarımın kilit noktası, yalnızca kırmızı zarf gönderme ve kapma deneyimini sürdürmek için değil, aynı zamanda kişiliği ve eğlenceyi de göstermek için kullanıcının çalışmasını sorunsuz hale getirmektir.

Kişiselleştirilmiş kırmızı zarf işleminin yapısı aşağıda gösterilmiştir:

Yukarıdaki şekilde görülebileceği gibi, basitleştirilmiş kırmızı zarf düzenleme süreci kırmızı zarf terminalinden geçer. > Tenpay > Kırmızı zarf arka plan > El QAIO (Sohbet etkileşimli penceresi) - > Kırmızı zarf sayfasının paketini açma (kapma) süreci nispeten uzundur (bazı detaylar göz ardı edilir ve gerçek süreç daha karmaşıktır) Bu adımlar sırasında, kişiselleştirilmiş kırmızı zarfın durumunu belirlemek için her adımda arka plana giderseniz, kırmızı zarf verilmesinin düzgünlüğünü kaçınılmaz olarak etkileyecektir.

Kullanıcıların kırmızı zarf gönderme deneyimini olabildiğince etkilememesi için kişiselleştirilmiş kırmızı zarflar, mimari ve operasyonda çok sayıda ayrıştırma ve esnek tasarım yapmıştır. Önceden kişiselleştirilmiş yazı tipi çizimi, kaynak önyüklemesi, işlev anahtarı ve felaket toleransı esnek işleme vb. Dahil.

Önceden yazı tipi çizimi

Kişiselleştirilmiş kırmızı zarf, tüm basitleştirilmiş ve geleneksel Çince karakterleri destekler ve bazı basitleştirilmiş Çince karakterlerin geleneksel Çince karakterlere dönüştürülmesini destekler. "Kırmızı soyadı zarfı" kullanan kullanıcıların deneyimini iyileştirmek için, yaygın olarak kullanılan 300 soyadı için önceden oluşturulmuş yöntemi kullanıyoruz. Sık kullanılan soyadı resimleri oluştururken ve bunları yerel olarak kaydederken. Diğer çok yaygın soyadlar görüntülendiklerinde sentezlenir ve sentez bir kez yerel olarak kaydedilir ve bir dahaki sefere yerel olarak okunur.

Mobil QQ terminali boştayken yazı tipi dokularını çizer ve arka plan görüntüsünün ve yazı tipi kitaplığının düzenli olarak güncellenmesini destekler Alışılmadık şekilde kullanılan kelimeler için, ilgili kişiselleştirilmiş dokuları oluşturmak için kişiselleştirilmiş yazı tipi motorunu başlatır.

Kullanıcı kırmızı zarfı dağıttığında veya aldığında, kişiselleştirilmiş arka plan ve yazı tipi haritası oluşturulmuş olur ve onu yeniden oluşturmaya gerek kalmaz ve kırmızı zarf sorunsuz ve kayıpsız olarak gönderilir ve alınır.

Kaynak önyüklemesi

Kişiselleştirilmiş kırmızı zarf materyalleri önceden yapılır ve CDN ağına yüklenir.Mobil QQ, materyal dosyalarını CDN'den ücretsiz olduğunda önceden indirir ve zamanında güncellemek için materyal güncellemelerini düzenli olarak kontrol eder.

Fonksiyon anahtarı

Kullanıcı kişiselleştirilmiş kırmızı zarfı, seçilen kişiselleştirilmiş kırmızı zarf harita stilini, kişiselleştirilmiş kırmızı zarfı ve diğer bilgileri etkinleştirip etkinleştirmeyeceğini ayarlasa da, her karar arka plandan çekilirse, arka plan basıncını artırması kaçınılmazdır. Aslında, kullanıcının kişiselleştirilmiş kırmızı zarflar için ayar bilgileri çok fazla değişmedi ve kırmızı zarf alışveriş merkezinin gerçek zamanlı ayar durumuna erişmenin sonucu mobil QQ terminalinde mevcuttur. Bu nedenle, bu kullanıcı durum FLAG'larını Mobile QQ'da oturum açarken saklamayı, arka plandan bir kez çekip Mobile QQ terminaline kaydetmeyi tasarlıyoruz.Kırmızı zarfların verilmesi sürecinde, FLAG bilgileri red envelope mall tarafından belirlenen kişiselleştirilmiş kırmızı zarf işaretleri aracılığıyla downstream hizmetlere aktarılıyor , Mobil QQ yerel yapılandırmasının gerçek zamanlı güncellemesi.

Bu tasarımın birçok avantajı vardır:

  • Kullanıcının kişiselleştirilmiş ayarları artık arka plana bağlı değildir ve kırmızı zarf verme süreci herhangi bir gecikme olmaksızın tamamen yerel olarak yürütülür ve kırmızı zarfların dağıtımını etkilemez.

  • FLAG logosu afet tolerans anahtarı olarak kullanılabilir.Kişiselleştirilmiş kırmızı zarf geçici olarak iptal edilirse veya arka plan başarısız olursa, kişiselleştirilmiş kırmızı zarf işlevi geçici olarak engellenebilir ve kırmızı zarf işlevinin normalde herhangi bir zamanda kullanılabilir olmasını sağlamak için varsayılan kırmızı zarf stiline geri yüklenebilir.

  • FLAG logosu genişlemeyi destekleyebilir.Kırmızı zarf arka planında, ücretli kırmızı zarf stilini (ücretli satın alma), ayrıcalıklı kırmızı zarf stilini (süper kulüp özel gibi) vb. Destekleyebilir ve çeşitli kişiselleştirilmiş kırmızı zarfları genişletmek için kırmızı zarf alışveriş merkezini destekleyebilir.

  • FLAG'ı arka plandan çekmeye ek olarak, iş ayarlamaları BAYRAK değişikliklerine neden olduğunda, kırmızı zarf arka planı FLAG durumunu aktif olarak mobil Q terminaline itebilir, böylece kullanıcılar değişiklikleri zaman içinde algılayabilir ve kullanıcı deneyimini daha da geliştirebilir.

Afet toleransı esnek işleme

Mobil QQ platform işlevi ile karşılaştırıldığında, kişiselleştirilmiş kırmızı zarf sistemi nispeten bağımsızdır ve hızlı bir şekilde çalıştırılır ve güncellenir.Sistemin işlevsel bileşenlerinde daha fazla sorun olabilir.Kişiselleştirilmiş kırmızı zarf işiyle ilgili bir sorun varsa, normal kırmızı zarf dağıtımını veya mobil QQ işlevinin kullanımını etkileyecektir. , QQ'nun itibarı üzerinde büyük bir olumsuz etkisi olacaktır. Sistemde bir dizi felaket kurtarma ve esnek müdahale önlemleri tasarladık.Kişiye özel kırmızı zarf işi anormal olduğunda, hizmetin derecesi düşürülür ve kişiselleştirilmiş kırmızı zarf işlevi en kötü durumda iptal edilir.

  • Esnek önlem 1: Kullanıcı, oturum açarken kişiselleştirilmiş kırmızı zarf BAYRAKINI çekemezse, varsayılan kırmızı zarf stili benimsenir.

  • Esnek ölçü 2: Kırmızı zarf arka planı, kişiselleştirilmiş kimlik doğrulama ayrıntılarını (ücretli olsun, üyelere özel mi, vb.) Kişiselleştirilmiş kırmızı zarf arka planından çektiğinde, çekme anormalse varsayılan kırmızı zarf stili kullanılır.

  • Esnek ölçü üç: Kişiselleştirilmiş kırmızı zarflar Kullanıcı soyadını girer ve ekran metnini belirtir. Hassas karakterlerle karşılaşabilir veya geçici olarak çevrimdışı olması gerekebilir. FLAG logosunu mobil Q'ya yayınlayarak kişiselleştirilmiş kırmızı zarf işlevini geçici olarak iptal edebilir ve varsayılan kırmızı zarf stilini geri yükleyebilirsiniz.

2. AR kırmızı zarf

AR Red Packet, "LBS + AR Skyfall Red Packet" in kısaltmasıdır. Bu yenilikçi oyun, kullanıcılardan oybirliği ile övgü topladı. 257 milyon kez katılan kullanıcılar, toplam 2,05 milyar kırmızı paket ve hediye çeki aldı ve iyi bir ün ve aktif bir çift hasat kazandı.

Önbellek tasarımı

LBS + AR kırmızı zarf ile önceki kırmızı zarflar arasındaki en büyük fark, ek bir coğrafi konum bağlantısının olmasıdır.Ülke genelinde, büyük yapılandırma verileri oluşturmak için etkinliğin görev ödülü verileriyle birleştirilmiş on milyonlarca coğrafi konum vardır ve bu verilerin hızlı ve gerçek zamanlı olarak okunması gerekir. almak. Bu, sistem tasarımı için büyük bir zorluktur.

Konfigürasyon verileri aşağıdaki özelliklere sahiptir:

  • Veri miktarı çok büyüktür (100 milyon) ve veriler yakından ilişkilidir.MySQL veritabanı küme depolamasını kullanıyoruz ve otomatik felaket kurtarma ve yedekleme işlevlerini gerçekleştirmek için bir Web görsel yapılandırma sunma platformu oluşturuyoruz;

  • "Bir kez yapılandırın, her yerde kullanın." Yapılandırma okuma hacmi yazma hacminden çok daha yüksektir. Temel fikir, bir önbellek tasarlamak ve geliştirmek, yazma performansından vazgeçmek ve okuma performansını en uç noktaya kadar optimize etmektir.

Gigabit yapılandırma verileri piyango sistemi tarafından hızlı bir şekilde nasıl alınabilir? İş kullanım senaryoları, konfigürasyon veri boyutu ve MySQL performansı göz önünde bulundurulduğunda, önceden tam bir önbellek oluşturulabilir ve düzenli bir şekilde organize edilebilir.Senkronizasyon modülü, iş süreçleri tarafından doğrudan kullanım için inşa edilen konfigürasyon verilerinin çekiliş sistemine senkronize edilmesinden sorumludur. Konfigürasyon verilerinin bütünlüğünü sağlamak için, tamponun yapısı çift tamponlu bir tasarıma sahiptir ve ancak yapım veya senkronizasyon tamamlandıktan sonra en son konfigürasyona geçecektir.

Harita ve kontrol

LBS tabanlı kırmızı zarf etkinlikleri, coğrafi ilişkili ticari etkileşimlerden ayrılamaz. AR kırmızı zarfta, kullanıcı haritayı açar ve koordinatları arka plana düzenli olarak bildirir.Arkaplanın koordinatlara göre mevcut aktivite görev yerleştirme noktalarını elde etmesi gerekir.Kişisel hayatın kullanıcılara getirilmesini önlemek için olası güvenlik tehlikeleri olan alanları kaldırmak için yerleştirme noktaları önceden güvenlik açısından taranacaktır. Güvenlik sorunları, bu bölüm esas olarak bu yerleştirme noktalarının nasıl yönetileceğini açıklamaktadır.

Harita ızgarası

Tüm iki boyutlu düzlemi koordinatlara göre eşit kenarlı kare ızgaralara bölün ve kullanıcının koordinatlarına göre karşılık gelen ızgara kimliğini elde etmek için basit matematiksel işlemler kullanın Zaman karmaşıklığı O (1) 'dir. Izgara, bir sorgunun en küçük ayrıntı düzeyidir. Her sorgu, merkez olarak kullanıcının etrafındaki 25 ızgarada 5 * 5 görev puanı döndürür.

Dikkat et

Kırmızı zarflar görev boyutunda teslim edilir Her görev bir POI setiyle ilişkilendirilir.Her POI seti birkaç ila milyonlarca POI noktası içerir ve her POI noktası bir boylam ve enlem bilgisine sahiptir.

Noktalama, ızgaradan görev listesine önceden bir eşleme oluşturmaktır. Tüm ızgara verileri, paylaşılan bellekte düzenlenir ve saklanır ve okuma performansını artırmak için ikili arama kullanılır.

Numaralandırma süreci

  • Müşteri enlem ve boylamı bildirir.

  • Merkez ızgara kimliğini enlem ve boylama göre hesaplayın.

  • Merkez ızgara kimliği ve yarıçap yapılandırmasına göre, çevreleyen ızgaraların listesini alın.

  • Yönetim sisteminde bu alandaki tüm POI ve görev bilgilerini alın.

  • Görev durumunu kontrol ettikten sonra istemciye dönün.

  • Edinim Sistemi

    Tahsilat sistemi esas olarak her bir idari bölgenin kırmızı zarf dağıtım durumu verilerini özetlemekten sorumludur ve esas olarak aşağıdaki işlevleri sağlar:

  • Bölge düzeyinde idari bölgeye gerçek zamanlı dönüş kırmızı zarf sayısı;

  • Sorguyu ana mantıktan gerçek zamanlı olarak kabul edin ve ödül dağıtımının durumunu geri getirin;

  • Olay önizlemesine ve parametre yapılandırması gibi yardımcı bilgilere geri dönün.

  • Kırmızı zarflar idari bölgeye göre dağıtıldığından, her bir idari bölge yaklaşık 10 görev koyar ve her görev birden fazla kırmızı zarf türü ile ilişkilendirilir.Bölge düzeyinde kırmızı zarf bakiyesi her sorulduğunda, kırmızı zarf durumu verileri hesaplanacak ve gerçek zamanlı olarak özetlenecek ve yayılacaktır. Paket ek yükü nispeten büyük olacaktır.Bu nedenle, bu sorunu çözmek için hala çift arabellek önbelleği kullanıyoruz.Bir süreç toplanan verilerin önbelleğe yazılmasından sorumludur ve diğer süreçler grubu sorgu hizmetleri sağlar. Ek olarak, istatistiksel verileri olabildiğince gerçek zamanlı yapmak için toplama sıklığı, depolama katmanının basıncına göre uygun şekilde ayarlanabilir.

    Sonuna yaz

    2015 yılından bu yana geçtiğimiz yıllarda yılbaşı gecesi gönderilen ve alınan QQ kırmızı zarfların durumu aşağıdaki tabloda gösterilmektedir.Katılımcı sayısının ve verilen toplam kırmızı zarf sayısının arttığı görülmektedir.

    QQ kırmızı zarf işi karmaşık, çok sayıda işletmeyi ve uzun bir süreci içeren büyük ziyaretler. Projenin başarısı, ilgili kardeş departmanlarının güçlü destek ve yetenek işbirliğinden ayrılamaz.Ürün departmanı, Tenpay, platform departmanı ve SNG pazarlama departmanına özel teşekkürler. , SNG Ticari Reklamcılık Merkezi, Katma Değerli Kanal Bölümü, Sosyal Kullanıcı Deneyimi Tasarımı Bölümü, Grup Pazarlama ve Halkla İlişkiler Bölümü, Katma Değerli Ürün Bölümü, Sosyal ve Etkili Reklamcılık Bölümü, Ağ Kalitesi Bölümü, Anlık İletişim Bölümü, Mimari Platform Bölümü, Sosyal Platform Bölümü, Network Operasyon Departmanı dahil 15 kardeş departmanımızdaki ilgili meslektaşlarımızın katkıları ve büyük desteği.

    yazar hakkında

    2006 yılında Tencent'e katılan Turboxu (Xu Lingfeng) üyelik sisteminin sahne arkasından sorumlu, MIS sistemi, ağ güvenliği, Taotao (Space Talk), WAP müziği, süper Q, üyelik ve açık kaynak bileşenleri ve sanallaştırma ile ilgilenen diğer projeler üzerinde çalıştı, Docker sanallaştırma ve açık kaynak bileşenlerinin uygulamasını ve uygulamasını teşvik etmeye kararlı.

    Haifazhou (Zhou Haifa), 2011 yılında Tencent'e katıldı ve IM temel sisteminin geliştirilmesi ve işletilmesiyle ilgileniyor.PTLogin birleşik oturum açma ve mesaj dolaşım depolama dönüşüm projesine katıldı, QQ Bahar Festivali kırmızı zarf arka uç sistem mimarisi tasarımına arka arkaya üç yıl boyunca katıldı ve sorumlu. Performans sistemi tasarımında uzun yıllara dayanan deneyime sahiptir.

    Bugün önerilen numara

    Ön taraf

    Derinlemesine ve zamanında ön uç bilgileri, ücretsiz ön yüz deneyim paylaşım etkinlikleri ve saf ön uç teknolojisi WeChat grubu, sadece birlikte ön uçun zirvesine çıkmanızı ve katılmanızı bekliyor!

    WeChat Kimliği: frontshow

    Bugünün Tavsiyesi

    Okumak için aşağıdaki resme tıklayın

    Programcı, istediğiniz teknik lider bu mu?

    35 yıl sonra, Yang Guo Xiaolongnv, netizenleri iç çekmek için tekrar bir grup fotoğrafı çekti: Yang Guo yakışıklı ama Xiaolongnv değişti
    önceki
    Başka bir orta uç patlama mı? Meizu 16X vahiy özeti
    Sonraki
    "GFRIEND" "Paylaşım" 190323 Uzun ve kısa burger restoranı flörtleri Galaxy Mind'ın sonunda yediği burger!
    Liu Huan, Yao Beina'nın rüyası için "Şarkıcı" şampiyonunu kazandı ve herkese şarkı söyledi!
    Lin Chiling de şişmanlayacak mı? Beyaz bir elbise içinde şişmanla boğuldu ve yardım için ilk model seçildi.
    Çifte salladı, sallama nasıl çıktı
    Wu Jinyan'ı "The Bells on the Bund" da kovalayan, Zhou Xunun eski erkek arkadaşı, 37 yaşında hala popüler değil.
    Acemi Xiaomi POCO F1 nasıl bir performans sergiliyor? Yabancı medya uygulamalı deneyim getiriyor
    Zhang Jiani diğer eşlerin yokluğunda daha mutlu görünüyor Süper şovda ne hissediyorsunuz?
    "Les Miserables" in BBC versiyonu Fantine'in arka plan hikayesine odaklanıyor, yeni fotoğraflar yeni karakter sahnelerini ortaya çıkarıyor
    Resmi olarak duyurulan iki PS4 üçüncü taraf yetkili profesyonel işleyici
    Henüz bir çocuk doğurmuş olan Cecilia Cheung, oğlunu bir seyahate çıkardı ve iki oğlu ile Nicholas Tse'nin görünüşleri küçükken çok farklıydı.
    "0.5" farkıyla üretim açığı, Nut Pro 2S ve Pro 2 arasındaki fark nedir
    "Büyük Nehir" in öğrencisi Wang Kai'yi kızdırdı gelecekteki karısı mı? Bu CP için mi çocuklar?
    To Top