基於SpringCloud的某支付產品微服務構架拆解
某企業支付產品,處於初級運營階段,為客戶、商戶提供入駐、充值、結算等服務。產品基於SpringCloud體系構建微服務,項目代碼結構圖如下。
代碼管理採用maven,雖然gradle在未來趨勢上表現更強勁。
下面就從技術點技術面來解構下該產品
1、採用mvnw替代單一的mvn命令。mvnw 全名是maven wrapper,它的原理是在maven-wrapper.properties文件中記錄你要使用的maven版本,當用戶執行mvnw clean 命令時,發現當前用戶的maven版本和期望的版本不一致,那麼就下載期望的版本,然後用期望的版本來執行mvn命令,比如剛才的mvn clean。它的應用場景是組織內部不採用mvnw是可行的,但針對開源的一個項目?如何保證你使用的maven的版本和下載源碼的人的maven的版本一致呢,這時候就可採用mvnw。
2、Lnhn演算法,由於產品發行卡片,為便於卡片卡號的識別校驗,採用能用的Lnhn演算法生成卡號。是一種簡單的演算法,此演算法最初是在20世紀60年代由科學家創造,主要用於檢驗銀行卡、信用卡號碼的有效性的演算法。該演算法現已得到了廣泛的應用,在包括信用卡在內的銀行卡號以及不少重要身份識別的證件號。國內僅有極個別卡號發行未遵循Lnhn規則,它不是一種安全的加密,設計它的目的只是防止意外出錯而不是惡意攻擊。
簡單羅列下Lnhn演算法規則:
1、從卡號最後一位數字開始,逆向將奇數位相加。 2、從卡號最後一位數字開始,逆向將偶數位數字,先乘以2(如果乘積為兩位數,則將其減去9),再求和。 3、將奇數位總和加上偶數位總和,結果應該可以被10整除。
(現在你可以校驗下你錢包里的銀行卡號,是不是符合這個規則?)
3、Gogs服務。作為全球最大的同性交友社區Github,運營主體在境外,有時候訪問還是受限制的,你懂的。Microsoft收購了Github後也引發了一部分人出逃,不管是出於服務穩定,還是代碼私密性,搭建自己的git服務還是很有必要的。Gitlab是個選擇,但操作相對比較繁瑣。此產品引入了Gogs,它是用Go語言寫的,能兼容各個系統。能運行於 Windows,MAC,Linux,ARM 等,安裝使用都比較輕量簡便,是一個功能豐富的、私有的Git託管服務。
4、Spring Batch批處理框架,說批處理,Java領域相信不少朋友會採用Quartz來實現,其實我們只是採用了Quartz的調度功能,批處理功能是我們自己實現的,Quartz本身也並無批處理的能力。官網對其有明確的釋義:
Spring Batch provides reusable functions that are essential in processing large volumes of records, including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management. It also provides more advanced technical services and features that will enable extremely high-volume and high performance batch jobs through optimization and partitioning techniques. Simple as well as complex, high-volume batch jobs can leverage the framework in a highly scalable manner to process significant volumes of information.
未完待續......
TAG:歪脖貳點零 |