互聯網項目架構之基於服務的分布式架構


  隨着互聯網電商項目的發展,越來越多的購物平台等都使用SOA分布式來作為系統主要架構。為什么有那么多的電商項目都選擇SOA作為系統架構呢?這肯定是存在一定原因的,因為電商行業的項目它大概存在以下特點:分布式、高並發、高可用、集群、負載均衡、海量數據、系統安全等一系列問題都需要解決,那么我所了解的SOA分布式架構它正好基本能很好的解決這些問題。

  首先我給大家介紹以下電商項目中一些常見的運營模式:

  

  今天我就以近期開發過的一個電商項目為例,來分享一點我所理解的SOA結構開發流程,希望能夠幫到大家,如有不妥,請指正。

一:首先說說項目總體架構的流程

  1、該項目采用SOA分布式架構,在此基礎上我們又實現了面向服務的思想,中間件使用阿里巴巴出品的Dubbo服務治理的核心框架來管理整個系統的服務,並且選擇zookeeper來作為注冊中心;

    2、大家都知道,一個電商項目是無法避免如何處理海量圖片資源的問題,所以這里由使用一款用C語言開發的開源分布式文件系統FastDFS作為圖片服務器,專門用於存儲系統中所有的商品圖片,廣告圖片等資源,並且通過Nginx反向服務器來訪問圖片服務器上的資源;

       3、接着說說商品搜索功能這塊的架構,這里我們將在Linux系統上搭建了solr集群並實現了集群分片,安裝了IKAnalyzer中文分詞器,定義業務域等一系列部署工作,搭建了專門的搜索子系統,使用solr技術實現了商品搜索功能;

  4、商品詳情頁這塊,采用freemarker頁面靜態化技術,將實現了對所有商品能夠生成HTML詳情頁面,當用戶訪問網站搜索商品查看商品詳情數據時,我們這里是動態生成詳情頁,而不是提前設計好,這樣即使稍微慢點,也無所謂;

  5、優化一個電商項目是開發中必不可少的工作,這時經過分析,將采用非關系型數據庫redis作為主角搭建了redis集群,將商城首頁的廣告位數據、頁腳數據和將每天訪問最多的定時廣告數據都存儲在redis集群中,用空間換時間來提升網站數據的展示速度;

  6、互聯網項目不同於傳統項目,對網站的登錄用戶的安全性校驗有非常高的要求,這里采用單點登錄技術,來實現用戶的登錄和注冊功能,這里我沒有參與開發,但是對單點登錄有一定的了解,下面進行分享。

 

二:業務這塊就沒啥可說的,都是電商購物平台,大家可能都有在類似的購物平台上購物的經驗,我們項目的業務主線也是購物流程,至於后台管理系統也就是對各個管理模塊的維護;但是我們又新添加了商城倒計時活動和商品秒殺活動,下面具體來說說這倆個新穎的功能吧。

  1、商城倒計時活動實現大概步驟(可以作為參考):

    (1)、首先確定一個基准時間,可以使用SQL語句從數據庫獲取一個時間SELECT NOW();

    (2)、活動開始的時間是固定的,使用活動開始的時間-基准時間可以計算出一個秒為單位的時間值;

    (3)、然后使用redis數據庫,采用string類型的數據類型來存儲一個key(值為活動開始的時間),一定設置key的過期時間,使用命令"expire key 10"假設有效時間為10秒;

      (4)、展示商城頁面的時候,取出存儲的活動開始時間,使用js倒計時功能;

    (5)、一旦存儲的key失效,則說明活動結束(說明一點,需要在活動的邏輯中,先判斷活動是否已經開始)。

 

  

  2、商城商品的秒殺活動實現的大概步驟(可以作為參考):

    (1)、首先把秒殺活動的商品數量存放到redis中;

    (2)、秒殺活動開始時,使用decr命令對商品數量減1,如果不是負數,則說明搶到禮物;

    (3)、一旦返回的商品數量為0,則說明商品已經售完,活動結束。

 

三:項目部署總結

(項目架構詳解圖)

(網絡拓撲圖)

 

部署總結后期更新!!!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM