özel! Alipay uygulaması teknik mimarisinin tam analizi

Yazar hakkında: Alipay uygulamasının baş mimarı Bai Zhao reddetti, 2010 yılında Ant Financial'a katıldı, 10 yıldan fazla İnternet araştırma ve geliştirme deneyimine sahip ve dağıtılmış sistemler, v8 motoru, istemci, ön uç ve diğer alanlar hakkında derin bir anlayışa sahip.

Hafif uygulamalı yakın dövüş anında, küçük programlar devler arasındaki rekabetin odağı haline geldi ve Ali doğal olarak çok da geride değil. Alinin resmi verilerine göre, bu yıl 28 Ocak itibarıyla Alipay uygulama başvurularının sayısı 120.000e ulaştı, toplam kullanıcı sayısı 500 milyonu aştı ve günlük aktif kullanıcı sayısı 230 milyonu aştı. Kullanıcılar uygulamaya Alipay ana sayfasındaki açılır girişten giriyor. Kişi başına günlük ortalama açılış sayısı 4'tür ve bu nedenle Alipay uygulaması "önümüzdeki üç yıl içinde Ant Financial için en önemli stratejilerden biri" olarak biliniyor.

Ancak Alipay tarafından ifşa edilen bilgiler daha çok sıradan kullanıcılar içindir ve geliştiriciler için çok az bilgi vardır.Bu nedenle, InfoQ, Alipay Mini Programının baş mimarı Bai Zhao ile görüştü Alipay Mini Programının teknik mimarisini herkes için açıklamayı reddetti. Ve geliştirme özellikleri, röportajın tüm içeriğidir.

Alipay Mini Programı 2016 yılında başladı ve şimdi neredeyse 3 yıl oldu.Bu 3 yıl boyunca Mini Programın teknik mimarisi de sürekli olarak geliştirilerek geliştirildi.İş geliştirmeyi tatmin ederken, Mini Programın tamamı için de önemlidir. Yüksek kullanılabilirlik, performans optimizasyonu ve çoklu terminal çıkışı açısından birçok çalışma yapıldı. Bugün sizlerle Alipay uygulama teknolojisinde yaptığımız bazı çalışmaları paylaşacağım.

Uygulamanın teknik mimarisi esas olarak dört bölüme ayrılmıştır:

1. Sistem mimarisi, temel olarak herkese mini programın yapısı ve bazı temel teknolojileri hakkında bilgi vermek için;

2. Performans deneyimi, performans deneyiminde yaptığımız birkaç durumdan bahsedin;

3. Geliştirici araçları, geliştiricilerin küçük programları geliştirmelerine ve yönetmelerine nasıl daha iyi yardımcı olunacağı ve çevrimiçi küçük programların kalitesinin nasıl sağlanacağı;

4. İçeride çoklu terminal, Alipay mini program teknolojisini gruba ve dış tüccarlara aktarır, böylece mini programları çalıştırabilirler.

1. Sistem mimarisi

Alipay Mini Programı sıfırdan oluşturulmuş bir ürün değil, Ant Teknoloji Departmanı'nın yıllarca süren teknik çökelmesine dayalı olarak kademeli olarak geliştirilmiş ve Mini Programın iş senaryoları ile birleştirilmiştir.

Yukarıdaki, Alipay uygulama mimarisinin şematik bir diyagramıdır. Üst kısım, Alipay cüzdanı tarafından sağlanan yedi ana sahne girişidir.Geliştiriciler, bu sahne girişlerini kendi iş senaryolarına göre çalıştırabilir ve bu girişlerin trafiğinden tam olarak yararlanabilirler. Ortadaki kutu, uygulamanın temel motorudur.Yukarıda, geliştiricilere sağlanan temel bileşenler ve temel API yetenekleri vardır.Geliştiriciler, kullanıcıların ihtiyaçlarını karşılamak için bu bileşenlere ve API'lere dayalı olarak kendi uygulamalarını geliştirir.

Küçük program ön uç çerçevesi, ana akım ön uç çerçevesi React'in tasarım fikirlerinden yararlanır.Küçük programın uygulama biçiminden, kısa bir programlama modeli sağlar, bir dizi bileşen ve API arabirimi spesifikasyonu tanımlar, öğrenme eşiğini azaltır ve geliştiriciler tarafından hızlı geliştirmeyi kolaylaştırır Applet'ler. Uygulama çerçevesi, uygulamanın yaşam döngüsü yönetimini sağlar Uygulamanın her aşaması, olaylar aracılığıyla uygulamaya enjekte edilir Geliştiriciler, uygulamanın her aşamasında tamamlanması gereken iş mantığını işlemek için bu olayları kullanabilir. Aynı zamanda, sanal DOM, sayfanın her güncellemesini işlemek için çerçeve içinde kullanılır ve bu da sayfanın oluşturma performansını artırır.

Ön uç çerçevesinin altında, küçük program kapsayıcısı, oluşturma motoru ve JavaScript motorunu içeren küçük program yerel motoru bulunur.Bu bölüm, geliştiricilere sistemin temel yetenekleri için bir arabirim sağlamak üzere temel olarak istemcinin yerel yeteneklerini ön uç çerçevesiyle birleştirir. Oluşturma motorunda, Alipay uygulaması yalnızca JavaScript + Web görünümü sağlamakla kalmaz, aynı zamanda JavaScript + Yerel sağlar.Daha yüksek performans gereksinimleri olan sahnelerde, kullanıcılara daha iyi bir deneyim sunmak için Yerel oluşturma modunu seçebilirsiniz.

