Solon rpc 1.3.1 发布,推出Cloud接口与配置规范

Solon 是一个微型的Java RPC开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,3500多次的commit;内核保持0.1m的身材,超高的跑分,良好的使用体验。支持:Rpc、Rest api、Mvc 多种开发模式。

Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。

所谓更小:

内核0.1m,最小开发单位0.2m(相比Dubbo、Springboot项目包,小到可以乎略不计)

所谓更快:

本机helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test》

所谓更自由:(代码操控自由) // 除了注入模式之外,还可以按需手动 // //手动获取配置 Map<String,String> db = Solon.cfg().getMap("db"); //手动获取容器里的Bean UserService userService = Aop.get(UserService.class); //手动监听http post请求 Solon.global().post("/user/update", x-> userService.updateById(x.paramMap())); //手动添加个RPC服务 Solon.global().add("/rpc/", HelloService.class, true); 本次版本重大变更: 1、发布 Solon cloud 适配接口与配置规范

此规范的设计目的:为第三方微服务组件适配提供统一的接口与配置规范。从而为第三方的微服务组件适配和使用更具标准性和统一性;同时可以让开发者无缝切换不同的第三方组件。

本次发布的接口与配置规范主要包括:

配置服务相关的接口与配置

注册与发现服务相关的接口与配置

事件总线相关的接口与配置

日志总线相关的接口与配置

2、发布配置服务适配组件 组件 说明 备注
consul-solon-plugin   对consul的适配   使用一级目录做为对应的配置组  
nacos-solon-plugin   对nacos的适配    
water-solon-plugin   对water的适配    

特性说明:

1-支持配置启动时加载

solon.app: group: demo #应用组 //也是配置服务使用的默认组 name: helloapp #应用名 //发现服务使用的应用名 solon.cloud.consul: #consul,可以换成 nacos 或 water server: 127.0.0.1 #consul 服务地址 config: loadKey: "test.properties" #启动时加载的配置,并保持时实更新***(会成为Solon.cfg()的一部份) // //使用加载的 test.properties 里的配置 // @Configuration public class DemoConfig { @Bean public DataSource ds(@Inject("${db1}") HikariDataSource ds){ return ds; } }

2-支付配置订阅

/** * 配置订阅(获取配置的时实刷新) */ @CloudConfig("demo_cache_header") public class DemotConfigHandler implements CloudConfigHandler { @Override public void handler(Config config) { System.out.println(config.value()); } }

3-支持云配置直接注入,及自动刷新机制(非单例不需要开启自动刷新机制)

@Controller public class DemoController { @CloudConfig(value = "demo_header", autoRefreshed = true) String demo_header; }

附演示源码:https://gitee.com/noear/solon_rpc_demo/tree/main/demo21.solon-cloud-consul

3、发布注册与发现服务适配组件 组件 说明
consul-solon-plugin   对consul的适配  
nacos-solon-plugin   对nacos的适配  
water-solon-plugin   对water的适配  

应用示例:

1-Solon rpc 服务注册

solon.app: group: demo name: helloapi #发现服务使用的应用名(在Demo,将被NimaClient引用) solon.cloud.consul: server: 127.0.0.1 #consul服务地址 @Mapping("/rpc/") @Component(remoting = true) public class HelloServiceImp implements HelloService { @Override public String hello() { return "remote: hello"; } }

2-Solon rpc 服务发布

solon.app: group: demo name: helloapp solon.cloud.consul: server: 127.0.0.1 @Controller public class DemoController { // // "helloapi" 对应注册的服务 // @NamiClient(name = "helloapi") HelloService helloService; @Mapping("/test") public String home(String msg) throws Exception { return helloService.hello(); } }

附演示源码:https://gitee.com/noear/solon_rpc_demo/tree/main/demo21.solon-cloud-consul

4、发布事件总线服务适配组件 组件 说明 备注
rabbitmq-solon-plugin   对rabbitmq消息队列的适配    
rocketmq-solon-plugin   对rocketmq消息队列的适配   定时事件不能超过2小时  
water-solon-plugin   对water消息中心的适配    

特性说明:

支持定时事件

只要订阅了主题,各消费组都能收到

当前处理失败后逐级延后重试,直到最终成功;但不影响别的消费组

消费组由solon.app.group + solon.app.name 自动组合而成;或通过 solon.cloud.{组件}.event.queue 指定

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfffs.html