local-solon-cloud-plugin
<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"
不同 server 配置的区别:
- 体外目录,支持文件上传(例:
./solon-cloud/
) - 资源目录,则不支持(例:
classpath:META-INF/solon-cloud/
)
提醒:
- 通过 "...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)、云端跟踪服务(本地模拟)
一个空服务。只为已有调用不出错