真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Flutter平鋪,flutter基礎

flutter中圖片的使用

Image中三個重要的屬性:

創(chuàng)新互聯(lián)建站是專業(yè)的南靖網(wǎng)站建設公司,南靖接單;提供網(wǎng)站設計、做網(wǎng)站,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行南靖網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

alignment:圖片的對齊方式

fit:圖片的展示方式

repeat:圖片平鋪方式

圓角圖片:第一種方式

圓角圖片:第二種方式

阿里IM技術(shù)分享(六):閑魚億級IM消息系統(tǒng)的離線推送到達率優(yōu)化

本文由阿里閑魚技術(shù)團隊逸昂分享,原題“消息鏈路優(yōu)化之弱感知鏈路優(yōu)化”,有修訂和改動,感謝作者的分享。

閑魚的IM消息系統(tǒng)作為買家與賣家的溝通工具,增進理解、促進信任,對閑魚的商品成交有重要的價值,是提升用戶體驗最關(guān)鍵的環(huán)節(jié)。

然而,隨著業(yè)務體量的快速增長,當前這套消息系統(tǒng)正面臨著諸多急待解決的問題。

以下幾個問題典型最為典型:

1) 在線消息的體驗提升;

2) 離線推送的到達率;

3) 消息玩法與消息底層系統(tǒng)的耦合過強。

經(jīng)過評估,我們認為現(xiàn)階段離線推送的到達率問題最為關(guān)鍵,對用戶體驗影響較大。

本文將要分享的是閑魚IM消息在解決離線推送的到達率方面的技術(shù)實踐,內(nèi)容包括問題分析和技術(shù)優(yōu)化思路等 ,希望能帶給你啟發(fā)。

(本文已同步發(fā)布于: ?)

本文是系列文章的第6篇,總目錄如下:

《 阿里IM技術(shù)分享(一):企業(yè)級IM王者——釘釘在后端架構(gòu)上的過人之處 》

《 阿里IM技術(shù)分享(二):閑魚IM基于Flutter的移動端跨端改造實踐 》

《 阿里IM技術(shù)分享(三):閑魚億級IM消息系統(tǒng)的架構(gòu)演進之路 》

《 阿里IM技術(shù)分享(四):閑魚億級IM消息系統(tǒng)的可靠投遞優(yōu)化實踐 》

《 阿里IM技術(shù)分享(五):閑魚億級IM消息系統(tǒng)的及時性優(yōu)化實踐 》

《 阿里IM技術(shù)分享(六):閑魚億級IM消息系統(tǒng)的離線推送到達率優(yōu)化 》(* 本文)

從數(shù)據(jù)通信鏈接的技術(shù)角度,我們根據(jù)閑魚客戶端是否在線,將整體消息鏈路大致分為強感知鏈路和弱感知鏈路。

強感知鏈路由以下子系統(tǒng)或模塊:

1) 發(fā)送方客戶端;

2) idleapi-message(閑魚的消息網(wǎng)關(guān));

3) heracles(閑魚的消息底層服務);

4) accs(阿里自研的長連接通道);

5) 接收方客戶端組成。

整條鏈路的核心指標在于端到端延遲和消息到達率。

強感知鏈路中的雙方都是在線的,消息到達客戶端就可以保證接收方感知到。強感知鏈路的主要痛點在消息的端到端延遲。

弱感知鏈路與強感知鏈路的主要不同在于: 弱感知鏈路的接收方是離線的,需要依賴離線推送這樣的方式送達。

因此弱感知鏈路的用戶感知度不強,其核心指標在于消息的到達率,而非延遲。

所以當前階段,優(yōu)化弱感知鏈路的重點也就是提升離線消息的到達率。換句話說, 提升離線消息到達率問題,也就是優(yōu)化弱感知鏈路本身 。

下圖一張整個IM消息系統(tǒng)的架構(gòu)圖,感受下整體鏈路:

如上圖所示,各主要組件和子系統(tǒng)分工如下:

1) HSF是一個遠程服務框架,是dubbo的內(nèi)部版本;

2) tair是阿里自研的分布式緩存框架,支持 memcached、Redis、LevelDB 等不同存儲引擎;

3) agoo是阿里的離線推送中臺,負責整合不同廠商的離線推送通道,向集團用戶提供一個統(tǒng)一的離線推送服務;

4) accs是阿里自研的長連接通道,為客戶端、服務端的實時雙向交互提供便利;

5) lindorm是阿里自研的NoSQL產(chǎn)品,與HBase有異曲同工之妙;

6) 域環(huán)是閑魚消息優(yōu)化性能的核心結(jié)構(gòu),用來存儲用戶最新的若干條消息。

強感知鏈路和弱感知鏈路在通道選擇上是不同的:

1) 強感知鏈路使用accs這個在線通道;

2) 弱感知鏈路使用agoo這個離線通道。

通俗了說,弱感知鏈路指的就是離線消息推送系統(tǒng)。

相比較于在線消息和端內(nèi)推送(也就是上面說的強感知鏈路),離線推送難以確保被用戶感知到。

典型的情況包括:

1) 未發(fā)送到用戶設備:即推送未送達用戶設備,這種情況可以從通道的返回分析;

2) 發(fā)送到用戶設備但沒有展示到系統(tǒng)通知欄:閑魚曾遇到通道返回成功,但是用戶未看到推送的案例;

3) 展示到通知欄,并被系統(tǒng)折疊:不同安卓廠商對推送的折疊策略不同,被折疊后,需用戶主動展開才能看到內(nèi)容,觸達效果明顯變差;

4) 展示到通知欄,并被用戶忽略:離線推送的點擊率相比于在線推送更低。

針對“1)未發(fā)送到用戶設備”,原因有:

1) 離線通道的token失效;

2) 參數(shù)錯誤;

3) 用戶關(guān)閉應用通知;

4) 用戶已卸載等。

針對“3)展示到通知欄,并被系統(tǒng)折疊”,原因有:

1) 通知的點擊率;

2) 應用在廠商處的權(quán)重;

3) 推送的數(shù)量等。

針對“4)展示到通知欄,并被用戶忽略”,原因有:

1) 用戶不愿意查看推送;

2) 用戶看到了推送,但是對內(nèi)容不感興趣;

3) 用戶在忙別的事,無暇處理。

總之: 以上這些離線消息推送場景,對于用戶來說感知度不高,我們也便稱之為弱感知鏈路。

我們的弱感知鏈路分為3部分,即:

1) 系統(tǒng);

2) 通道;

3) 用戶。

共包含了Hermes、agoo、廠商、設備、用戶、承接頁這幾個環(huán)節(jié)。具體如下圖所示。

從推送的產(chǎn)生到用戶最終進入APP,共分為如下幾個步驟:

步驟1 :Hermes是閑魚的用戶觸達系統(tǒng),負責人群管理、內(nèi)容管理、時機把控,是整個弱感知鏈路的起點。;

步驟2 :agoo是阿里內(nèi)部承接離線推送的中臺,是閑魚離線推送能力的基礎;

步驟3 :agoo實現(xiàn)離線推送依靠的是廠商的推送通道(如:蘋果的 apns通道 、Google的fcm通道、及 國內(nèi)各廠商的自建通道 。;

步驟4 :通過廠商的通道,推送最終出現(xiàn)在用戶的設備上,這是用戶能感知到推送的前提條件;

步驟5 :如果用戶剛巧看到這條推送,推送的內(nèi)容也很有趣,在用戶的主動點擊下會喚起APP,打開承接頁,進而給用戶展示個性化的商品。

經(jīng)過以上5個步驟,至此弱感知鏈路就完成了使命。

弱感知鏈路的核心問題在于:

1) 推送的消息是否投遞給了用戶;

2) 已投遞到的消息用戶是否有感知。

這對應推送的兩個階段:

1) 推送消息是否已到達設備;

2) 用戶是否查看推送并點擊。

其中: 到達設備這個階段是最基礎的,也是本次優(yōu)化的核心。

