其旨在打造一個集應用開發、大數據存儲、處理、分佈式計算、自動化部署的無節點微服務集中開發與運行平臺,以響應業務的快速變動,知足系統對大數據,大併發與開發效率的需求;mysql
平臺設計以數據爲核,以groovy腳本爲基礎,經過提供api、異步消息處理、調度等基礎構件來支持應用的快速開發;redis
核心是經過整合現有開源項目來實現的,其主要用到的技術棧包括:spring cloud, zookeeper, kafka, elasticsearch, mysql, kudu(hadoop系列), fastdfs,redis, quartz, maxwell, groovy, activitiy,couchdb等。spring
其對應一個微服務應用,一個項目定義了一個應用的邊界,每一個項目有惟一的代碼與請求上下文路徑,全部資源,接口,調度,通道或觸發器都必需歸屬一個項目,項目與項目之間的調用須要受權。sql
其對應項目下的一個模塊,每一個模塊能夠由一系列的節點組成,方便進行管理。數據庫
資源定義了項目中能夠使用的數據庫,消息,緩存,文件存儲等服務,項目資源只能引用平臺上配置的全局資源,在後續的api等腳本中,能夠經過資源腳本對象對資源進行操做。api
計劃支持的資源類型:mysql,oracle,kudu,es(elasticsearch),redis,kafka,filestore,couchdb緩存
restapi定義了項目對外提供的rest接口;其經過urlmapping來映射外部訪問地址,urlmapping爲ant表達式,例如:/foo/**或/foo/*/bar安全
rest接口能夠綁定受權,你實現權限驗證;rest接口也能夠支持mockscript,實現mock;支持經過docapi來指定接口文檔。併發
本地接口,主要用於在項目內定義一些公共方法,以便其它腳本使用,內部接口能夠經過項目腳本對象的call方法來調用,例如:def robj = prj.call('foo', name:'abc');oracle
過濾器用於攔截請求,其分爲項目filter與全局filter
項目filter只能對當前項目的restapi或filter進行攔截,其經過urlmapping來指定攔截路徑。
全局filter能夠攔截全部項目的restapi或filter進行攔截,項目中如須要配置全局filter必需得到管理員爲其配置的「全局filter"定義的受權。
通道主要用於異步處理,其對應一個kafka的topic,在腳本中能夠經過prj.sendChannel('foo', 'valuestr')的方式觸發channel腳本的執行。
channel默認是有序單隊列的,若是須要支持無序併發處理,請將配置的hostnum設置大於1,考慮到資源佔用,暫時最高不能大於100。
全局通道主要用於向其它項目廣播,例如在產品主數據修改後,聯採,交易,結算等都須要同步數據。
其它項目如須要監聽當前通道,須要經過allowPullProjects爲其它項目受權,其它項目能夠使用publicreciver來監聽其它項目的廣播。
其它項目如須要發送數據到當前通道,能夠經過prj.sendPublicChannel('project', 'channelname', 'valuestr')來實現,同時當前通道須要設置allowPushProjects來受權。
用於接收全局廣播,其對應publicchannel
監聽數據庫的變更,當前只支持MYSQL;
用於定義項目中的調度,經過定義cron表達式來指定執行週期。
用於定義elasticsearch的索引庫,其能夠經過copyfromtable來同步某個數據庫表的結構;
dataset變動後須要重建索引纔會生效。
用於定義數據庫資源中的表。
用於定義數據庫資源中的初始化數據。
——————————————
推薦閱讀: