這周對公司的一個平臺弄的項目進行了從新設計,有些當心得,記錄一下。sql
這是一個短信類的項目,主要流程爲渠道提交計費請求到咱們的系統,咱們的系統再把請求轉發到上一級平臺,上一級平臺接收到請求後經過短信網關發一條短信到用戶手機上,用戶收到短信後回覆指定的指定後就對用戶的手機進行扣費,這中間由於涉及到收費分紅的問題,因此須要對這些流水進行記錄,同時要對下一級渠道進行管理,還須要生成一些報表統計短信的轉化率(真正計費成功的短信與實際發送的短信的比率),統計並控制投訴比率(短信下發後被用戶投訴是要被封停的)等。數據庫
對需求做過度析後,我把這個系統劃分紅了三個相互獨立,能夠分開部署的模塊:收發模塊,管理模塊,定時任務模塊,三個模塊間再創建起互相通信的協議,這三個模塊的職責以下:工具
收發模塊:負責接收渠道提交的請求,並對請求進行一些必要的控制(好比黑名單過濾,有效性判斷,渠道是否被送信等)和處理,而後再把請求轉發給上一級平臺,上一級平臺接收到請求後會提交短信網關發送一條確認收費的短信到用戶手機,用戶回覆指定的指令後,上一級平臺再把確認計費的信息下發到咱們的系統,系統找到對應的請求信息更新計費狀態後再下發給對應的渠道。性能
管理模塊:配置渠道,渠道用戶,計費產品等信息,同時能夠在管理模塊查看統計報表,交易流水等信息。設計
定時任務模塊:由於其中一些報表比較複雜,若是都在查詢時臨時生成sql去統計的話會很慢,並且會影響到數據庫的性能,因此針對一些能夠不用那麼實時的報表,專門經過幾個定時任務來跑出結果後插入或更新到彙總表中。部署
這周我主要對收發模塊進行了設計,設計工具使用了visio,大概設計過程以下:產品
先整理與業務緊密相關的流程,這邊主要是渠道提交請求流程,接收狀態報告流程,使用的是visio中的基本流程圖。io
劃分主要模塊,模塊的設計基於高內聚,低耦合的概念,模塊之間避免相互調用。配置
設計各模塊中主要的類,先從最低層的類開始設計(最低層的類通常都是被其它層調用,不會調用其它層),這其中設計類的具體屬性和方法時會一邊看前面整理的流程圖和模塊圖。定時任務
主要的模塊和類設計完成後就基本能夠開始寫代碼了。