Diyagramın sol ve sağ tarafları, geliştiricilerin küçük programları daha verimli bir şekilde geliştirmelerine yardımcı olabilecek Ar-Ge desteği ve işletme ve bakım destek hizmetleridir. Çevrimiçi olduktan sonra, geliştiricilerin çevrimiçi küçük programları yönetmelerine ve çalıştırmalarına yardımcı olacak birçok araç da sağlanır. programı.

Çalışma zamanı mimarisi

Uygulama programlama modeli birden çok sayfaya bölünmüştür. Her sayfanın kendi şablonu, CSS ve JS'si vardır. Gerçekten çalışırken, iş mantığının JS kodu bağımsız bir JavaScript motorunda çalışır. Her sayfanın şablonu ve CSS'si Ayrı web görünümlerinde çalışır ve sayfalar navigateTo işleviyle değiştirilir.

Her web görünümündeki sayfalar ile genel JavaScript motorundaki mantık arasındaki etkileşim, mesaj hizmeti üzerinedir. Sayfanın bazı olayları, bu mesaj kanalı aracılığıyla JavaScript motoru çalışma zamanı ortamına geçirilecektir. Çalışma zamanı ortamı, bu olaya yanıt verecek ve bazı API çağrıları yapacak. , İstemci Alipay uygulaması tarafından sağlanan bazı yeteneklere ayarlanabilir.İşlemeden sonra veriler, işlenmek üzere karşılık gelen sayfa oluşturma kabına yeniden gönderilecektir.Veri ve şablon, nihai kullanıcı arayüzünü oluşturmak için birleştirilir.

Tarayıcı çekirdeği

Web'deki uygulamanın oluşturma motoru tarayıcı çekirdeğidir. Uygulamanın temel bileşeni olarak, birçok düşünceden sonra, UC tarafından sağlanan tarayıcı çekirdeğini kullanıyoruz. UC öğrencilerinin tarayıcı çekirdeğinin performansı, kararlılığı ve performansı Uyumluluk konusunda, sistem tarafından sağlanan web görünümünden çok daha iyi olan birçok çalışma yapılmıştır.

  • Kararlılık: Kilitlenme oranı, sistem web görünümünün yalnızca üçte biri ila beşte biridir;
  • Uyumluluk: Çeşitli sistemlerin web görünümünde uyumluluk sorunu yoktur;
  • Performans: Çekirdek başlatma mantığı için, v8 motor codecache derinlemesine optimize edilmiştir, bu da js kod ayrıştırma ve derleme süresini yaklaşık% 40 azaltır;
  • Araçlar: UC çekirdeğinin kararlılığını ve performansını sağlamak için çok sayıda araç sağlar;

Aşağıdaki şekil, UC çekirdeğinin kararlılık garanti sistemini göstermektedir:

Aynı zamanda, UC çekirdeği, bellek için temel olarak birkaç yöne bölünmüş pek çok optimizasyon yaptı:

1. Resim hafızası : Düşük teknolojili makineler için, daha katı görüntü önbelleği kısıtlamaları yapılmıştır.Performans deneyimini sürdürürken, görüntü önbelleğinin kullanımı daha da kısıtlanmıştır; birden çok web görüntülemesi görüntü önbellek havuzunu paylaşır; webp ve apng için tam destek bellek ve boyut tasarrufu sağlar Görüntü formatı.

2. Hafıza oluşturma : Webview görünmez olduğunda, yerel bellek yönetiminin özel bir işlemi yoktur UC çekirdeği, görünmez web görünümünün işleme belleğini serbest bırakır; kaydırma performansının düşmesini ve aşırı bellek kullanımını önlemek için işleme belleğinin makul şekilde ayarlanması ve ayarlanması.

3. JS belleği : V8 bellek gc ile daha makul bir şekilde ilgilenin ve başlatma zamanını etkilemekten kaçınmak için başlangıçta tam gc'nin yürütülmesini geciktirin.

4. Tepe bellek yönetimi : Sistem, bellek sıkışık olduğunda çekirdeği bilgilendirecektir. UC çekirdeği, sistemde bellek azaldığında, aşırı serbest bırakmanın neden olduğu siyah blokların oluşmasını önlemek için kritik olmayan bellek modüllerini serbest bırakabilir; bazı kötü durumlarda, yerelden kaçının Çok düşük bellek durumunda çekirdeğin çökme girişiminin mantığı, çökmek yerine bazı işlevler kullanılamaz.

2. Performans deneyimi

Google'ın istatistikleri, sayfa 3 saniyeden fazla açık kalırsa kullanıcıların% 13'ünün kaybedileceğini ve 6 saniye sonra kullanıcıların% 60'ının kaybedileceğini göstermektedir. Tersine, açılış süresinde her 1 saniyede bir azalma, dönüşüm oranını% 27 artırabilir ve Alipay'in kullanıcılara daha iyi bir kullanıcı deneyimi sağlama çabaları her zaman olmuştur.

Alipay uygulaması sosyal uygulamalardan farklıdır ve düşük frekanslı uygulamalara aittir, bu nedenle küçük programların optimizasyon yöntemi yüksek frekanslı uygulamalardan farklı olacaktır.Yüksek frekanslı uygulamalar uzun süre sistem düzeyinde aktif olduğundan, verimli optimizasyon yöntemleri Ön yüklemedir Uygulama ile ilgili kaynaklar arka planda mümkün olduğu kadar erken yüklenir ve kullanıcı uygulamayı kullandığında uygulama hızlı bir şekilde başlatılabilir.

Düşük frekanslı uygulamalar için soğuk başlatma daha yaygındır, bu nedenle bu durumda, her bir bağlantının performansını teknik açıdan daha fazla optimize ediyoruz ve küçük programların kullanıcı deneyiminde yüksek frekanslı uygulamalar elde edilebilir. Performans optimizasyon çalışmalarımızdan birkaçını paylaşacağız.

Oluşturma ve çalışan arasında etkileşimli optimizasyon

Uygulamanın etkileşimli deneyimini optimize etmek için, mevcut geleneksel yaklaşım, oluşturma katmanını ve woker katmanını iki farklı iş parçacığında yürütmektir, böylece sayfa, işleme sırasında iş mantığının yürütülmesi nedeniyle sıkışmaz, bu da oluşturmayı geliştirir. hız.

Genel yaklaşım, web görünümünde oluşturma kodunu çalıştırmak ve ardından hizmet çalışanını çalıştırmak için ayrı bir iş parçacığı başlatmaktır.Servis çalışanının domu güncellemesi gerektiğinde, olay ve veriler, yürütme için mesaj kanalı aracılığıyla oluşturma iş parçacığına gönderilir. İşletmenin oluşturma katmanına geçirilmesi gerektiğinde, veri miktarı nispeten büyüktür. Nesne büyük ve nesne daha karmaşık olduğunda, etkileşimin performansı zayıf olacaktır, bu nedenle bu durum için optimize edilmiş bir çözüm öneriyoruz.

Bu çözüm, orijinal JS sanal makine örneğini (yani İzole Et) iki bölüme yeniden tasarladı: Global Runtime ve Local Runtime.

  • Global Runtime bölümü, küresel olarak bir örnek olan paylaşılan cihazları ve verileri depolamaktır.
  • Yerel Çalışma Zamanı, paylaşılmayacak olan örneğin kendisiyle ilgili modülleri ve özel verileri depolar.

Uygulamada yapılması gerekenler iki bölümden oluşmaktadır:

1. Hafif js iş parçacığı, küçük program iş mantığının kodunu yürütmek için hizmet çalışanının yerini alır;

2. Çalışan katmanı ile oluşturma katmanı arasında etkileşim kurmanın daha verimli bir yolu.

Bu iki hedef için, mevcut JS sanal makine V8'i yeniden tasarladık ve optimize edilmiş bir izolasyon modeli (Optimize edilmiş izolasyon modeli, OIM) önerdik. OIM'in ana fikri, JS katmanının mantıksal izolasyonunu korurken çok örnekli senaryolarda bellek tasarrufu sağlamak için, iş parçacığı yürütme ortamı ile ilgili olmayan JS sanal makine örneklerinde ve aynı zamanda değişmez veya değişmez JS nesnelerinde veri ve altyapıyı paylaşmaktır. Ve güç tüketimi. Örnekler arasında paylaşılan bazı veriler senkronizasyon ek yükü getirecek olsa da izolasyon modeli altında bu çözüm tarafından paylaşılan veriler, nesneler, kod ve sanal makine altyapısı değişmez veya değişmezdir, bu nedenle rekabet nadiren gerçekleşir.

Yeni izolasyon modelinde, web görünümündeki v8 örneği bir Yerel Çalışma Zamanıdır ve çalışan iş parçacığındaki v8 örneği de bir Yerel Çalışma Zamanıdır.Çalışan katmanı oluşturma katmanıyla etkileşime girdiğinde, setData nesnesi doğrudan Paylaşılan Öbek içinde oluşturulur, bu nedenle oluşturma Katmanın Yerel Çalışma Zamanı, nesneyi doğrudan okuyabilir ve oluşturma katmanının oluşturulması için kullanılır, nesnenin serileştirilmesini ve ağ iletimini azaltır ve başlangıç performansını ve işleme performansını büyük ölçüde iyileştirir.

Ana sayfa çevrimdışı önbellek optimizasyonu

Ana sayfanın yüklenmesi ve oluşturulması, soğuk başlatma için çok kritiktir.Ana sayfa görüntülenmeden önce kullanıcıların bekleme süresini azaltmak için, yükleme sürecini optimize etmek için çevrimdışı önbelleğe alma kullanıyoruz. Normal yükleme mantığı için, kullanıcı uygulama simgesine tıkladıktan sonra başlatma sürecini başlatır, uygulama çevrimdışı paketini indirir ve açar, giriş sayfası index.html'yi bulur ve uygulama sayfasını yüklemeye başlamak için bir parametre olarak tarayıcı çekirdeğine iletir.

Tarayıcı uygulama sayfasını yüklemeye başladığında, ilk olarak üç noktalı yükleme sayfası görünecek ve ardından uygulamanın ön uç çerçevesi yüklenecektir Ön uç çerçevenin yüklenmesi sırasında, işin js mantık kodunu yüklemek için asenkron bir çalışan iş parçacığı başlatılacaktır. Çerçeve, uygulamanın sayfasını yüklemeye devam eder ve kullanıcı için ana sayfayı oluşturur.

Kullanıcıya ana sayfayı mümkün olan en kısa sürede göstermek için, kullanıcı ana sayfayı ilk kez gösterdikten sonra, ana sayfa UI sayfasını kaydedeceğiz.Kullanıcı uygulamayı bir dahaki sefere tekrar açtığında, son kaydetmenin altındaki ana sayfa UI sayfası ilk olarak ve ana sayfa Bunu kullanıcıya gösterin ve ardından ön uç çerçevesini ve iş kodunu arka planda yüklemeye devam edin. Yükleme tamamlandıktan sonra, kullanıcıya dinamik bir ana sayfa göstermek için çevrimdışı önbelleğin ana sayfa kullanıcı arayüzü ile birleştirilecektir.

Çevrimdışı önbelleğe alınmış ana sayfa kullanıcı arayüzü gerçek işletme koduna dönüştürüldüğünden, bu süre yaklaşık 1 saniyedir, dolayısıyla kullanıcı ana sayfayı görüp tepki verdiğinde dinamik ana sayfa birleştirilmiştir ve kullanıcılar için kullanılabilir. Operasyona cevap verin.

Ana sayfa çevrimdışı önbelleğe alma özelliğini uygularken, iki teknik zorlukla karşı karşıyayız:

1. Ana sayfa çevrimdışı önbellek sayfası ne zaman kaydedilir?

Uygulamanın başlatılması, onLaunch'tan itibaren yaşam döngüsü tarafından kontrol edildiğinden > onLoad- > gösteri- > hazır- > Kullanıcı eylemi > Ana sayfa sürecinden çıkıldığında, süreçteki herhangi bir bağlantı nesnel veya öznel nedenlerle kesintiye uğrayabilir, bu da kaydedilen çevrimdışı sayfanın yanlış olmasına neden olabilir ve kullanıcıya başlangıçta yanlış sayfa sunulur.

Bu nedenle, ana sayfada çevrimdışı önbellek oluşturmanın etkisi için, sayfayı kaydetme zamanlaması çok önemlidir.Geliştiricilere yapılandırmak için zamanlama sağlarız.Yapılandırma için iki zaman vardır: oluşturma tamamlanır ve ana sayfadan ayrılmadan önce. Oluşturma tamamlandığında, ana sayfa oluşturulur Kullanıcı herhangi bir işlem yapmadan önce sayfayı çevrimdışı önbelleğe alınmış sayfa olarak kaydeder. Ana sayfadan ayrılmadan önce, kullanıcı ana sayfada bir dizi işlem gerçekleştirdikten sonra, kullanıcının diğer sayfalara atlamadan önce gördüğü sayfanın çevrimdışı önbelleğe alınmış sayfa olarak kaydedildiği anlamına gelir.

Ana sayfadan ayrılmadan önce sayfayı kaydetme problemine yanıt olarak, bir olay kuyruğu tasarladık.Uygulamanın yaşam döngüsü boyunca ana sayfaya değiştirilebilecek olaylar aynı anda yakalanacak ve bir kuyruğa alınacaktır.Asenkron iş parçacığı olayı kuyruktan düzenli olarak alacaktır. , Ve sonra ana sayfayı kaydetme işleminin yürütülmesini erteleyin.Performansı etkileyen tarayıcı çekirdeği sıklıkla kaydedildiği için, bu olaylar birleştirilecek ve işlenecek ve en sonunda doğru şekilde kaydedilen ana sayfa geçerli olacaktır.

2. Ana sayfanın çevrimdışı önbelleğe alınması ve ana sayfayı değiştirirken açılış ekranının dinamik olarak oluşturulması

Açılış ekranı sorununun ortaya çıktığı senaryo, önbelleğe alınmış sayfanın ve gerçek oluşturulmuş sayfanın ayrı olması ve iki bağımsız sayfadır. Önbelleğe alınan sayfa statik bir sayfadır ve gerçek sayfa, js tarafından dinamik olarak oluşturulan bir sayfadır, bu nedenle olağan uygulama şudur: Gerçek sayfa oluşturulduğunda, önbelleğe alınmış sayfa değiştirilir ve bu durumda bir açılış ekranı oluşur.

Bu problemi çözmek için problemi çözmek için sanal dom kullanıyoruz.Önbellek sayfası yüklenirken önbellek sayfası ilk sanal doma yerleştirilir.Gerçek sayfa oluşturulduktan sonra oluşturulan sanal dom, cache sayfasının sanal domaini domine eder ve değişiklikler değiştirilir. İçerik, yama aracılığıyla tarayıcı çekirdeğine aktarılır ve ilgili sayfa oluşturulur, böylece sayfanın yalnızca kısmen değiştirilmiş içeriği güncellenebilir, tüm sayfanın güncellenmesi önlenir ve içeriğin doğruluğu ve gerçek zamanlı olması sağlanır.

Ölçülen veriler, bu optimizasyonun saniyeler içinde uygulamanın soğuk başlatılmasını gerçekleştirebileceğini göstermektedir.

Sanal alan optimizasyonu

Uygulamanın sayfa sunumu, endüstride yaygın olarak kullanılan sanal dom teknolojisini kullanır Bu teknoloji, sayfa güncellendiğinde yalnızca değiştirilen parçaların güncellenmesini sağlayabilir ve bu da güncellemenin verimliliğini artırır. Dezavantajı ise sanal dom'un hesaplamalar sırasında çok fazla cpu tüketen js ile de uygulanması ve yürütme verimliliğinin yüksek olmamasıdır.

JavaScript, statik olarak yazılan C ve Java dillerinden farklı, zayıf dinamik olarak yazılmış bir dildir. Statik olarak yazılan C ve Java dilleriyle karşılaştırıldığında, JS'nin performansı daha kötü olacaktır çünkü tür belirsizliği, JIT optimizasyon derleyicisi tarafından oluşturulan kodun kalitesini sınırlar.

Bu duruma yanıt olarak, sanal domun uygulama yönü olarak WebAssembly seçiyoruz.WebAssembly, web sayfalarındaki yürütülebilir kodun ikili formatını ve ilgili assembly dili formatını tanımlayan yeni bir Web standardıdır. Amacı, yürütme kodunu neredeyse yerel makine kodu kadar hızlı hale getirmektir. Web uygulamasının temel bölümünün performansını hızlandırmak için JavaScript'e ek olarak kullanılır. Bu nedenle, sanal domun çekirdek kodunu yeniden uygulamak için WebAssembly teknolojisini kullanıyoruz. Uygulamanın sayfa görüntülemesi iyileştirildi.

Bu optimizasyonu yaparken, js kodunu WebAssembly'nin zayıf performansıyla köprüleme zorluğuyla karşı karşıyayız çünkü js motoru ve WebAssembly iki bağımsız motordur ve aralarındaki etkileşim js'den js'ye performansından çok daha kötüdür. Bu sorunu çözmek için sektördeki bazı uygulamalara başvuruyoruz, V8 kodunu optimize ediyoruz ve js'yi çözüyoruz < - > WebAssembly zayıf etkileşimli performansa sahip.

Bu optimizasyonu yapmadan önce, js ve WebAssembly arasındaki zayıf etkileşim performansına neyin sebep olduğunu anlamamız gerekiyor. JS ve WebAssembly iki farklı dil türü olduğundan, motorun yürütülmesi sırasında bir dil anahtarıyla karşılaşıldığında bazı "çeviri" çalışmalarının yapılması gerekir. Ve bu çeviri görevlerinin çeşitli durumları dikkate alması ve işleme için özel bir trambolin saplamasına geçmesi gerekir.

Uygulamanın ön uç çerçevesinin uygulama kodu TypeScript tarafından geliştirildiğinden, çerçeve sanal dom WebAssembly işlevini çağırırken belirli parametre türlerini iletebilir ve parametrelerin sırası da sabittir, ancak bu parametre türleri ve parametre sırası Js motoruna ulaştığında kaybolur, bu nedenle bazı ekstra "çeviri" çalışmaları yapılması gerekir, bu da etkileşimin performansını azaltır.

Bizim fikrimiz, bu çevirileri düzene sokmak ve geliştirme düzeyinde çerçeve ve WebAssembly etkileşim kodunun parametre türlerini ve sırasını düzeltmek ve bunların değişmesini önlemek. Aynı zamanda, js motorunun parametre türlerinin ve parametre sırasının girişini desteklemesine, derleme süresi boyunca kodun parametre türlerini ve parametre sırasını kaydetmesine ve çalışma süresi boyunca js kodunu ve tür dosyalarını js motoruna iletmesine izin veriyoruz, böylece js motoru doğrudan tanımlama yapabilir. Fonksiyonun parametre türü, böylece doğrudan parametre dönüştürme çalışmasını gerçekleştirebilir ve ardından genel bir parametre dönüştürme trambolin saplamasına atlamayı önlemek için WebAssembly yöntemini çağırabilirsiniz.

Ölçülen veriler, önceki uygulamaya kıyasla, yeni uygulamanın kod yürütme verimliliğinin% 50 arttığını göstermektedir.

3. Geliştirici araçları

Alipay Mini Programlarının amacı, kullanıcılara yüksek kaliteli hizmetler sunmaktır. Bu hizmetler geliştiricilerimiz tarafından uygulanmaktadır. Dolayısıyla, geliştiricilerin yüksek kaliteli Mini Programlar sağlamasına nasıl yardımcı olunur ve çevrimiçi Mini Programların kalitesinin nasıl sağlanacağı bizimdir. Yapmaya çalıştığım şeyi. Alipay apletleri, geliştirme, hata ayıklama, yayınlama, çalıştırma ve bakıma kadar tüm bağlantı için araçlar sağlar. Bu araçlar, geliştiricilerin yüksek kaliteli uygulamaları daha verimli bir şekilde geliştirmelerine olanak tanıyacak şekilde sürekli olarak iyileştirilmekte ve geliştirilmektedir.

Geliştirici aracı IDE, hem mac hem de Windows platformlarının çalışmasını destekler.Ar-Ge platformuna, veri izleme, günlük toplama ve diğer sistemlere bağlanarak, ayrıca masaüstü istemcisinin kararlılığı için garanti sağlar. Çoklu terminal geliştirme yetenekleri sağlar Genel yetenekleri entegre ederek ve her terminal arasındaki farklılıklara uyarlayarak, geliştiricilerin çoklu terminal hata ayıklama ve kod çalıştırma uygulamalarına yardımcı olur ve tek bir tıklama ile birden fazla terminalde yayınlayabilir.

