第一個(gè):Beego框架
目前累計(jì)服務(wù)客戶1000多家,積累了豐富的產(chǎn)品開(kāi)發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹(shù)立企業(yè)形象,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺(jué)傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
Beego框架是astaxie的GOWeb開(kāi)發(fā)的開(kāi)源框架。Beego框架最大的特點(diǎn)是由八個(gè)大的基礎(chǔ)模塊組成,八大基礎(chǔ)模塊的特點(diǎn)是可以根據(jù)自己的需要進(jìn)行引入,模塊相互獨(dú)立,模塊之間耦合性低。
相應(yīng)的Beego的缺點(diǎn)就是全部使用時(shí)比較臃腫,通過(guò)bee工具來(lái)構(gòu)建項(xiàng)目時(shí),直接生成項(xiàng)目目錄和耦合關(guān)系,從而會(huì)導(dǎo)致在項(xiàng)目開(kāi)發(fā)過(guò)程中受制性較大。
第二個(gè):Gin框架
Gin是一個(gè)GOlang的微框架,封裝比較優(yōu)雅,API友好,源碼注釋比較明確,已經(jīng)發(fā)布了1.0版本;具有快速靈活、容錯(cuò)方便等特點(diǎn),其實(shí)對(duì)于golang而言,web框架的依賴遠(yuǎn)比Python、Java更小。
目前在很多使用golang的中小型公司中進(jìn)行業(yè)務(wù)開(kāi)發(fā),使用Gin框架的很多,大家如果想使用golang進(jìn)行熟練Web開(kāi)發(fā),可以多關(guān)注一下這個(gè)框架。
第三個(gè):Iris框架
Iris框架在其官方網(wǎng)站上被描述為GO開(kāi)發(fā)中最快的Web框架,并給出了多框架和多語(yǔ)言之前的性能對(duì)比。目前在github上,Iris框架已經(jīng)收獲了14433個(gè)star和1493個(gè)fork,可見(jiàn)是非常受歡迎的。
在實(shí)際開(kāi)發(fā)中,Iris框架與Gin框架的學(xué)習(xí)曲線幾乎相同,所以掌握了Gin就可以輕松掌握Iris框架。
第四個(gè):Echo框架
也是golang的微型Web框架,其具備快速HTTP路由器、支持?jǐn)U展中間件,同時(shí)還支持靜態(tài)文件服務(wù)、Websocket以及支持制定綁定函數(shù),制定相應(yīng)渲染函數(shù),并允許使用任意的HTML模版引擎。
TiDB 是 PingCAP 自主研發(fā)的開(kāi)源分布式關(guān)系型數(shù)據(jù)庫(kù),具備商業(yè)級(jí)數(shù)據(jù)庫(kù)的數(shù)據(jù)可靠性,可用性,安全性等特性,支持在線彈性水平擴(kuò)展,兼容 MySQL 協(xié)議及生態(tài),創(chuàng)新性實(shí)現(xiàn) OLTP 及 OLAP 融合。
TiDB 3.0 版本顯著提升了大規(guī)模集群的穩(wěn)定性,集群支持 150+ 存儲(chǔ)節(jié)點(diǎn),300+TB 存儲(chǔ)容量長(zhǎng)期穩(wěn)定運(yùn)行。易用性方面引入大量降低用戶運(yùn)維成本的優(yōu)化,包括引入 Information_Schema 中的多個(gè)實(shí)用系統(tǒng)視圖、EXPLAIN ANALYZE、SQL Trace 等。在性能方面,特別是 OLTP 性能方面,3.0 比 2.1 也有大幅提升,其中 TPC-C 性能提升約 4.5 倍,Sysbench 性能提升約 1.5 倍,OLAP 方面,TPC-H 50G Q15 因?qū)崿F(xiàn) View 可以執(zhí)行,至此 TPC-H 22 個(gè) Query 均可正常運(yùn)行。新功能方面增加了窗口函數(shù)、視圖(實(shí)驗(yàn)特性)、分區(qū)表、插件系統(tǒng)、悲觀鎖(實(shí)驗(yàn)特性)。
截止本文發(fā)稿時(shí) TiDB 已在 500+ 用戶的生產(chǎn)環(huán)境中長(zhǎng)期穩(wěn)定運(yùn)行,涵蓋金融、保險(xiǎn)、制造,互聯(lián)網(wǎng), 游戲 等領(lǐng)域,涉及交易、數(shù)據(jù)中臺(tái)、 歷史 庫(kù)等多個(gè)業(yè)務(wù)場(chǎng)景。不同業(yè)務(wù)場(chǎng)景對(duì)關(guān)系型數(shù)據(jù)庫(kù)的訴求可用 “百花齊放”來(lái)形容,但對(duì)關(guān)系數(shù)據(jù)庫(kù)最根本的訴求未發(fā)生任何變化,如數(shù)據(jù)可靠性,系統(tǒng)穩(wěn)定性,可擴(kuò)展性,安全性,易用性等。請(qǐng)跟隨我們的腳步梳理 TiDB 3.0 有什么樣的驚喜。
3.0 與 2.1 版本相比,顯著提升了大規(guī)模集群的穩(wěn)定性,支持單集群 150+ 存儲(chǔ)節(jié)點(diǎn),300+TB 存儲(chǔ)容量長(zhǎng)期穩(wěn)定運(yùn)行,主要的優(yōu)化點(diǎn)如下:
1. 優(yōu)化 Raft 副本之間的心跳機(jī)制,按照 Region 的活躍程度調(diào)整心跳頻率,減小冷數(shù)據(jù)對(duì)集群的負(fù)擔(dān)。
2. 熱點(diǎn)調(diào)度策略支持更多參數(shù)配置,采用更高優(yōu)先級(jí),并提升熱點(diǎn)調(diào)度的準(zhǔn)確性。
3. 優(yōu)化 PD 調(diào)度流程,提供調(diào)度限流機(jī)制,提升系統(tǒng)穩(wěn)定性。
4. 新增分布式 GC 功能,提升 GC 的性能,降低大集群 GC 時(shí)間,提升系統(tǒng)穩(wěn)定性。
眾所周知,數(shù)據(jù)庫(kù)查詢計(jì)劃的穩(wěn)定性對(duì)業(yè)務(wù)至關(guān)重要,TiDB 3.0 版本采用多種優(yōu)化手段提升查詢計(jì)劃的穩(wěn)定性,如下:
1. 新增 Fast Analyze 功能,提升收集統(tǒng)計(jì)信息的速度,降低集群資源的消耗及對(duì)業(yè)務(wù)的影響。
2. 新增 Incremental Analyze 功能,提升收集單調(diào)遞增的索引統(tǒng)計(jì)信息的速度,降低集群資源的消耗及對(duì)業(yè)務(wù)的影響。
3. 在 CM-Sketch 中新增 TopN 的統(tǒng)計(jì)信息,緩解 CM-Sketch 哈希沖突導(dǎo)致估算偏大,提升代價(jià)估算的準(zhǔn)確性,提升查詢計(jì)劃的穩(wěn)定性。
4. 引入 Skyline Pruning 框架,利用規(guī)則防止查詢計(jì)劃過(guò)度依賴統(tǒng)計(jì)信息,緩解因統(tǒng)計(jì)信息滯后導(dǎo)致選擇的查詢計(jì)劃不是最優(yōu)的情況,提升查詢計(jì)劃的穩(wěn)定性。
5. 新增 SQL Plan Management 功能,支持在查詢計(jì)劃不準(zhǔn)確時(shí)手動(dòng)綁定查詢計(jì)劃,提升查詢計(jì)劃的穩(wěn)定性。
1. OLTP
3.0 與 2.1 版本相比 Sysbench 的 Point Select,Update Index,Update Non-Index 均提升約 1.5 倍,TPC-C 性能提升約 4.5 倍。主要的優(yōu)化點(diǎn)如下:
1. TiDB 持續(xù)優(yōu)化 SQL 執(zhí)行器,包括:優(yōu)化 NOT EXISTS 子查詢轉(zhuǎn)化為 Anti Semi Join,優(yōu)化多表 Join 時(shí) Join 順序選擇等。
2. 優(yōu)化 Index Join 邏輯,擴(kuò)大 Index Join 算子的適用場(chǎng)景并提升代價(jià)估算的準(zhǔn)確性。
3. TiKV 批量接收和發(fā)送消息功能,提升寫(xiě)入密集的場(chǎng)景的 TPS 約 7%,讀密集的場(chǎng)景提升約 30%。
4. TiKV 優(yōu)化內(nèi)存管理,減少 Iterator Key Bound Option 的內(nèi)存分配和拷貝,多個(gè) Column Families 共享 block cache 提升 cache 命中率等手段大幅提升性能。
5. 引入 Titan 存儲(chǔ)引擎插件,提升 Value 值超過(guò) 1KB 時(shí)性能,緩解 RocksDB 寫(xiě)放大問(wèn)題,減少磁盤(pán) IO 的占用。
6. TiKV 新增多線程 Raftstore 和 Apply 功能,提升單節(jié)點(diǎn)內(nèi)可擴(kuò)展性,進(jìn)而提升單節(jié)點(diǎn)內(nèi)并發(fā)處理能力和資源利用率,降低延時(shí),大幅提升集群寫(xiě)入能力。
TiDB Lightning 性能與 2019 年年初相比提升 3 倍,從 100GB/h 提升到 300GB/h,即 28MB/s 提升到 85MB/s,優(yōu)化點(diǎn),如下:
1. 提升 SQL 轉(zhuǎn)化成 KV Pairs 的性能,減少不必要的開(kāi)銷(xiāo)。
2. 提升單表導(dǎo)入性能,單表支持批量導(dǎo)入。
3. 提升 TiKV-Importer 導(dǎo)入數(shù)據(jù)性能,支持將數(shù)據(jù)和索引分別導(dǎo)入。
4. TiKV-Importer 支持上傳 SST 文件限速功能。
RBAC(Role-Based Access Control,基于角色的權(quán)限訪問(wèn)控制) 是商業(yè)系統(tǒng)中最常見(jiàn)的權(quán)限管理技術(shù)之一,通過(guò) RBAC 思想可以構(gòu)建最簡(jiǎn)單“用戶-角色-權(quán)限”的訪問(wèn)權(quán)限控制模型。RBAC 中用戶與角色關(guān)聯(lián),權(quán)限與角色關(guān)聯(lián),角色與權(quán)限之間一般是多對(duì)多的關(guān)系,用戶通過(guò)成為什么樣的角色獲取該角色所擁有的權(quán)限,達(dá)到簡(jiǎn)化權(quán)限管理的目的,通過(guò)此版本的迭代 RBAC 功能開(kāi)發(fā)完成。
IP 白名單功能(企業(yè)版特性) :TiDB 提供基于 IP 白名單實(shí)現(xiàn)網(wǎng)絡(luò)安全訪問(wèn)控制,用戶可根據(jù)實(shí)際情況配置相關(guān)的訪問(wèn)策略。
Audit log 功能(企業(yè)版特性) :Audit log 記錄用戶對(duì)數(shù)據(jù)庫(kù)所執(zhí)行的操作,通過(guò)記錄 Audit log 用戶可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行故障分析,行為分析,安全審計(jì)等,幫助用戶獲取數(shù)據(jù)執(zhí)行情況。
加密存儲(chǔ)(企業(yè)版特性) :TiDB 利用 RocksDB 自身加密功能,實(shí)現(xiàn)加密存儲(chǔ)的功能,保證所有寫(xiě)入到磁盤(pán)的數(shù)據(jù)都經(jīng)過(guò)加密,降低數(shù)據(jù)泄露的風(fēng)險(xiǎn)。
完善權(quán)限語(yǔ)句的權(quán)限檢查 ,新增 ANALYZE,USE,SET GLOBAL,SHOW PROCESSLIST 語(yǔ)句權(quán)限檢查。
1. 新增 SQL 方式查詢慢查詢,豐富 TiDB 慢查詢?nèi)罩緝?nèi)容,如:Coprocessor 任務(wù)數(shù),平均/最長(zhǎng)/90% 執(zhí)行/等待時(shí)間,執(zhí)行/等待時(shí)間最長(zhǎng)的 TiKV 地址,簡(jiǎn)化慢查詢定位工作,提高排查慢查詢問(wèn)題效率,提升產(chǎn)品易用性。
2. 新增系統(tǒng)配置項(xiàng)合法性檢查,優(yōu)化系統(tǒng)監(jiān)控項(xiàng)等,提升產(chǎn)品易用性。
3. 新增對(duì) TableReader、IndexReader 和 IndexLookupReader 算子內(nèi)存使用情況統(tǒng)計(jì)信息,提高 Query 內(nèi)存使用統(tǒng)計(jì)的準(zhǔn)確性,提升處理內(nèi)存消耗較大語(yǔ)句的效率。
4. 制定日志規(guī)范,重構(gòu)日志系統(tǒng),統(tǒng)一日志格式,方便用戶理解日志內(nèi)容,有助于通過(guò)工具對(duì)日志進(jìn)行定量分析。
5. 新增 EXPLAIN ANALYZE 功能,提升SQL 調(diào)優(yōu)的易用性。
6. 新增 SQL 語(yǔ)句 Trace 功能,方便排查問(wèn)題。
7. 新增通過(guò) unix_socket 方式連接數(shù)據(jù)庫(kù)。
8. 新增快速恢復(fù)被刪除表功能,當(dāng)誤刪除數(shù)據(jù)時(shí)可通過(guò)此功能快速恢復(fù)數(shù)據(jù)。
TiDB 3.0 新增 TiFlash 組件,解決復(fù)雜分析及 HTAP 場(chǎng)景。TiFlash 是列式存儲(chǔ)系統(tǒng),與行存儲(chǔ)系統(tǒng)實(shí)時(shí)同步,具備低延時(shí),高性能,事務(wù)一致性讀等特性。 通過(guò) Raft 協(xié)議從 TiKV 中實(shí)時(shí)同步行存數(shù)據(jù)并轉(zhuǎn)化成列存儲(chǔ)格式持久化到一組獨(dú)立的節(jié)點(diǎn),解決行列混合存儲(chǔ)以及資源隔離性問(wèn)題。TiFlash 可用作行存儲(chǔ)系統(tǒng)(TiKV)實(shí)時(shí)鏡像,實(shí)時(shí)鏡像可獨(dú)立于行存儲(chǔ)系統(tǒng),將行存儲(chǔ)及列存儲(chǔ)從物理隔離開(kāi),提供完善的資源隔離方案,HTAP 場(chǎng)景最優(yōu)推薦方案;亦可用作行存儲(chǔ)表的索引,配合行存儲(chǔ)對(duì)外提供智能的 OLAP 服務(wù),提升約 10 倍復(fù)雜的混合查詢的性能。
TiFlash 目前處于 Beta 階段,計(jì)劃 2019 年 12 月 31 日之前 GA,歡迎大家申請(qǐng)?jiān)囉谩?/p>
未來(lái)我們會(huì)繼續(xù)投入到系統(tǒng)穩(wěn)定性,易用性,性能,彈性擴(kuò)展方面,向用戶提供極致的彈性伸縮能力,極致的性能體驗(yàn),極致的用戶體驗(yàn)。
穩(wěn)定性方面 V4.0 版本將繼續(xù)完善 V3.0 未 GA 的重大特性,例如:悲觀事務(wù)模型,View,Table Partition,Titan 行存儲(chǔ)引擎,TiFlash 列存儲(chǔ)引擎;引入近似物理備份恢復(fù)解決分布數(shù)據(jù)庫(kù)備份恢復(fù)難題;優(yōu)化 PD 調(diào)度功能等。
性能方面 V4.0 版本將繼續(xù)優(yōu)化事務(wù)處理流程,減少事務(wù)資源消耗,提升性能,例如:1PC,省去獲取 commit ts 操作等。
彈性擴(kuò)展方面,PD 將提供彈性擴(kuò)展所需的元信息供外部系統(tǒng)調(diào)用,外部系統(tǒng)可根據(jù)元信息及負(fù)載情況動(dòng)態(tài)伸縮集群規(guī)模,達(dá)成節(jié)省成本的目標(biāo)。
我們相信戰(zhàn)勝“未知”最好的武器就是社區(qū)的力量,基礎(chǔ)軟件需要堅(jiān)定地走開(kāi)源路線。截止發(fā)稿我們已經(jīng)完成 41 篇源碼閱讀文章。TiDB 開(kāi)源社區(qū)總計(jì) 265 位 Contributor,6 位 Committer,在這里我們對(duì)社區(qū)貢獻(xiàn)者表示由衷的感謝,希望更多志同道合的人能加入進(jìn)來(lái),也希望大家在 TiDB 這個(gè)開(kāi)源社區(qū)能夠有所收獲。
TiDB 3.0 GA Release Notes:
LiteIDE是一款專門(mén)為Go語(yǔ)言開(kāi)發(fā)的跨平臺(tái)輕量級(jí)集成開(kāi)發(fā)環(huán)境(IDE),由QT編寫(xiě)。
LiteIDE主要特點(diǎn): 支持主流操作系統(tǒng)
Windows
Linux
MacOS X Go編譯環(huán)境管理和切換
管理和切換多個(gè)Go編譯環(huán)境
支持Go語(yǔ)言交叉編譯 與Go標(biāo)準(zhǔn)一致的項(xiàng)目管理方式
基于GOPATH的包瀏覽器
基于GOPATH的編譯系統(tǒng)
基于GOPATH的Api文檔檢索 Go語(yǔ)言的編輯支持
類(lèi)瀏覽器和大綱顯示
Gocode(代碼自動(dòng)完成工具)的完美支持
Go語(yǔ)言文檔查看和Api快速檢索
代碼表達(dá)式信息顯示F1
源代碼定義跳轉(zhuǎn)支持F2
Gdb斷點(diǎn)和調(diào)試支持
gofmt自動(dòng)格式化支持 其他特征
支持多國(guó)語(yǔ)言界面顯示
完全插件體系結(jié)構(gòu)
支持編輯器配色方案
基于Kate的語(yǔ)法顯示支持
基于全文的單詞自動(dòng)完成
支持鍵盤(pán)快捷鍵綁定方案
Markdown文檔編輯支持
實(shí)時(shí)預(yù)覽和同步顯示
自定義CSS顯示
可導(dǎo)出HTML和PDF文檔
批量轉(zhuǎn)換/合并為HTML/PDF文檔 Sublime Text 2(以下簡(jiǎn)稱Sublime)+ GoSublime + gocode + MarGo的組合。
其優(yōu)點(diǎn)有: 自動(dòng)化提示代碼。 保存的時(shí)候自動(dòng)格式化代碼,讓您編寫(xiě)的代碼更加美觀,符合Go的標(biāo)準(zhǔn)。 支持項(xiàng)目管理 支持語(yǔ)法高亮 熟悉Java的讀者應(yīng)該對(duì)于idea不陌生,idea是通過(guò)一個(gè)插件來(lái)支持go語(yǔ)言的高亮語(yǔ)法,代碼提示和重構(gòu)實(shí)現(xiàn)。