說框架設計思路

来源:https://www.cnblogs.com/Javame/archive/2019/01/23/10308358.html
-Advertisement-
Play Games

其旨在打造一個集應用開發、大數據存儲、處理、分散式計算、自動化部署的無節點微服務集中開發與運行平臺,以響應業務的快速變更,滿足系統對大數據,大併發與開發效率的需求; 平臺設計以數據為核,以groovy腳本為基礎,通過提供api、非同步消息處理、調度等基礎構件來支持應用的快速開發; 核心是通過整合現有開 ...


     其旨在打造一個集應用開發、大數據存儲、處理、分散式計算、自動化部署的無節點微服務集中開發與運行平臺,以響應業務的快速變更,滿足系統對大數據,大併發與開發效率的需求;

        平臺設計以數據為核,以groovy腳本為基礎,通過提供api、非同步消息處理、調度等基礎構件來支持應用的快速開發;

        核心是通過整合現有開源項目來實現的,其主要用到的技術棧包括:spring cloud, zookeeper, kafka, elasticsearch, mysql, kudu(hadoop系列), fastdfs,redis, quartz, maxwell, groovy, activitiy,couchdb等。

 

核心概念介紹

項目 - project

其對應一個微服務應用,一個項目定義了一個應用的邊界,每個項目有唯一的代碼與請求上下文路徑,所有資源,介面,調度,通道或觸發器都必需歸屬一個項目,項目與項目之間的調用需要授權。

模塊 - module

其對應項目下的一個模塊,每個模塊可以由一系列的節點組成,方便進行管理。

資源 - resource

資源定義了項目中可以使用的資料庫,消息,緩存,文件存儲等服務,項目資源只能引用平臺上配置的全局資源,在後續的api等腳本中,可以通過資源腳本對象對資源進行操作。

計劃支持的資源類型:mysql,oracle,kudu,es(elasticsearch),redis,kafka,filestore,couchdb

外部介面 - restapi

restapi定義了項目對外提供的rest介面;其通過urlmapping來映射外部訪問地址,urlmapping為ant表達式,例如:/foo/**或/foo/*/bar

rest介面可以綁定授權,你實現許可權驗證;rest介面也可以支持mockscript,實現mock;支持通過docapi來指定介面文檔。

本地介面 - localapi

本地介面,主要用於在項目內定義一些公共方法,以便其它腳本使用,內部介面可以通過項目腳本對象的call方法來調用,例如:def robj = prj.call('foo', name:'abc');

項目過濾器  - filter

過濾器用於攔截請求,其分為項目filter與全局filter

項目filter只能對當前項目的restapi或filter進行攔截,其通過urlmapping來指定攔截路徑。

全局過濾器 - globalfilter

全局filter可以攔截所有項目的restapi或filter進行攔截,項目中如需要配置全局filter必需獲得管理員為其配置的“全局filter"定義的授權。

項目通道 - channel

通道主要用於非同步處理,其對應一個kafka的topic,在腳本中可以通過prj.sendChannel('foo', 'valuestr')的方式觸發channel腳本的執行。

channel預設是有序單隊列的,如果需要支持無序併發處理,請將配置的hostnum設置大於1,考慮到資源占用,暫時最高不能大於100。

全局通道 - publicchannel

全局通道主要用於向其它項目廣播,例如在產品主數據修改後,聯採,交易,結算等都需要同步數據。

其它項目如需要監聽當前通道,需要通過allowPullProjects為其它項目授權,其它項目可以使用publicreciver來監聽其它項目的廣播。

其它項目如需要發送數據到當前通道,可以通過prj.sendPublicChannel('project', 'channelname', 'valuestr')來實現,同時當前通道需要設置allowPushProjects來授權。

全局消息處理器  - publicreciver

用於接收全局廣播,其對應publicchannel

觸發器 - trigger

監聽資料庫的變動,當前只支持MYSQL;

調度 - schedule

用於定義項目中的調度,通過定義cron表達式來指定執行周期。

ES數據集 - dataset

用於定義elasticsearch的索引庫,其可以通過copyfromtable來同步某個資料庫表的結構;

dataset變更後需要重建索引才會生效。

資料庫表 - table

用於定義資料庫資源中的表。

數據初始化 - datainit

用於定義資料庫資源中的初始化數據。

 

——————————————

推薦閱讀:

Kafka 入門教程

你可以不懂但一定要知道的代碼審查 Code Review

ELK Stack 實戰教程

filebeat+kafka+strom+logstash+es 輿情採集系統

安全漏洞掃描,風險原因分析及解決方案


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Vim關於Vue的生態鏈還是很少,不過湊活湊活還是能用的。 縮進 縮進採用的是兩個空格,.vimrc配置: 語法高亮 重要的語法高亮,支持最好的應該是vim-vue。 使用Vundle下載: 這樣語法高亮基本上就實現了,不過會出現滑動過快高亮失效的情況,文檔中給出的原因是vue包含html、css、 ...
  • 1. 簡單的函數: 2.1 帶參數的函數: 2.2 帶參數的函數: 3.1 帶返回值的函數 3.2 帶有參數和返回值的函數 嘗試把返回值用字元串拼接的方式組合了一下,還真成功了 結果: ...
  • 要開始寫Vue的功能了,是不是很激動呢!開始吧! 1、首先建立一個html頁面,導入Vue js包 1 <script type="text/javascript" src="js/vue.min.js"></script> 2、架包導入之後,我們需要創建一個Vue對象,用來綁定元素節點,從而達到操 ...
  • 作為一個後臺開發人員,幾年前參與過Ionic1開發過一微信公眾號的經歷,所以這次開發企業微信應用,就使用了ionic,正好ionic4 rc版本發佈,雖然不是正式版,作為本項目的項目經理,還是決定使用ionic4開發,因為項目組員也是我。簡單記錄一下本次開發的過程,很多命令不經常輸入,就忘記了。 0 ...
  • 一. 範圍不同 readonly 只對 <input> 和 <textarea> 標簽有效 disabled 對所有表單元素都有效, 包括:<input>, <textarea>, <button>, <label>, <option>, <select>等 二. 程度不同 readonly 只是將 ...
  • 昨天碰到這樣一個場景,調用後端介面返回的數據發現所有數據都是正常的,只有一個商品ID的最後兩位是錯的,每一個商品都是,導致無法進行商品的上下架和刪除, 經過查資料發現: 瀏覽器解析數字的坑,一旦超出一定長度最後兩位會精度失準變為兩位隨機數,所以出現這種問題先列印出來 typeof(出錯的數字欄位), ...
  • 一、需求背景: 二、Dubbo和Spring Cloud 的比較 首先Dubbo是一個分散式服務框架,以及SOA治理方案。它的功能主要包括:高性能NIO通訊及多協議集成,服務動態定址與路由,軟負載均衡與容錯,依賴分析與降級等,它是著名的阿裡服務治理的核心框架。Spring Cloud更加關心為開發人 ...
  • 一個分散式服務集群管理通常需要一個協調服務,提供服務註冊、服務發現、配置管理、組服務等功能,而協調服務自身應是一個高可用的服務集群,ZooKeeper是廣泛應用且眾所周知的協調服務。協調服務自身的高可用需要選舉演算法來支撐,本文將講述選舉原理並以分散式服務集群NebulaBootstrap的協調服務N ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...