Yeni geliştiricilerin sunucu satın alma, alan adı satın alma, ortam yapılandırması vb. Gibi bir dizi sorunu içeren eksiksiz bir arka uç uygulamaları kümesi oluşturması çok karmaşıktır. Her sorun, geliştiricinin bir sonraki adıma geçmesini engelleyebilir. Bu amaçla, geliştiricilerin eksiksiz bir arka uç hizmetleri setini hızlı ve verimli bir şekilde oluşturmasını sağlamak için aşağıdaki iki tek noktadan bulut hizmeti çözümünü sunuyoruz:

  • Bulut işlevleri, sunucu satın alma, yapılandırma, yayınlama, çalıştırma ve bakım gibi işlemleri tamamen çözer, böylece geliştiricilerin yalnızca kendi kod mantığının yazılmasına özen göstermesi gerekir ve geliştirme dili, ön uç geliştiriciler için çok kolay olan js'dir. Bulut uygulamalarıyla karşılaştırıldığında, hafif küçük programlar yazmak için daha uygundur, ancak her bulut işlevi yalnızca bağlı küçük programda çağrılabilir.
  • Bulut uygulamaları, sunucu satın alma, yapılandırma ve yayınlama sorunlarını çözer.Bulut işlevleriyle karşılaştırıldığında, bulut uygulamaları daha esnektir ve daha karmaşık arka uç uygulamaları yazmak için uygundur ve bir bulut uygulaması aynı anda çağrılacak birden çok küçük programı destekleyebilir. Kullanıcıların kendi başlarına seçebilecekleri iki arka uç dili, nodeJs ve java sunuyoruz.

Uygulama bulutu test hizmeti, geliştiricilerin uygulama kusurlarını daha kapsamlı bir şekilde tespit etmesine, ürün kalitesini değerlendirmesine ve onay oranını iyileştirmesine yardımcı olabilir. Küçük programlara sahip bulut gerçek makineleri için eksiksiz bir otomatik test çözümleri seti sağlıyoruz, IDE'de bulut test hizmetlerine başvuruyoruz ve yürütmeden sonra otomatik olarak test raporları oluşturuyoruz.

Bulut test hizmeti iki algılama modu sağlar: çoklu enlem testinin gereksinimlerini karşılamak ve performans testi ve optimizasyon önerileri sağlamak için "hızlı algılama" ve "derin algılama" Geliştiriciler, daha iyi bir kullanıcı deneyimi sağlamak için uygulama kodunu optimizasyon önerilerine göre optimize edebilir.

Çevrimiçi denetim

Şu anda Alipay Mini Programının yüz binlerce ekolojik ortağı var.Mini Program ekosisteminin sürekli büyümesiyle birlikte ortak sayısı da keskin bir şekilde artıyor.Ekolojik ortaklar tarafından sağlanan hizmetler nasıl etkin bir şekilde kontrol edilir ve Mini Programın kalitesi nasıl garanti edilir Karşılaştığımız yeni zorluk bu. Bu sorun karşısında, ilgili teknik standartları ve çalışma şartnamelerini formüle ederken, küçük programlar için girişten işletmeye kalite, deneyim, güvenlik, uygunluk ve verimlilik açısından platform tabanlı kalite ve risk yönetimi yetenekleri geliştirdik.

Denetim, geliştiricilerin ekolojik kalitesinin ve risk korumasının önemli bir parçası ve sorunları belirlemenin önemli bir yoludur. Mini programın geliştiricilere sunduğu hizmet senaryoları çok zengin ve karmaşıktır.Bu problem serisini çözmek için bir tanıma motoru kurduk ve Ant ve Alibaba Cloud gibi çoklu temel algılama birimlerinin hizmet yeteneklerini entegre ettik. + Aktif denetim (denetim), yani denetim platformu yeteneği oluşturmak için platform tabanlı yaklaşım.

Platform yapımı sürecinde karşılaştığımız zorluklar şunlardır:

1. Geliştiriciler tarafından sağlanan hizmet senaryoları çok zengin ve karmaşıktır, örneğin: ödeme, sağlık, sigorta, seyahat ve diğer hizmetler ve ürünler çeşitlendirilmiştir;

2. Uygulama, bir dizi ön uç çerçevesi sağlar ve hizmet içeriği, herhangi bir zamanda, hatta binlerce kişiyle bile değişen, sunucu tarafından dinamik olarak sunulur;

3. Gömülü web görünümüne izin verme, Js dinamik yüklemesi, vb. Gibi uygulama teknolojisinin esneklik faktörleri;

4. Mini programlar, milyonlarca uygulama, on milyonlarca sayfa ve büyümesiyle çok büyüktür.

