Solon

local-solon-cloud-plugin

v2.7.3 </> markdown
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>local-solon-cloud-plugin</artifactId>
</dependency>

1、描述

分布式扩展插件。基于 本地 适配的 solon cloud 插件。它比较特别,是分布式能力的本地模拟实现(是个假的分布式插件),且基本实现了 water 所能提供的能力(即覆盖了绝大部分的 solon cloud 能力)。(v1.11.2 之后支持)

场景定位:

  • 让所有项目统一使用 solon cloud 接口进行开发
  • 通过切换配置;就可以在 "本地单体服务" 和 "分布式服务(或微服务)"之间自由切换

比如:

  • 定时任务可以在本地调度,配置改动就可以由 water 或 xxl-job 进行调度
  • 或者配置,自由在本地配置与云端配置之间切换

2、能力支持

云端能力接口说明备注
CloudConfigService云端配置服务不支持 namespace;支持 group
CloudDiscoveryService云端注册与发现服务不支持 namespace;支持 group
CloudEventService云端事件服务不支持 namespace;支持 group
CloudFileService云端文件服务
CloudI18nService云端国际化服务
CloudJobService云端定时任务服务
CloudListService云端名单列表服务
CloudMetricService云端度量服务空实现
CloudTraceService云端链路跟踪服务空实现

3、配置示例

solon.cloud.local:
  server: "./solon-cloud/" #必须设置,也可资源目录: classpath:META-INF/solon-cloud/
  config:
    load: "demoapp.yml"    #加载配置到应用属性(多个以","隔开)
  discovery:
    service:
      demoapp: #添加本地服务发现(demoapp 为服务名)
        - "http://localhost:8081"

提醒:通过 "...config.load" 加载的配置,会进入 Solon.cfg() 可使用 @Inject 注入

4、演示项目

附录:能力使用说明:

1)、云端配置服务(本地模拟)

内容格式支持: yml, properties, json (后缀做为name的一部分,可有可无)
文件地址格式: config/{group}_{name},例示:

  • ${server}/config/demo_demo-db
  • ${server}/config/demo_demoapp.yml

两种应用:

可以通过配置加载配置

solon.cloud.local:
  server: "/data/demo/solon-cloud/" #如果不设置,则为 classpath:META-INF/solon-cloud/
  config:
    load: "demoapp.yml"

可以通过注解直接注入

@Configuration
public class Config {
    @Bean
    public void init1(@CloudConfig("demo-db") Properties props) {
        System.out.println("云端配置服务直接注入的:" + props);
    }
}
2)、云端注册与发现服务(本地模拟)

让服务注册有地方去,也有地方可获取(即发现)

3)、云端事件服务(本地模拟)

本地摸拟实现。不支持持久化,重启就会丢数据。最好还是引入消息队列的适配框架

4)、云端文件服务(本地模拟)

存放在 ${server}/file/ 下

5)、云端国际化配置服务(本地模拟)

内容格式支持: yml, properties, json (不能有手缀名,为了更好的支持中文)
文件地址格式: i18n/{group}_{name}-{locale},例示:

  • ${server}/i18n/demo_demoapp-zh_CN
  • ${server}/i18n/demo_demoapp-en_US
6)、云端定时任务调度服务(本地模拟)

时间到就会启动新的执行(不管上次是否执行完成了)

7)、云端名单服务(本地模拟)

内容格式支持: json
文件地址格式: list/{name}-{type}.json,例示:

  • ${server}/list/whitelist-ip.json
8)、云端度量服务(本地模拟)

一个空服务。只为已有调用不出错

9)、云端跟踪服务(本地模拟)

一个空服务。只为已有调用不出错