我們可以將每一步的消息處理量依次平鋪,展開為一張漏斗圖,從而直觀的查看鏈路的瓶頸。

漏斗圖斜率最大的地方是優(yōu)化的重點,差異小的地方不需要優(yōu)化:

通過分析以上漏斗圖,弱感知鏈路的優(yōu)化重點在三個方面:

1) agoo受理率:是指我們發(fā)送推送請到的數(shù)量到可以通過agoo(阿里承接離線推送的中臺)轉(zhuǎn)發(fā)到廠商通道的數(shù)量之間的漏斗;

2) 廠商受理率:是指agoo中臺受理的量到廠商返回成功的量之間的漏斗;

3) Push點擊率:也就通過以上通道最終已送到到用戶終端的消息,是否最終轉(zhuǎn)化為用戶的主動“點擊”。

有了優(yōu)化方向,我們來看看優(yōu)化手段吧。

跟隨推送的視角,順著鏈路看一下我們是如何進行優(yōu)化的。

用戶的推送,從 Hermes 站點搭乘“班車”,駛向下一站:? agoo 。

這是推送經(jīng)歷的第一站。到站一看,傻眼了,只有不到一半的推送到站下車了。這是咋回事嘞?

這就要先說說 agoo 了,調(diào)用 agoo 有兩種方式:

1) 指定設備和客戶端,agoo直接將推送投遞到相應的設備;

2) 指定用戶和客戶端,agoo根據(jù)內(nèi)部的轉(zhuǎn)換表,找到用戶對應的設備,再進行投遞。

我們的系統(tǒng)不保存用戶的設備信息。因此,是按照用戶來調(diào)用agoo的。

同時: 由于沒有用戶的設備信息,并不知道用戶是 iOS 客戶端還是 Android 客戶端。工程側(cè)不得不向 iOS 和 Android 都發(fā)送一遍推送。雖然保證了到達,但是,一半的調(diào)用都是無效的。

為了解這個問題: 我們使用了agoo的設備信息。將用戶轉(zhuǎn)換設備這一階段提前到了調(diào)用 agoo 之前,先明確用戶對應的設備,再指定設備調(diào)用 agoo,從而避免無效調(diào)用。

agoo調(diào)用方式優(yōu)化后,立刻剔除了無效調(diào)用,agoo受理率有了明顯提升。

至此: 我們總算能對 agoo 受理失敗的真正原因做一個高大上的分析了。

根據(jù)統(tǒng)計: 推送被 agoo 拒絕的主要原因是——用戶關(guān)閉了通知權(quán)限。同時,我們對 agoo 調(diào)用數(shù)據(jù)的進一步分析發(fā)現(xiàn)——有部分用戶找不到對應的設備。 優(yōu)化到此,我們猛然發(fā)現(xiàn)多了兩個問題。

那就繼續(xù)優(yōu)化唄:

1) 通知體驗優(yōu)化,引導打開通知權(quán)限;

2) 與agoo共建設備庫,解決設備轉(zhuǎn)換失敗的問題。

這兩個優(yōu)化方向又是一片新天地,我們擇日再聊。

推送到達 agoo ,分機型搭乘廠商“專列”,駛向下一站:用戶設備。

這是推送經(jīng)歷的第二站。出站查票,發(fā)現(xiàn)竟然超員了。

于是乎: 我們每天有大量推送因為超過廠商設定的限額被攔截。

為什么會這樣呢?

實際上: 提供推送通道的廠商(沒錯, 各手機廠商的自家推送通道良莠不齊 ),為了保證用戶體驗,會對每個應用能夠推送的消息總量進行限制。

對于廠商而言,這個限制會根據(jù)推送的類型和應用的用戶規(guī)模設定——推送主要分為產(chǎn)品類的推送和營銷類的推送。

廠商推送通道對于不同類型消息的限制是:

1) 對于產(chǎn)品類推送,廠商會保證到達;

2) 對于營銷類推送,廠商會進行額度限制;

3) 未標記的推送,默認作為營銷類推送對待。