Denetim platformu aşağıdaki özelliklere sahiptir:

  • Kapsamlı işlevler: kullanılabilirlik, içerik uyumu, bilgi sızıntısı, görüntü tanıma ve kaynak tüketimi denetimi;
  • Aktif tespit: aktif erişim, pasif olmayan izleme; kullanıcı keşfinden önce, sorun olabildiğince erken ortaya çıkar;
  • Dinamik oluşturma: dinamik yüklemeyi ve sayfa oluşturmayı destekler;
  • Yüksek frekanslı inceleme: sorunları hızlı bir şekilde bulmak için dakika düzeyinde yüksek frekanslı inceleme;
  • Çoklu garanti mekanizmaları: çift motorlu algılama, akıllı inceleme ve akıllı kurtarma;
  • Çok kanallı ve esnek erken uyarı karar verme: çok kanallı, çok aşamalı erken uyarı, iş emri karar verme, hata birleştirme, otopsi ve diğer eksiksiz iş kapalı döngü yetenekleri;
  • Gerçek zamanlı veri geniş ekran: denetim, hata, erken uyarı ve karar vermenin gerçek zamanlı izlenmesi;
  • Çok boyutlu veri ölçümü: çoklu görünüm ve çoklu bakım veri pazarı;
  • Akıllı ve verimli: erken uyarı ve karar verme bağlantıları, büyük veri + algoritma uygulaması ekleme, daha akıllı ve verimli.

Mini program inceleme platformu, piyasaya sürüldüğünden bu yana,% 94 oranında akıllı bir verimlilik artışı elde ederek ortalama mini program inceleme süresini 70,59 saatten 4,27 saate düşürdü ve sıfır iş yığını elde etti. İş gereksinimlerine göre, farklı frekanslarda denetimler gerçekleştirdik.Şimdiye kadar, appletler için çevrimiçi hizmetlerin kalitesini artıran on binlerce sorunlu uygulama keşfettik ve işledik.

4. Çoklu terminal iç

Alipay uygulamalarının geliştirme sürecinde, grup içindeki BU'ların uygulamalarında uygulamaları çalıştırma, iş senaryolarını genişletme ve kullanıcı etkinliğini artırma konusunda da güçlü talepleri var. Çarkların tekrarlanmasını ve herkesin mini program ekolojisini paylaşmasını önlemek için, mini programın teknoloji yığınını iş ve teknolojiden açmamız, Alipay mini program teknolojisini dışa aktarmamız ve grup içindeki BÜ'ye mini programı çalıştırma yeteneğine sahip olmasına yardımcı olmamız gerekiyor.

Şu anda, Alipay uygulaması yavaş yavaş Ali ekosistemini açıyor. Geliştiriciler bunu tek seferde geliştirebilir ve Alinin başlıca uygulamaları birden çok terminalde çalışır ve uygulama aracılığıyla Ali ekonomisine bağlanır. Uygulamanın harici çıktı teknolojisi temel olarak iki bölümden oluşur; biri, bağlı istemciye entegre edilmesi gereken, uygulama çalışırken SDK'dır, diğeri ise bağlanması gereken uygulama, platform ve uygulamanın iç iletişimidir. Platform açık ve herkes aynı küçük program ekolojisini paylaşıyor.

Mini Program SDK

Uygulamanın SDK çıktısı, temel motor ve yetenek eklentisi olmak üzere iki parçadan oluşur. Temel motor gereklidir ve değiştirilemez. Ön uç çerçevenin ve kabın çekirdek yetenekleri ve işleme sağlayan çekirdek dahil olmak üzere uygulamanın temel yeteneklerini taşır. Uygulamanın çekirdek çalışma zamanını ve temel çekirdek bileşenlerini ve JSAPI'sini sağlar.Ayrıca, eklenti yeteneğinin eklenti konteynerini de sağlar. Eklenti konteyneri iyi bir izolasyona sahiptir ve eklentinin çökmesi nedeniyle konteynerin çökmesine neden olmayacak, böylece uygulamanın çekirdeği sağlanacaktır. Çalışma zamanında kararlılık.

Mini Program Birlikte Çalışabilirliği

Ön uç çerçevesine ve istemcinin çalışma zamanına ek olarak, uygulamanın teknoloji yığını, kullanıcılara ve geliştiricilere daha iyi hizmet sağlamak için geliştiricilerin girişini, uygulamanın yaratılmasını, geliştirilmesini ve başlatılmasının yanı sıra müteakip operasyon ve bakım ve operasyon yönetimini de içerir. Deneyim, uygulamaların birbirleriyle iletişim kurması, uygulamaların teknik çıktısının gerekli bir parçasıdır.

Platform birlikte çalışabilirliği: Geliştiriciler, küçük program geliştirme, hata ayıklama, test etme, yayınlama, çalıştırma ve bakım ve yönetim gibi bir dizi görev dahil olmak üzere bulundukları açık platformda tüm uçlara sunulan küçük programları yönetebilirler.

Ar-Ge platformunun birlikte çalışabilirliği, Alipayin açık platform yeteneklerine, portal erişimi birlikte çalışabilirliği, geliştirici sistem erişimi birlikte çalışabilirliği, denetim yeteneği erişim birlikte çalışabilirliği, mini program geliştirme bağlantı erişimi birlikte çalışabilirliği ve mini program işlem bağlantı erişimi aracılığıyla birleşik geliştirme ve yayınlama süreçlerine dayanmaktadır. Birlikte çalışabilirlik içinde, geliştiricilerin bir kez geliştirme ve birden çok terminale koyma becerisini gerçekleştirmek.

