Water 2.4 发布,一站式服务治理平台

栏目: 软件资讯 · 发布时间: 3年前

内容简介:Water(水孕育万物...) Water 为项目开发、服务治理,提供一站式解决方案(可以理解为微服务架构支持套件)。基于 Solon 框架开发,并支持完整的 Solon Cloud 规范;已在生产环境跑了4年。 功能约等于:consul ...

Water(水孕育万物...)

Water 为项目开发、服务治理,提供一站式解决方案(可以理解为微服务架构支持套件)。基于 Solon 框架开发,并支持完整的 Solon Cloud 规范;已在生产环境跑了4年。

功能约等于:consul + rabbitmq + elk + prometheus + openFaas + quartz 等一些别的功能,并有机结合在一起。

本次更新

  • 服务 watersev,子级服务增加各自的签到。从而形成子级服务的集群
    • 服务 watersev-pln,可自由集群,并让每个任务分布到集群中运行
    • 服务 watersev-mot,可自由集群,并让每个任务分布到集群中运行
    • 服务 watersev-msgexg,可自由集群,并分解borker到不同节点上
    • 服务 watersev-msgdis,可自由集群,并分解borker到不同节点上
    • 服务 watersev-sevchk,取消启动时需要 reset 的逻辑
  • 服务 waterapi
    • 镜像端口改为:9371
    • 优化日志记录格式,强调输出输出概念和上下文随带
  • 服务 waterraas
    • 端口改为:9375 (之前为:9376)
  • 服务 waterpaas
    • 更名为:waterfaas
  • 服务 PaaS 将包函:FaaS + RaaS
    • FaaS 调整:
      • 数据表 paas_file 更名:luffy_file。强调FaaS自身的代号
      • 数据表 paas_etl 更名:luffy_etl
      • 管理后台 /paas/ 开头的路径,改为 /luffy/开头
      • 配置 paas_uri 更名为:faas_uri
  • 安全名单,增加 token 的模式支持

快速入门

了解开发框架与镜像

开发框架  
org.noear:water.client 框架:Water 客户端
org.noear:water-solon-plugin 框架:Water 客户端 for solon(也可用于 Spring Boot 项目)
镜像  
noearorg/waterapi 镜像:Water 主接口服务
noearorg/watersev 镜像:Water 后台服务(健康检测;数据监视;消息派发;定时任务等...)
noearorg/wateradmin 镜像:Water 管理控制台(支持LDAP登录)
noearorg/waterfaas 镜像:Water 即时接口服务,提供轻量级FaaS接口服务
noearorg/waterraas 镜像:Water 规则计算服务,提供轻量级规则计算服务

控制台演示站

地址: http://water.noear.org (账号:demo ;密码:demo )

关键持久化说明:

  • 日志持久化,支持:MySql、PostgreSQL、 MongoDb 、ElasticSearch、ClickHouse
  • 消息持久化,支持:MySql、PostgreSQL、MongoDb

代码演示

(1) 配置

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

<!-- solon cloud 集成版本 (也可用于 Spring Boot 项目) -->
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>water-solon-plugin</artifactId>
    <version>${solon.ver}</version>
</dependency>
  • application.yml / 配置说明
solon.app:
  name: "wateradmin"
  group: "water"

solon.cloud.water:
  server: "waterapi:9371"           #WATER服务地址
  config:
    load: "test.properties"         #默认加载的配置
  log:
    default: "water_log_admin"      #默认日志记录器

(2) 代码

public class DemoApp {
    public void main(String[] args) {
        SolonApp app = Solon.start(DemoApp.class, args);

        //监控服务:之:添加接口性能记录(一般这个过滤器写成独立类)
        Logger log = LoggerFactory.getLogger(DemoApp.class);
        app.filter((ctx, chain) -> {
            //1.开始计时(用于计算响应时长)
            long start = System.currentTimeMillis();

            try {
                chain.doFilter(ctx);
            } catch (Throwable e) {
                //2.顺带记录个异常
                log.error("{}",e);
            } finally {
                //3.获得接口响应时长
                long milliseconds = System.currentTimeMillis() - start;
                CloudClient.metric().addMeter(Solon.cfg().appName(), "path", ctx.pathNew(), milliseconds);
            }
        });
    }
}

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

    @NamiClient            //RPC服务发现的功能(注解模式)
    RockService rockService;
   
    @Mapping("/")
    public void test(){
        //日志服务:写个日志
        log.info("你好,日志服务"); //(content)
        TagsMDC.tag0("demo");
        log.error("{}\r\n{}","test","你好,日志服务"); //(tag,summary,content)
        
        //配置服务:使用配置的数据库上下文进行查询
        Map map = demoDb.table("water_reg_service").limit(1).selectMap("*");

        //消息服务:发送消息
        CloudClient.event().publish(new Event("demo.test", "{\"order_id\":1}")); //(非注解模式)

        //Rpc发现服务:调用Rpc接口
        AppModel app = rockService.getAppById(12);
    }
}

//消息订阅:订阅消息并处理(根据:topic 进行订阅)
@Slf4j
@CloudEvent("demo.test")
public class Event_demo_test implements CloudEventHandler {
    @Override
    public boolean handler(Event event) throws Exception {
        //处理消息...
        log.info("我收到消息:" + event.content());
        return true;
    }
}


//配置订阅:关注配置的实时更新
@CloudConfig("demoDb")
public class TestConfigHandler implements CloudConfigHandler {
    @Override
    public void handler(Config config) {

    }
}

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

    @Override
    public void handle(Context ctx) throws Throwable {
        //处理任务...
        log.info("我被调度了");
    }
}

 


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Understanding Machine Learning

Understanding Machine Learning

Shai Shalev-Shwartz、Shai Ben-David / Cambridge University Press / 2014 / USD 48.51

Machine learning is one of the fastest growing areas of computer science, with far-reaching applications. The aim of this textbook is to introduce machine learning, and the algorithmic paradigms it of......一起来看看 《Understanding Machine Learning》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具