# 關於後端架構設計 關註了大半年的微服務架構,現在感覺有些力不從心。IT行業的技術累積,需要時間和不斷沉澱。 對於服務架構方面設計,這一年心路成長歷程: 支付寶 先看看業內最強的支付寶系統,支付寶的支付系統整體架構設計 京東金融 來自京東支付平臺總體架構設計 京東金融是在網銀線上的基礎上發展起來的 ...
# 關於後端架構設計
關註了大半年的微服務架構,現在感覺有些力不從心。IT行業的技術累積,需要時間和不斷沉澱。
對於服務架構方面設計,這一年心路成長歷程:
支付寶
先看看業內最強的支付寶系統,支付寶的支付系統整體架構設計
京東金融
來自京東支付平臺總體架構設計
京東金融是在網銀線上的基礎上發展起來的。 網銀線上的原班技術人員有不少來自易寶公司,在京東收購之後,又引入了支付寶的人才。因而從架構上受這兩個公司的影響很大。
去哪兒
來自去哪兒公司分享的支付產品架構
支付系統從架構上來說,分為三層;
-
支撐層: 用來支持核心系統的基礎軟體包和基礎設施, 包括運維監控系統、日誌分析系統等。
-
核心層: 支付系統的核心模塊,內部又分為兩個部分: 支付核心模塊以及支付服務模塊。
-
產品層: 通過核心層提供的服務組合起來,對最終用戶、商戶、運營管理人員提供的系統。
支撐系統
支撐系統是一個公司提供給支付系統運行的基礎設施。 主要包括如下子系統:
-
運維監控: 支付系統在下運行過程中不可避免的會受到各種內部和外部的干擾,光纖被挖斷、黑客攻擊、資料庫被誤刪、上線系統中有bug等等,運維人員必須在第一時間內對這些意外事件作出響應,又不能夠一天24小時盯著。這就需要一個運維監控系統來協助完成。
-
日誌分析: 日誌是支付系統統計分析、運維監控的重要依據。公司需要提供基礎設施來支持日誌統一收集和分析。
-
簡訊平臺: 簡訊在支付系統中有重要作用: 身份驗證、安全登錄、找回密碼、以及報警監控,都需要簡訊的支持。
-
安全機制: 安全是支付的生命線。 SSL、證書系統、防刷介面等,都是支付的必要設施。
-
統計報表: 支付數據的可視化展示,是公司進行決策的基礎。
遠程連接管理、分散式計算、消息機制、全文檢索、文件傳輸、數據存儲、機器學習等,都是構建大型系統所必須的基礎軟體,這裡不再一一詳細介紹。
支付核心系統
支付核心系統指用戶執行支付的核心流程,包括:
-
用戶從支付應用啟動支付流程。
-
支付應用根據應用和用戶選擇的支付工具來調用對應的支付產品來執行支付。
-
支付路由根據支付工具、渠道費率、介面穩定性等因素選擇合適的支付渠道來落地支付。
-
支付渠道調用銀行、第三方支付等渠道提供的介面來執行支付操作,最終落地資金轉移。
支付服務系統
支持支付核心系統所提供的功能。服務系統又分為基礎服務系統、資金系統、風控和信用系統。
基礎服務系統提供支撐線上支付系統運行的基礎業務功能:
-
客戶信息管理:包括對用戶、商戶的實名身份、基本信息、協議的管理;
-
卡券管理: 對優惠券、代金券、折扣券的製作、發放、使用流程的管理;
-
支付通道管理: 通道介面、配置參數、費用、限額以及QOS的管理;
-
賬戶和賬務系統: 管理賬戶信息以及交易流水、記賬憑證等。這裡的賬務一般指對接線上系統的賬務,採用單邊賬的記賬方式。 內部賬記錄在會計核算系統中。
-
訂單系統: 一般訂單系統可以獨立於業務系統來實現的。這裡的訂單,主要指支付訂單。
資金系統指圍繞財務會計而產生的後臺資金核實、調度和管理的系統,包括:
-
會計核算: 提供會計科目、內部賬務、試算平衡、日切、流水登記、核算和歸檔的功能。
-
資金管理: 管理公司在各個支付渠道的頭寸,在餘額不足時進行打款。 對第三方支付公司,還需要對備付金進行管理。
-
清算分潤: 對於有分潤需求的業務,還需要提供清分清算、對賬處理和計費分潤功能。
風控系統是支付系統必備的基礎功能,所有的支付行為必須做風險評估並採取對應的措施;信用系統是在風控基礎上發展的高級功能,京東的白條,螞蟻花唄等,都是成功的案例。
支付應用
支撐系統、核心系統和服務系統,在每個公司的架構上應該是大同小異的,都是必不可少的模塊。而支付應用是每個公司根據自己的業務來構建的,各不相同。 總的來說,可以按照使用對象分為針對最終用戶的應用、針對商戶的應用、針對運營人員的運營管理、BI和風控後臺。
# 關於前端和後端的區別
首先前端分為 UI設計,UED用戶體驗設計,前端開發等等,web前端開發用到的諸多技術(JavaScript,JQuery,TypeScript,Vue,Node,ReactNative,AngularJS,CSS3,HTML5,ES6等等)我們簡稱這些為 類庫,像構建項目的腳手架有很多(yeoman,Gulp、webpack等等)
這麼多成熟的技術框架基本取決於你的需求,好用的框架技術有很多,某些技術適合做某個模塊的功能(比如HTMl適合做web頁面設計,JS更能提高HTML的交互邏輯)。一般性來說前端更註重用戶的視覺敏感度,其邏輯也相對於後端更加簡潔清晰明瞭,如果有興趣可以選擇前端開發工作。
後端也就是所謂的網路編程,其原理很簡單(通過前端交互數據來增加業務邏輯),其用到的最為廣泛的(Java,PHP,Go,ASP,.Net,C++)等等,其中Java相對於其他編程語言更適合做後端開發,學習成本較低 思想深奧,有相應成熟的技術體系和成熟的開發團體,PHP屬於腳本語言,經過幾個版本的迭代,現在所占市場份額不亞於Java,不過在大型系統和強大的後端邏輯裡面幾乎很少見,不是在惡意貶低,其開發成本和運營成本遠低於java,最後就是google推出的Go語言,我個人認為go更像java的衍生版,其內在優化了許多,現在也有相應的成熟團隊,開發成本和運營成本也相對較低。C# 和 .Net在2000年左右還是現對於比較火的,包括現在的新浪,騰訊,百度,京東,等等知名的公司前身都是採用這些技術。阿裡巴巴旗下的淘寶,最早採用的PHP,後面慢慢轉向Java,包括前面提到的那些大公司。不過說這麼多,騰訊是最為奇葩的一個,整個平臺運營十幾年,最早的 QQ空間竟然用CGI寫的,比較註重C++ 這種古老的開發語言。不過C相對其他領域的編程語言更適合做底層交互。
說了這麼多,其實java後端現在玩的東西較多,比如Maven,Redis,Echen,Spring等等,此處有機會慢慢分享
## 關於前端學習路線
基礎篇:
【CSS3】 前端必學之路,起CSS3樣式
【HTML5】 只需記住HTML標簽和作用即可
【JavaScript】 作為瀏覽器腳本語言,必學
【JQuery】至今最為流行的開發類庫,必學
JavaScript 設計模式 以下鏈接:http://www.cnblogs.com/chen-jie/p/JavaScript-Composite.html
最近帶前端妹紙,感覺自己在技術鑽研的程度上永遠跟不上,大問題沒有,小問題一堆,關於妹紙的想法有很多,在這裡我就不隱瞞自己啦,或多或少的對妹紙有點傾慕之情,但是我已表露不出太多感情了,那種掏心掏肺的日子相信大家都有,也不會對妹紙太多的期待;只希望我能帶她融入這個圈子,在這個看臉的社會為她增添一點硬實力,期待太多,失望越多,控制好自己的執念;有些時候執念這玩意兒給自己帶來太多痛苦,原因都很簡單 就是希望能得到,但是現實得不到的只能會給自己增添一份傷感和無情。