Water 2.6.3 發(fā)布福侈,一站式服務(wù)治理平臺(tái)

Water(水孕育萬(wàn)物...)

Water 為項(xiàng)目開(kāi)發(fā)购对、服務(wù)治理啡浊,提供一站式解決方案(可以理解為微服務(wù)架構(gòu)支持套件)觅够。基于 Solon 框架開(kāi)發(fā)巷嚣,并支持完整的 Solon Cloud 規(guī)范喘先;已在生產(chǎn)環(huán)境奔跑了4年。

功能相當(dāng)于:consul + rabbitmq + elk + prometheus + openFaas + quartz + 等等廷粒,并有機(jī)結(jié)合在一起窘拯。 或者約等于:nacos + rocketmq + PlumeLog + prometheus + magic-api + xxl-job + 等。

對(duì) k8s 友好坝茎,支持 ip 漂移涤姊、支持 k8s service 映射。

本次更新

  • [控制臺(tái)] 所有導(dǎo)入功能統(tǒng)一為插入或替換(之前有些插入嗤放,有些是替換)
  • [控制臺(tái)] 調(diào)整部分列表刪除后思喊,跳轉(zhuǎn)到同狀態(tài)列表
  • [控制臺(tái)] 修復(fù)定時(shí)任務(wù)監(jiān)控?zé)o數(shù)據(jù)的問(wèn)題
  • [控制臺(tái)] UI優(yōu)化
  • HttpUtils 工具類,支持超時(shí)設(shè)置
  • runJob次酌,超時(shí)改為:60*5秒
  • runStatus恨课,超時(shí)改為:10秒
  • solon 升級(jí)為:1.7.5(項(xiàng)目地址:https://gitee.com/noear/solon
  • redisx 升級(jí)為:1.4.3(項(xiàng)目地址:https://gitee.com/noear/redisx
  • snack3 升級(jí)為:3.2.22(項(xiàng)目地址:https://gitee.com/noear/snack3

快速入門

了解開(kāi)發(fā)框架與鏡像

組件 說(shuō)明
開(kāi)發(fā)框架
org.noear:water.client 框架:Water 客戶端
org.noear:water-solon-plugin 框架:Water 客戶端 for solon(也可用于 Spring Boot 項(xiàng)目)
鏡像
noearorg/waterapi:2.6.2 鏡像:Water 主接口服務(wù)
noearorg/watersev:2.6.2 鏡像:Water 后臺(tái)服務(wù)(健康檢測(cè)舆乔;數(shù)據(jù)監(jiān)視;消息派發(fā)剂公;定時(shí)任務(wù)等...)
noearorg/wateradmin:2.6.2 鏡像:Water 管理控制臺(tái)(支持LDAP登錄)
noearorg/waterfaas:2.6.2 鏡像:Water 即時(shí)接口服務(wù)希俩,提供輕量級(jí)FaaS接口服務(wù)
noearorg/xwater:2.6.2 構(gòu)建:Water 助理工具

控制臺(tái)演示站

地址: http://water.noear.org (賬號(hào):demo ;密碼:demo )

關(guān)鍵持久化說(shuō)明:

  • 日志持久化纲辽,支持:MySql颜武、PostgreSQL、MongoDb文兑、ElasticSearch盒刚、ClickHouse
  • 消息持久化,支持:MySql绿贞、PostgreSQL因块、MongoDb

項(xiàng)目地址

代碼演示

(1) 配置
  • pom.xml / mevan 配置
<!-- 客戶端版本 -->
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>water.client</artifactId>
    <version>${water.ver}</version>
</dependency>

<!-- solon cloud 集成版本 (也可用于 Spring Boot 項(xiàng)目) -->
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>water-solon-plugin</artifactId>
    <version>${solon.ver}</version>
</dependency>
  • application.yml / 配置說(shuō)明
solon.app:
  name: "demo-api"
  group: "demo"

solon.cloud.water:
  server: "waterapi:9371"    #WATER服務(wù)地址
  config:
    load: "demo.yml"         #默認(rèn)加載的配置
(2) 代碼
public class DemoApp {
    public void main(String[] args) {
        SolonApp app = Solon.start(DemoApp.class, args);

        //監(jiān)控服務(wù):之:添加接口性能記錄(一般這個(gè)過(guò)濾器寫成獨(dú)立類)
        Logger log = LoggerFactory.getLogger(DemoApp.class);
        app.filter((ctx, chain) -> {
            //1.開(kāi)始計(jì)時(shí)(用于計(jì)算響應(yīng)時(shí)長(zhǎng))
            long start = System.currentTimeMillis();

            try {
                chain.doFilter(ctx);
            } catch (Throwable e) {
                //2.順帶記錄個(gè)異常
                log.error("{}",e);
            } finally {
                //3.獲得接口響應(yīng)時(shí)長(zhǎng)
                long milliseconds = System.currentTimeMillis() - start;
                CloudClient.metric().addMeter(Solon.cfg().appName(), "path", ctx.pathNew(), milliseconds);
            }
        });
    }
}

@Configuration
public class DemoConfig {

    @Bean
    public DataSource db1(@CloudConfig("demoDb") HikariDataSource ds) {
        //配置一個(gè)數(shù)據(jù)源
        return ds;
    }
    
    @Bean
    public I18nBundleFactory i18nBundleFactory(){
        //將國(guó)際化服務(wù),切換為云端接口
        return new CloudI18nBundleFactory();
    }
}

@Slf4j
@Controller
public class DemoController{
    @CloudConfig(name = "demoDb", autoRefreshed = true)  //配置服務(wù)的功能(注解模式)
    DbContext demoDb;

    @NamiClient            //RPC服務(wù)發(fā)現(xiàn)的功能(注解模式)
    RockService rockService;
   
    @Mapping("/")
    public void test(){
        //日志服務(wù):寫個(gè)日志
        log.info("你好籍铁,日志服務(wù)"); //(content)
        TagsMDC.tag0("demo");
        log.error("{}\r\n{}","test","你好涡上,日志服務(wù)"); //(tag,summary,content)
        
        //配置服務(wù):使用配置的數(shù)據(jù)庫(kù)上下文進(jìn)行查詢
        Map map = demoDb.table("water_reg_service").limit(1).selectMap("*");

        //消息服務(wù):發(fā)送消息
        CloudClient.event().publish(new Event("demo.test", "{\"order_id\":1}")); //(非注解模式)

        //Rpc發(fā)現(xiàn)服務(wù):調(diào)用Rpc接口
        AppModel app = rockService.getAppById(12);
    }
}

//消息訂閱:訂閱消息并處理(根據(jù):topic 進(jìn)行訂閱)
@Slf4j
@CloudEvent("demo.test")
public class Event_demo_test implements CloudEventHandler {
    @Override
    public boolean handle(Event event) throws Exception {
        //處理消息...
        log.info("我收到消息:" + event.content());
        return true;
    }
}


//配置訂閱:關(guān)注配置的實(shí)時(shí)更新
@CloudConfig("demoDb")
public class TestConfigHandler implements CloudConfigHandler {
    @Override
    public void handle(Config config) {

    }
}

//分布式任務(wù)
@CloudJob(name = "demo_test", cron7x = "0 1 * * * ?")
public class Job_test implements CloudJobHandler {

    @Override
    public void handle(Context ctx) throws Throwable {
        //處理任務(wù)...
        log.info("我被調(diào)度了");
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拒名,隨后出現(xiàn)的幾起案子吩愧,更是在濱河造成了極大的恐慌,老刑警劉巖增显,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雁佳,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡同云,警方通過(guò)查閱死者的電腦和手機(jī)糖权,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)炸站,“玉大人星澳,你說(shuō)我怎么就攤上這事『狄祝” “怎么了禁偎?”我有些...
    開(kāi)封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)阀坏。 經(jīng)常有香客問(wèn)我如暖,道長(zhǎng),這世上最難降的妖魔是什么忌堂? 我笑而不...
    開(kāi)封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任装处,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘妄迁。我一直安慰自己寝蹈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布登淘。 她就那樣靜靜地躺著箫老,像睡著了一般。 火紅的嫁衣襯著肌膚如雪黔州。 梳的紋絲不亂的頭發(fā)上耍鬓,一...
    開(kāi)封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音流妻,去河邊找鬼牲蜀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛绅这,可吹牛的內(nèi)容都是我干的涣达。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼证薇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼度苔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起浑度,我...
    開(kāi)封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寇窑,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后箩张,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體甩骏,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年先慷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了横漏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熟掂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扎拣,到底是詐尸還是另有隱情赴肚,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布二蓝,位于F島的核電站誉券,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏刊愚。R本人自食惡果不足惜踊跟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧商玫,春花似錦箕憾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至炬藤,卻和暖如春御铃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沈矿。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工上真, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人羹膳。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓睡互,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親溜徙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子湃缎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容