Operasyon yönetimi platformu, birleşik gömme SDK aracılığıyla çok uçlu mini program otomatik gömme yetenekleri sağlar ve standartlaştırılmış davranış, anormallik ve performans veri modelleri çıkarır.Veri analizi platformu aracılığıyla, mini programların her bir uçtaki gerçek zamanlı veri analizi yeteneklerini sağlar ve ayrıca kullanıcı karakteristik analizi sağlar, Sayfa analizi ve kullanıcı tutma analizi, küçük programların verilerin kendi kendine çalışmasını geliştirme ve görselleştirme becerisini destekler. Aynı zamanda, küçük programlar için özel veri toplama noktası yapılandırmalarının geliştirilmesini de destekler ve açık analiz yönetimi, sayfa ziyaretleri gibi standart istatistiklerin dışındaki kişiselleştirilmiş analiz ihtiyaçlarını karşılamak için küçük programlarda kullanıcı davranışının rafine izlenmesini ve analizini destekler.

Araç platformu, geliştiricilere, geliştiricilerin küçük programları daha iyi geliştirmelerine ve test etmelerine yardımcı olmak için birleşik bir geliştirici aracı sağlar.Aynı zamanda, bağlı terminal, geliştirici aracının simülatörünü ve geliştiricilerin dahili olarak yapması için uygun olan karakteristik jsapi arayüzünü genişletebilir. Özel yetenek hata ayıklaması.

Birlikte çalışabilirlik yeteneği: Alipay'in ödeme, üyelik, kart kuponları, kredi ve diğer yetenekler gibi özel yetenekleri jsapi veya eklentileri genişleterek bağlı istemciye aktarılabilir. Benzer şekilde, bağlı terminal kendi özel yeteneklerini de küçük Program ittifakının diğer ucu daha fazla kullanıcıya hizmet ediyor. Temel yetenekler her yönden aynıdır.İstemcinin karakteristik yetenekleri jsapi'yi genişleterek uygulama apisine entegre edilebilir veya eklentiler şeklinde eklenti pazarına yayınlanabilir.Kullanıcılar, yanlardaki farklılıkları korumak için eklentileri kullanırken dinamik olarak indirirler.

Kullanıcıların birlikte çalışabilirliği: Birden çok terminale teslim edilen mini programlar, hesap bağlama gerektirir ve kullanıcıların oturum açması gerekmez, bu da kullanıcılara tutarlı bir kullanıcı deneyimi sağlar. Hesap İletişim SDK, kayıt, oturum açma, yetkilendirme, hesap bağlama yönetimi gibi eksiksiz bir temel işlevler kümesi sağlayarak birden fazla APP arasında hesap iletişiminin işlevini tamamlar ve tüm sürecin güvenliğini ve kontrolünü sağlar. Hesap geçişi sayesinde mini programın hizmet kapsamı sınırı genişletilebilir ve ödeme yeteneği ve X hizmet yeteneği daha fazla müşteri tarafından karşılanabilir, böylece hizmet geçişi uygun olur, çok uçlu haklar açılır ve çok uçlu deneyim bütünleşir.

Uygulamanın içerideki teknoloji yığını sadece Alibaba Group içindeki çıktılar için değil, aynı zamanda harici uygulama satıcıları için de geçerlidir ve uygulama tüccarlarının iş senaryolarını zenginleştirmelerine ve kullanıcılara daha değerli hizmetler sunmalarına yardımcı olur. Alipay Mini Program Alliance'a katılmaya, Mini Program aracılığıyla Ali ekonomisine bağlanmaya ve büyük ve küçük programların ekosistemini birlikte güçlendirmeye hoş geldiniz.

Zhangjiajie: Tianquan Dağı'nda binlerce insan, Tujianın yoksulluğun azaltılmasını kutlamak için "güveç kabı ziyafeti" ni kutlamak için toplandı
önceki
İsrailli bilim adamları "ilk kez" insan dokusuyla 3 boyutlu yazdırılmış insan kalbi
Sonraki
190401 Zhu Zhengting soğuk bir şekilde çalışma moduna başlıyor, Shenzhen'de yaz mevsimi!
Tarihteki en güçlü NLP modeli, halkın öfkesini kışkırtacak açık kaynak değildir! Musk öfkeyle OpenAI'den ayrıldı
Bu akıllı kapı zili yalnızca kapıyı izlemenize yardımcı olmakla kalmaz, aynı zamanda sesli değiştirme interkomunu da destekler
Akıllı ev endüstrisinin 2016 yıl sonu envanteri: "Satın al, satın al, satın al" ana temayı söyle
"Kara Panter" tarih yazdı ve En İyi Film dalında Oscar'a aday gösterilen ilk süper İngiliz filmi oldu
Razer olmayan hayranlardan Razer Phone 2 deneyimi
Mercedes-Benz haklarını koruma kadın otomobil sahibi: Soruna göre değil, makul ve yasal bir hak korumayım
190401 "Gençliğin Çiçek Yolu" Fan Chengcheng dönüşümü şaşırtıyor Aifugeni seyahat anahtar kelimesini özetliyor: mutluluk!
NEOGEO mini başlangıç: duygusal rotaya odaklanan oyun "konsolu"
"Final Fantasy 15" çok sayıda önemli güncellemeyi, PS4 Pro performans iyileştirmelerini başlatmak üzere
Lityum pil haberleri: yeni grafen tabanlı lityum pil teknolojisi atılımları
Kanada'ya "Buz Tsunami" su bastı, yaklaşık 10 metrelik buz duvarı köye koştu
To Top