我們剛好沒有對推送進行標記,因此觸發(fā)了廠商的推送限制。

這對我們的用戶來說,會帶來困擾。閑魚的交易,很依賴買賣家之間的消息互動。這部分消息是需要確保到達的。

同樣: 訂單類的消息、用戶的關(guān)注,也需要保證推送給用戶。

根據(jù)主流廠商的接口協(xié)議,我們將推送的消息分為以下幾類,并進行相應標記:

1) 即時通訊消息;

2) 訂單狀態(tài)變化;

3) 用戶關(guān)注內(nèi)容;

4) 營銷消息這幾類。

同時,在業(yè)務上,我們也進行了推送的治理——將用戶關(guān)注度不高的消息,取消推送,避免打擾。

經(jīng)過這些優(yōu)化,因為超過廠商限額而被攔截的推送實現(xiàn)了清零。

通過優(yōu)化agoo受理率、廠商受理率,我們解決了推送到達量的瓶頸。但即使消息被最終送達,用戶到底點擊了沒有?這才是消息推送的根本意義所在。

于是,在日常的開發(fā)測試過程中,我們發(fā)現(xiàn)了推送的兩個體驗問題:

1) 用戶點擊Push有開屏廣告;

2) 營銷Push也有權(quán)限校驗,更換用戶登陸后無法點擊。

對于開屏廣告功能,我們增加了Push點擊跳過廣告的能力。

針對Push的權(quán)限校驗功能,閑魚根據(jù)場景做了細分:

1) 涉及個人隱私的推送,保持權(quán)限校驗不變;

2) 營銷類的推送,放開權(quán)限校驗。

以上是點擊體驗的優(yōu)化,我們還需要考慮用戶的點擊意愿。

用戶點擊量與推送的曝光量、推送素材的有趣程度相關(guān)。推送的曝光量又和推送的到達量、推送的到達時機有關(guān)。

具體的優(yōu)化手段是:

1) 在推送內(nèi)容上:我們需要優(yōu)化的是推送的時機和相應的素材;

2) 在推送時機上:算法會根據(jù)用戶的偏好和個性化行為數(shù)據(jù),計算每個用戶的個性化推送時間,在用戶空閑的時間推送(避免在不合適的時間打擾用戶,同時也能提升用戶看到推送的可能性)。

3) 在推送素材上:算法會根據(jù)素材的實時點擊反饋,對素材做實時賽馬。只發(fā)用戶感興趣的素材,提高用戶點擊意愿。

通過以上我們的分析和技術(shù)優(yōu)化手段,整體弱推送鏈路鏈路有了不錯的提升,離線消息的到達率相對提升了兩位數(shù)。

本篇主要和大家聊的是只是IM消息系統(tǒng)鏈路中的一環(huán)——弱感知鏈路的優(yōu)化,落地到到具體的業(yè)務也就是離線消息送達率問題。

整體IM消息系統(tǒng),還是一個比較復雜的領域。

我們在消息系統(tǒng)的發(fā)展過程中,面臨著如下問題:

1) 如何進行消息的鏈路追蹤;

2) 如何保證IM消息的快速到達(見《 閑魚億級IM消息系統(tǒng)的及時性優(yōu)化實踐 》);

3) 如何將消息的玩法和底層能力分離;

4) 離線推送中如何通過用戶找到對應的設備。

這些問題,我們在以前的文章中有所分享,以后也會陸續(xù)分享更多,敬請期待。

[1]? Android P正式版即將到來:后臺應用保活、消息推送的真正噩夢

[2]? 一套高可用、易伸縮、高并發(fā)的IM群聊、單聊架構(gòu)方案設計實踐

[3]? 一套億級用戶的IM架構(gòu)技術(shù)干貨(上篇):整體架構(gòu)、服務拆分等

[4]? 一套億級用戶的IM架構(gòu)技術(shù)干貨(下篇):可靠性、有序性、弱網(wǎng)優(yōu)化等

[5]? 從新手到專家:如何設計一套億級消息量的分布式IM系統(tǒng)

