Java RPC 框架 Solon 1.3.1 发布,推出 Cloud 接口与配置规范

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

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

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消息中心的适配  

特性说明:

  1. 支持定时事件
  2. 只要订阅了主题,各消费组都能收到
  3. 当前处理失败后逐级延后重试,直到最终成功;但不影响别的消费组

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

应用示例:

solon.app:
  group: demo       #配置服务使用的默认组
  name: helloconsumer    #发现服务使用的应用名

solon.cloud.rocketmq:
  server: localhost:5672   #rabbitmq 服务地址
  username: root           #rabbitmq 链接账号
  password: 123456         #rabbitmq 链接密码
//
//消费者:订阅事件
//
@CloudEvent("hello.demo")
public class EVENT_hello_demo implements CloudEventHandler {
    @Override
    public boolean handler(Event event) throws Throwable {
        //业务处理
        System.out.println(LocalDateTime.now() + ONode.stringify(event));
        
        //如果成功返回true,否则为false(之后会延时再派送)
        return true;
    }
}


//
// 发产者:发布事件
//
@Controller
public class DemoController {
    @Mapping("/test")
    public Object test(String msg) {
        if(Utils.isEmpty(msg)){
            msg = "demo2";
        }

        //发布事件
        Event event = new Event("hello.demo", msg);
        return CloudClient.event().publish(event);
    }
}

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

5、发布日志总线服务适配组件

  • water-solon-plugin(对water日志的适配)

特性说明:

  1. 支持元信息描述(可语义操作)
@Controller
public class DemoController {

    CloudLogger logger = CloudLogger.get(TestController.class);

    @Mapping("/test")
    public void test(String msg) throws Exception {
        logger.info("我是好人:(");
        logger.info("我不是:{} \n\n {}", "坏人",12);
        logger.info(Tags.tag2("打卡"), "我是谁?");
    }
}

6、NamiClient 升级,与Solon cloud 规范更好的配合

新属性 说明 示例
url 完整的url地址 http://api.water.org/cfg/get/
     
group 服务组 water
name 服务名或负载均衡组件名(配合发现服务使用) waterapi
path 路径 /cfg/get/

注:旧的基于表达式的属性 uri,不再使用

附1: 统一的服务适配接口

服务接口 说明 已支持适配组件
CloudConfigService 配置服务接口 consul-solon-plugin、nacos-solon-plugin、water-solon-plugin
CloudDiscoveryService 发现服务接口 consul-solon-plugin、nacos-solon-plugin、water-solon-plugin
CloudEventService 事件总线接口 water-solon-plugin、rabbitmq-solon-plugin、rocketmq-solon-plugin
CloudLogService 日志总线接口 water-solon-plugin

附2:统一的服务配置规范

注:具体配置时,用框架名替代@@符

属性说 说明 框架可使用情况
solon.cloud.@@.server 服务地址(ip:port) nacos、consul、water
solon.cloud.@@.token 链接令牌 consul
solon.cloud.@@.username 链接用户名 nacos
solon.cloud.@@.password 链接密码 nacos
solon.cloud.@@.alarm 造警接收号 water
     
solon.cloud.@@.config.enable 配置服务启用(默认:true) nacos、consul、water
solon.cloud.@@.config.server 服务地址(ip:port) nacos、consul、water
solon.cloud.@@.config.loadGroup 需要启动时加载的配置组 nacos、water
solon.cloud.@@.config.loadKey 需要启动时加载的Key nacos、consul、wate
solon.cloud.@@.config.refreshInterval 配置刷新间隔 consul
     
solon.cloud.@@.discovery.enable 注册与发现服务启用(默认:true) nacos、consul、water
solon.cloud.@@.discovery.server 服务地址(ip:port) nacos、consul、water
solon.cloud.@@.discovery.tags 服务标签 consul
solon.cloud.@@.discovery.healthCheckPath 服务健康检查路径 consul、water
solon.cloud.@@.discovery.healthCheckInterval 服务健康检查间隔时间 consul
solon.cloud.@@.discovery.healthDetector 服务健康上报指标 consul
solon.cloud.@@.discovery.refreshInterval 服务发现刷新间隔 consul
     
solon.cloud.@@.event.enable 事件总线服务(默认:true) water、rabbitmq、rocketmq
solon.cloud.@@.event.server 服务地址(ip:port) water、rabbitmq、rocketmq
solon.cloud.@@.event.exchange 交换机或关系组 rabbitmq、rocketmq
solon.cloud.@@.event.queue 指定队列 rabbitmq、rocketmq
solon.cloud.@@.event.hostname 指定接收域 water
solon.cloud.@@.event.seal 事件签名 water
     
solon.cloud.@@.log.enable 日志总线服务(默认:true) water
solon.cloud.@@.log.server 服务地址(ip:port) water
solon.cloud.@@.log.default 日志默认记录器 water

以上所述就是小编给大家介绍的《Java RPC 框架 Solon 1.3.1 发布,推出 Cloud 接口与配置规范》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

The Web Designer's Idea Book

The Web Designer's Idea Book

Patrick Mcneil / How / 2008-10-6 / USD 25.00

The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具