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