[6]? 企業(yè)微信的IM架構(gòu)設計揭秘:消息模型、萬人群、已讀回執(zhí)、消息撤回等

[7]? 融云技術(shù)分享:全面揭秘億級IM消息的可靠投遞機制

[8]? 移動端IM中大規(guī)模群消息的推送如何保證效率、實時性?

[9]? 現(xiàn)代IM系統(tǒng)中聊天消息的同步和存儲方案探討

[10]? 新手入門一篇就夠:從零開發(fā)移動端IM

[11]? 移動端IM開發(fā)者必讀(一):通俗易懂,理解移動網(wǎng)絡的“弱”和“慢”

[12]? 移動端IM開發(fā)者必讀(二):史上最全移動弱網(wǎng)絡優(yōu)化方法總結(jié)

[13]? IM消息送達保證機制實現(xiàn)(一):保證在線實時消息的可靠投遞

[14]? IM消息送達保證機制實現(xiàn)(二):保證離線消息的可靠投遞

[15]? 零基礎IM開發(fā)入門(一):什么是IM系統(tǒng)?

[16]? 零基礎IM開發(fā)入門(二):什么是IM系統(tǒng)的實時性?

[17]? 零基礎IM開發(fā)入門(三):什么是IM系統(tǒng)的可靠性?

[18]? 零基礎IM開發(fā)入門(四):什么是IM系統(tǒng)的消息時序一致性?

(本文已同步發(fā)布于: ?)

前端開發(fā)的學的框架都有什么?

蝸牛學院在這里給大家整理了一份web前端開發(fā)完整的學習路線,框架在第三階段中,希望可以幫到你~

第一階段:專業(yè)核心基礎

階段目標:

1. 熟練掌握HTML5、CSS3、Less、Sass、響應書布局、移動端開發(fā)。

2. 熟練運用HTML+CSS特性完成頁面布局。

4. 熟練應用CSS3技術(shù),動畫、彈性盒模型設計。

5. 熟練完成移動端頁面的設計。

6. 熟練運用所學知識仿制任意Web網(wǎng)站。

7. 能綜合運用所學知識完成網(wǎng)頁設計實戰(zhàn)。

知識點:

1、Web前端開發(fā)環(huán)境,HTML常用標簽,表單元素,Table布局,CSS樣式表,DIV+CSS布局。熟練運用HTML和CSS樣式屬性完成頁面的布局和美化,能夠仿制任意網(wǎng)站的前端頁面實現(xiàn)。

2、CSS3選擇器、偽類、過渡、變換、動畫、字體圖標、彈性盒模型、響應式布局、移動端。熟練運用CSS3來開發(fā)網(wǎng)頁、熟練開發(fā)移動端,整理網(wǎng)頁開發(fā)技巧。

3、預編譯css技術(shù):less、sass基礎知識、以及插件的運用、BootStrap源碼分析。能夠熟練使用 less、sass完成項目開發(fā),深入了解BootStrap。

4、使用HTML、CSS、LESS、SASS等技術(shù)完成網(wǎng)頁項目實戰(zhàn)。通過項目掌握第一階段html、css的內(nèi)容、完成PC端頁面設計和移動端頁面設計。

第二階段:Web后臺技術(shù)

階段目標:

1. 了解JavaScript的發(fā)展歷史、掌握Node環(huán)境搭建及npm使用。

2. 熟練掌握JavaScript的基本數(shù)據(jù)類型和變量的概念。

3. 熟練掌握JavaScript中的運算符使用。

4. 深入理解分之結(jié)構(gòu)語句和循環(huán)語句。

5. 熟練使用數(shù)組來完成各種練習。

6.熟悉es6的語法、熟練掌握JavaScript面向?qū)ο缶幊獭?/p>

7.DOM和BOM實戰(zhàn)練習和H5新特性和協(xié)議的學習。

知識點:

1、軟件開發(fā)流程、算法、變量、數(shù)據(jù)類型、分之語句、循環(huán)語句、數(shù)組和函數(shù)。熟練運用JavaScript的知識完成各種練習。

