幾節說了中小型電商公司,項目詳情頁的優化方案,一般是使用freemark模板生成了html靜態頁面,放到nginx或者tomcat中,但是肯定選擇nginx的并發是tomcat的100倍,通過mq的方式刷新緩存生成新的html靜態頁面。一起看下大型互聯網關于商品詳情的架構。
(一)講解上圖的的詳細信息
這些架構是根據業務多年演變而來的,可不是最終就是這樣的。機器的內存有上限的話,并發量也是有上限的,一臺redis可以存儲100g,你水平擴展100臺其實還是100g,必須 通過分片的方式這樣就是10t的數據存儲空間。
(二)介紹本書
其實之前的幾次關于互聯網的技術方案,都是通過這個書【億級流量網站架構核心技術】里面的內容分享出來的,我加入了自己的思路。通過我的思路引導更容易的理解,如果沒做過互聯網的老鐵,直接看這本書不一定看的懂,很多方面他都是一句話就過了。沒有詳細的解釋里面的業務場景。
PS:通過看的技術文章,在詳細的看看這本書,其實互聯網技術不過如此,自古真情留不住,唯有套路的人心,都是前人總結的解決問題的方案和套路,對于有互聯網經驗這本書還是很不錯的,大大的拓寬技術經驗,光看這本書的目錄估計都被虎的一愣一愣的,其實都不復雜,都是一些經驗,其實在互聯網公司呆過這些都是常用的技術。還是那句話,沒搞過想破腦子就是不會,需要的還是場景。
何盡量減少用戶的流量,減少客戶端與后臺的交互,讓用戶在APP上有比較好的體驗,這些都是在設計商詳系統時候需要面臨的挑戰。
今天來跟大家聊聊商詳,商詳是展示商品詳情信息的一個頁面,整個購物流程比較重要的一個部分,承載著網站的絕大部分流量。為了提高轉化率構成商詳的元素非常豐富,有大量的圖片、部分商品還有視頻介紹、有相對靜態的商詳模板,有實時變化的價格、促銷、庫存。
下面我們先來看下商詳上一共有哪些元素組成?
可以看到商詳上的元素非常多,總結下來分為這么幾個維度:商品維度(標題、主圖、規格參數、商品文描)、分類維度、商家維度、店鋪維度。另外還有一些實時性比較高的:價格、實時促銷、配送地址、庫存、廣告等。
主要面臨的挑戰有:
針對商詳可以有幾種不同的實現方式,用戶看到的是同一個商詳頁,但背后實現的方式卻多種多樣,下面給大家介紹幾種常見的實現。
整個網站放在一臺機器上,通過幾條SQL分別拿到商詳需要展示的各種信息,聚合成一個大的接口吐出給前端展示。
優點:邏輯簡單。靈活性較好,可以快速響應頁面變更需求。
缺點:性能比較差,沒有擴展性。
在第一版的基礎上增加各種維度的緩存。可以將主圖、商詳的HTML模板放到CDN上,每個商品的聚合信息可以放到cache中,不需要每次請求都通過DB獲取商品數據。
優點:可以一定程度上提高性能。
缺點:需要解決緩存與DB的數據一致性問題,單純增加緩存面臨數據實時性不高,底層數據已經修改,緩存中還不是最新數據。若任何底層數據變更實時更新緩存則修改工作量較大。另外仍然沒有解決擴展性問題。當請求量過大,或者商品數據過多將導致性能變差。
按照領域進行切分,不同業務領域獨立實現分別部署,將商詳依賴的底層業務領域分別拆分出來。例如,商品、庫存、促銷、地址等分別進行服務化。每個子領域的服務自己保證各自的性能。
優點:具有很好的靈活性。當有業務需求變化的時候,每個子領域內部自行修改,對外部提供的接口協議不變,對外部無感知。并且具有良好的擴展性,當請求量或者數據量比較大的時候,每個子領域都可以分別進行橫向擴展。
缺點:開發難度變大,由于按照領域進行服務劃分,往往原來一行SQL可以搞定的事情。現在要涉及到多個領域一起配合來修改,需要協商接口協議,各個領域內部仍有不少開發量。
下面我們來說幾個基本的概念,上面提到的服務到底是什么?
服務:自己自足的、無狀態的業務功能,通過定義良好的標準接口,它接受一個或多個請求,返回一個或多個應答。
接口和契約(技術層面)
上面介紹了分布式服務化的方式來實現商詳的技術架構,那么這樣是不是就完美了?在實際情況下即使這種架構還是有很多不可控的因素會影響整個商詳的性能。最重要的一個就是對外部服務的依賴。如果外部服務出現抖動那么整個商詳頁也會隨之出現不穩定。尤其商詳是個比較大的聚合服務,底層依賴的服務比較多,任何一個出問題都會受到影響,那么商詳出錯的概率就會比較大。如何解決這個問題呢?
一種方案是要求所有底層服務各自保證自己的穩定性,這需要有比較完善的監控體系,能夠快速找到出問題的點,然后進行修正。這種方案屬于比較理想狀態,對外部有強依賴。這需要有一個比較靠譜的團隊,團隊中每個人負責的領域穩定性、健壯性都比較高,那么這種方式是比較好的,領域的劃分比較清晰,各自的職責也比較清晰。大家各自把自己的領域做好,那么整個網站的效率都比較高。
這對整個團隊要求比較高,這種團隊是存在的,但是當公司業務發展比較快,團隊人數增長也比較快的時候,這時候團隊的質量就比較難保證了,就會出現某一個領域或者某幾個領域質量不是很高,就會導致整個服務調用鏈都不穩定,對整體網站影響較大。那么出現這種問題時如何解決呢?
對外部不信任的原則是服務自我保護最重要的方式,盡量降低外部服務出問題時對本服務的影響。對于一個寫服務來說,一定要校驗外部服務調用的所有參數是否合法,對每一個調用方分配場景ID記錄調用來源,并且自己要做冪等去重處理。設計系統時首先想到對于這個外部調用一旦失敗該如何處理?是否有相應的降級策略?對于不同調用失敗的場景一定要清晰記錄錯誤信息方便后面調試跟蹤解決問題。
數據閉環即數據的自我管理,或者說是數據都在自己系統里維護,不依賴于任何其他系統,去依賴化;這樣得到的好處就是別人抖動跟我沒關系。
下面是一種相對比較簡單的維度的劃分:
當底層系統出現問題時候要能夠做到通過開關的配置屏蔽底層系統的波動對商詳的影響,例如當底層的庫存系統出現問題時可以通過開關進行配置商詳屏蔽調用庫存接口,默認所有商品有庫存,這樣庫存數量可能不是最準確的,但至少可以保證用戶正常瀏覽商詳頁不至于由于底層系統的波動導致整個商詳頁面打不開。在系統設計時候要盡可能的多預留降級開關,能降級的地方都要做好降級的準備,只有這樣才能保證商詳的高可用。
異步并發
假設一個讀服務是需要如下數據:
那么如果串行獲取那么需要:60ms;
而如果數據C依賴數據A和數據B、數據D誰也不依賴、數據E依賴數據C;那么我們可以這樣子來獲取數據:
那么如果并發化獲取那么需要:30ms;能提升一倍的性能。
假設數據E還依賴數據F(5ms),而數據F是在數據E服務中獲取的,此時就可以考慮在此服務中在取數據A/B/D時預取數據F,那么整體性能就變為了:25ms。
上面我們聊了聊關于商詳的部分技術實現方案,下期將跟大家聊聊電商的搶購系統的哪些事兒,敬請期待!
本文由 @Nicole 原創發布于人人都是產品經理。未經許可,禁止轉載。
么是詳情頁?簡單來說,它是商品圖片和商品文案按照一定規律進行排版后可以展示給目標用戶的視覺“產品”。
在服飾詳情頁中,圖片和文字是基礎,前者大多在商品屬性、尺碼信息、設計理念模塊發揮必要的介紹作用,同時也作為模塊分割、圖片強調的元素出現。同時,好的排版能起到畫龍點睛的作用。
那么,一款高轉化服裝詳情頁究竟該如何設計呢?一般來說,需要設計以下7大模塊。
優化區域:包含亮點展示、版型特點、面料工藝和潮流趨勢等;商品信息:包含基本信息、指數信息、尺碼表、尺碼推薦表和試穿報告等;搭銷模塊:酌情使用場景化搭銷、關聯搭銷和同類款推薦銷售可提升連單率及流量利用效率。 此外,還有海報區域、模特展示、平鋪展示、細節展示。
以上模塊排布順序需要根據目標客戶、商品風格和店鋪定位綜合確定,這里不再贅述。需要注意的是,單一模塊的設計排版也有很多學問,下面展示一組模塊優化前后的視覺對比分析:
優化點:
1、色調選用符合店鋪風格;
2、字體及用色使海報更為亮眼 ;
3、整合精簡海報文案及修飾布局 。
優化點:
1、整體用色更加大膽,風格鮮明,修飾素材更豐富;
2、版面排布樣式合理,貼合PC端及手機端共用版面設計排布(模特信息可1-2個靈活展示)。
優化點:
1、模特圖背景 需右側擴邊才可滿足展示樣式,制版時有擴邊功能,但只可四周同時擴邊(純色與復雜背景擴邊也不同);
2、調整后左側模特圖可展示正常比例,無需擴邊。
優化點:
1、整體視覺排布更直觀;
2、素材圖選取更加精美;
3、文案關鍵字排布合理,突出面料特性 。
優化點:模特位置需靠左側些,預留出搭配圖展示的空間。 搭配圖框用豎構圖更為合適。(平鋪圖與畫框之間上下空間比較狹窄,故畫框適合用豎構圖) 兩款搭配圖位置需放置在右下角,右下角空間比較空余,不易遮擋模特身體。深繪美工機器人如何保證詳情頁的高轉化率?
模板邏輯:圖文架構、模塊邏輯清晰有序;
模板尺寸:確保頁面寬度和詳情切片高度達到最佳使用尺寸;
圖片選用:對素材圖類型做了規范,契合模板套用;
字體選擇:選用的字體貼合品牌風格,同時規范了字體的大小、間距、行距及HTML區的使用;
色彩搭配:各元素用色貼合季節、類目屬性及品牌風格;
內容排版:把握各元素的對齊及區塊之間的節奏感,規范圖文排版的組合、重復與循環;
終端兼容:保證PC端、無線端等多終端共用的良好體驗;
搭配銷售:根據用戶的素材條件,酌情使用場景化搭銷、關聯搭銷和同類款推薦銷售區域。
以上規范和屬性均在高轉化模板中體現:
如何用美工機器人中小商家版做一款高轉化服裝詳情頁(支持免費試用)?核心流程有四步:
1、免費領取適合自己店鋪和商品定位的高轉化模板(1100多款模板可選);
2、填寫詳情頁和上貨必需的字段,并上傳商品圖片包;
3、系統自動分析裁剪歸類圖片并排版詳情頁(電腦端和手機端同步);
4、系統自動上貨(支持三種上貨狀態的選擇)或者導出詳情頁切片。
整個過程僅需要10分鐘左右,如果批量制作詳情頁并自動上貨,平均用時僅需3-5分鐘。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。