GO-YEA分布式快速開(kāi)發(fā)框架
YEA
重要事情說(shuō)三遍:使用go-yea前,請(qǐng)先下載yea,并且執(zhí)行yea/pom.xml,不然會(huì)缺少依賴Jar包。
mvn clean install -Dmaven.test.skip=true
YEA項(xiàng)目地址:https://git.oschina.net/yiyongfei/yea
概述
GO-YEA是什么
GO-YEA是YEA的一個(gè)應(yīng)用,它是一個(gè)極其容易使用的分布式框架,致力于提供產(chǎn)品的快速啟動(dòng)以及后續(xù)的服務(wù)伸縮。 其核心部分包含:
- RPC服務(wù):基于Netty4框架、序列化、數(shù)據(jù)壓縮、心跳檢測(cè)、斷鏈重連等機(jī)制提供穩(wěn)定的RPC服務(wù),完成服務(wù)之間的非阻塞通訊。
- 負(fù)載均衡:基于Ribbon提供的負(fù)載均衡算法,通過(guò)不同的負(fù)載均衡策略可以合理分擔(dān)系統(tǒng)負(fù)載、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力。
- 熔斷處理:基于Hystrix提供的熔斷機(jī)制,為分布式系統(tǒng)提供延遲和容錯(cuò)功能,防止級(jí)聯(lián)失敗,在面臨不可避免的失敗時(shí)仍能有其彈性。
- LOOKUP服務(wù):基于Zookeeper提供的注冊(cè)中心,使地址透明,方便服務(wù)生產(chǎn)者、消費(fèi)者平滑增加或減少機(jī)器。
- 認(rèn)證授權(quán):基于Shiro框架、Redis服務(wù)提供的權(quán)限管理,提供用戶的認(rèn)證服務(wù)和可配置的授權(quán)服務(wù)。
- 代碼生成:通過(guò)生成工具,生成基于Mybatis的Sql-Mapping文件及相應(yīng)的Entity、PK、Domain類(均是貧血對(duì)象),降低開(kāi)發(fā)人員的重復(fù)工作。
- Spring配置:透明化接入,通過(guò)Spring自身的注解機(jī)制無(wú)需額外編寫(xiě)代碼即可為服務(wù)提供分布式能力。
GO-YEA 傳送門
GO-YEA能做什么
首先它是一個(gè)分布式服務(wù)框架,通過(guò)高性能的RPC遠(yuǎn)程調(diào)用以及SOA服務(wù)治理,提升產(chǎn)品在各個(gè)階段不同的可伸縮要求。以達(dá)到最大程度降低由于伸縮性的改變對(duì)整個(gè)項(xiàng)目的變動(dòng)影響。
系統(tǒng)伸縮性通常以三種方式完成:1、增加副本;2、功能分割;3、數(shù)據(jù)分割。YEA主要考慮前二種方式。
其次它是一個(gè)快速啟動(dòng)的應(yīng)用開(kāi)發(fā)平臺(tái),集成了項(xiàng)目中常用的基礎(chǔ)組件。
-
認(rèn)證授權(quán):基于Shiro實(shí)現(xiàn)的可配置授權(quán)管理系統(tǒng),通過(guò)頁(yè)面可定義整個(gè)系統(tǒng)的權(quán)限、角色、授權(quán)。
-
緩存:按照Map接口對(duì)Redis和Ehcache封裝,降低使用門檻,同時(shí)也減少未來(lái)緩存方案的遷移開(kāi)銷(本地緩存向分布式緩存的遷移)。
-
ORM:基于Mybatis完成數(shù)據(jù)庫(kù)層面的增、刪、改、查操作。
-
代碼生成:基于數(shù)據(jù)表生成Sql-Mapping文件及相應(yīng)的Entity、PK、Domain類。
-
序列化:提高統(tǒng)一的序列化接口,支持三種序列化方式:FST、Hessian2、原生。
-
等等
附上性能測(cè)試數(shù)據(jù)。
測(cè)試環(huán)境:三臺(tái)Vultr的云主機(jī),各1 CPU(單核),1024MB 內(nèi)存,一臺(tái)部署go-yea-web(Tomcat),一臺(tái)部署Launcher(啟三個(gè)服務(wù),每個(gè)服務(wù)占用堆內(nèi)存128MB),一臺(tái)部署Jmeter用于測(cè)試。
測(cè)試軟件:Jmeter。
測(cè)試說(shuō)明:調(diào)用api:permission/operation/query。執(zhí)行路徑Jmeter--(http)-->Go-yea-web--(netty)-->Launcher--(tcp)-->DB--(tcp)-->Launcher--(netty)-->Go-yea-web--(http)-->Jmeter
測(cè)試結(jié)果(360并發(fā)):
詳細(xì)數(shù)據(jù): 詳細(xì)結(jié)果
提高并發(fā)數(shù),提升性能指標(biāo):可以考慮先適當(dāng)增加CPU核數(shù)和內(nèi)存容量,然后再橫向擴(kuò)充。
縱向擴(kuò)展對(duì)比(二臺(tái)各2 CPU,4096MB 內(nèi)存云主機(jī),999并發(fā)):
詳細(xì)數(shù)據(jù): 詳細(xì)結(jié)果
訪問(wèn)GO-YEA(部署在bluemix上)
- 訪問(wèn)地址:http://169.44.3.50
- 用戶名密碼:admin admin 或 zhangsan zhangsan
- 備注:對(duì)于admin用戶,授權(quán)時(shí)請(qǐng)不要移除超級(jí)管理員這個(gè)角色
更新
- GO-YEA是YEA的應(yīng)用,絕大多數(shù)的問(wèn)題修復(fù)、功能增強(qiáng)都會(huì)在YEA上更新
ISSUE
- 使用期間若發(fā)現(xiàn)問(wèn)題,請(qǐng)登記Issue,我會(huì)定期維護(hù)Issues上的問(wèn)題