2、JavaScript面向?qū)ο蠡A、異常處理機制、常見對象api,js的兼容性、ES6新特性。熟練掌握JavaScript面向?qū)ο蟮拈_發(fā)以及掌握es6中的重要內(nèi)容。

3、BOM操作和DOM操作。熟練使用BOM的各種對象、熟練操作DOM的對象。

4、h5相關(guān)api、canvas、ajax、數(shù)據(jù)模擬、touch事件、mockjs。熟練使用所學知識來完成網(wǎng)站項目開發(fā)。

第三階段:數(shù)據(jù)庫和框架實戰(zhàn)

階段目標:

1. 綜合運用Web前端技術(shù)進行頁面布局與美化。

2. 綜合運用Web前端開發(fā)框架進行Web系統(tǒng)開發(fā)。

3. 熟練掌握Mysql、Mongodb數(shù)據(jù)庫的發(fā)開。

4. 熟練掌握vue.js、webpack、elementui等前端框技術(shù)。

5. 熟練運用Node.js開發(fā)后臺應用程序。

6. 對Restful,Ajax,JSON,開發(fā)過程有深入的理解,掌握git的基本技能。

知識點:

1、數(shù)據(jù)庫知識,范式,MySQL配置,命令,建庫建表,數(shù)據(jù)的增刪改查,mongodb數(shù)據(jù)庫。深入理解數(shù)據(jù)庫管理系統(tǒng)通用知識及MySQL數(shù)據(jù)庫的使用與管理,為Node.js后臺開發(fā)打下堅實基礎。

2、模塊系統(tǒng),函數(shù),路由,全局對象,文件系統(tǒng),請求處理,Web模塊,Express框架,MySQL數(shù)據(jù)庫處理,RestfulAPI,文件上傳等。熟練運用Node.js運行環(huán)境和后臺開發(fā)框架完成Web系統(tǒng)的后臺開發(fā)。

3、vue的組件、生命周期、路由、組件、前端工程化、webpack、elementui框架。Vue.js框架的基本使用有清晰的理解,能夠運用Vue.js完成基礎前端開發(fā)、熟練運用Vue.js框架的高級功能完成Web前端開發(fā)和組件開發(fā),對MVVM模式有深刻理解。

4、需求分析,數(shù)據(jù)庫設計,后臺開發(fā),使用vue、node完成pc和移動端整站開發(fā)。于Node.js+Vue.js+Webpack+Mysql+Mongodb+Git,實現(xiàn)整站項目完整功能并上線發(fā)布。

第四階段:移動端和微信實戰(zhàn)

階段目標:

1.熟練掌握React.js框架,熟練使用React.js完成開發(fā)。

2.掌握移動端開發(fā)原理,理解原生開發(fā)和混合開發(fā)。

3.熟練使用react-native和Flutter框架完成移動端開發(fā)。

4.掌握微信小程序以及了解支付寶小程序的開發(fā)。

5.完成大型電商項目開發(fā)。

知識點:

1、React面向組件編程、表單數(shù)據(jù)、組件通信、監(jiān)聽、聲明周期、路由、Redux基本概念。練使用react完成項目開發(fā)、掌握Redux中的異步解決方案Saga。

2、react-native、開發(fā)工具、視圖與渲染、api操作、Flutter環(huán)境搭建、路由、ListView組件、網(wǎng)絡請求、打包。練掌握react-native和Flutter框架,并分別使用react-native和Flutter分別能開發(fā)移動端項目。

3、微信小程序基本介紹、開發(fā)工具、視圖與渲染、api操作、支付寶小程序的入門和api學習。掌握微信小程序開發(fā)了解支付寶小程序。

4、大型購物網(wǎng)站實戰(zhàn),整個項目前后端分離開發(fā);整個項目分為四部分:PC端網(wǎng)頁、移動端APP、小程序、后臺管理。團隊協(xié)作開發(fā),使用git進行版本控制。目期間可以擴展Three.js 、TypeScript。


文章標題:Flutter平鋪,flutter基礎
文章URL:http://weahome.cn/article/dsiehco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部