建個網(wǎng)站多少費用游戲代理推廣渠道
文章目錄
- 2. 項目開發(fā)-開發(fā)方式
- 2.1. 瀑布開發(fā)模型
- 2.2. 敏捷開發(fā)模型
- 2.3. DevOps開發(fā)模型
- 2.4. 區(qū)別
- 自增主鍵策略
- 1、數(shù)據(jù)庫支持主鍵自增
- 自增和uuid方案優(yōu)缺點
2. 項目開發(fā)-開發(fā)方式
由傳統(tǒng)的瀑布開發(fā)模型、敏捷開發(fā)模型,一躍升級到DevOps開發(fā)運維一體化開發(fā)模型。
2.1. 瀑布開發(fā)模型
大而全,流程界限明顯,團隊龐大隔離分工明確,溝通成本大,效率變低。
2.2. 敏捷開發(fā)模型
將龐大的小組分成多個小組,每個小組形成快速迭代,打破部門邊界,以項目模塊為核心組織人員。溝通效率,開發(fā)效率顯著提升。
2.3. DevOps開發(fā)模型
而開發(fā)運維一體化是敏捷開發(fā)的更深入的延續(xù),同時最大特點是基于約定大于配置的思想,利于很多新興的開發(fā)工具,形成一套自動化的體系。利于自動化極大減少了人力成本和溝通時間。所以開發(fā)效率又一次有了質(zhì)的飛躍。
GitLab(Gitee)形成代碼倉庫。Junit實現(xiàn)單元測試。Maven實現(xiàn)一套編譯、測試、打包、發(fā)布、部署的命令集,并按約定形成一套自動執(zhí)行命令的機制。Docker實現(xiàn)一套容器化機制,其效率高過VM虛擬機百倍甚至更高。K8s實現(xiàn)Docker的編排,使其實現(xiàn)分布式、高并發(fā)、高可用集大成的平臺。這些各自領(lǐng)域的精英通過Jinkens的監(jiān)控和調(diào)配,將整個軟件開發(fā)過程實現(xiàn),同時實現(xiàn)閉環(huán)自循環(huán)。
開發(fā)者提交代碼到GitLab上,Jinkens設(shè)置hook鉤子,對代碼進行監(jiān)控,發(fā)現(xiàn)開發(fā)者更新了代碼,就調(diào)用Maven的compile編譯命令,先進行基礎(chǔ)語法的檢查,編譯通過后,調(diào)用Maven test命令,自動調(diào)用開發(fā)者所寫的單元測試類,測試每個類的每個方法,同時可以結(jié)合mock技術(shù)實現(xiàn)供給模擬數(shù)據(jù)。單元測試通過后,繼續(xù)調(diào)用Maven package打包命令,完成項目的發(fā)布。通過Jinkens調(diào)用Dockerfile實現(xiàn)docker的自動化部署和運行。Docker運行后形成web環(huán)境,用戶可以直接訪問網(wǎng)站去執(zhí)行某個服務(wù)??梢钥吹竭@個流程非常復(fù)雜,但功能特別的強大。特別再配合SpringCloud微服務(wù)架構(gòu)后,直接可以升級到大型架構(gòu),輕松支持百萬級、千萬億,甚至億級的超大型并發(fā)項目的實現(xiàn)。
2.4. 區(qū)別
自增主鍵策略
1、數(shù)據(jù)庫支持主鍵自增
不同的數(shù)據(jù)庫實現(xiàn)方式不同,SQL標準沒有定義,都是數(shù)據(jù)庫廠商自己擴展。
例如:mysql 它 auto_increment,自增主鍵,在數(shù)據(jù)庫中對每個表的自增主鍵都會單獨維護一個值。
每插入一條數(shù)據(jù),它的值+1。
它在大型的項目中,或分布式項目中有問題。
1)值范圍可能溢出,out of value
2)自增并發(fā)容易出現(xiàn),產(chǎn)生了相同的值,sqlServer。不適合高并發(fā)。
3)分布式合并統(tǒng)計時,先把表的數(shù)據(jù)合并起來,然后進行統(tǒng)計。
都是按序號自增,兩張表合并時,無法合并。
新的方案:字符串,特點:唯一性(主鍵、合并表)
1)UUID,32位,以16進制來表達
UUID:機器碼(網(wǎng)卡)-唯一性+時間戳(納秒)+順序號(理論上唯一)
SELECT UUID(),LENGTH(UUID())
表達范圍2^32長度,唯一性
自增和uuid方案優(yōu)缺點
1)自增int/long,運算速度快
2)uuid相比太長32位,字符串速度慢
mybatisplus采用新的uuid策略,雪花snowflake算法。