• Spring Boot & Cloud 轻量替代框架 Solon 1.3.37 发布


    Solon 是一个微型的Java开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Micro service、WebSocket、Socket 等多种开发模式。

    Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。

    快速了解Solon的材料:

    《Solon 特性简集,相较于 Springboot 有什么区别?》

    《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》

    《Solon 的想法与架构笔记》

    《Solon 框架入门》

    所谓更小:

    内核0.1m,最小的接口开发单位0.2m(相较于 Dubbo、Springboot 的依赖包,小到可以乎略不计)

    所谓更快:

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

    所谓更自由:(代码操控自由)

    // 除了注解模式之外,还可以按需手动
    //
    //手动获取配置(Props 为 Properties 增强版)
    Props db = Solon.cfg().getProp("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);
    
    //手动获取一个RPC服务消费端
    HelloService helloService = Nami.builder().create(HelloService.class);
    
    //手动为容器添加组件
    Aop.wrapAndPut(DemoService.class);
    

    本次版本主要变化:

    1、增加 solon.extend.jsr303 组件,支持 jsr303 bean验证能力

    Solon 原有的验证体系是基于 Context 的,基于方法或参数的验证。现在算是补齐了 Bean 或 Model 的验证能力。

    @Valid
    @Controller
    public class ValidController {
        //这是基于 context 的验证体系(可以批量验证参数)
        @NotZero({"val1", "val2"})
        @Mapping("nzero")
        public String nzero(int val1, int val2) {
            return "OK";
        }
    
        //这也是基于 context 的验证体系
        @Mapping("size")
        public String size(@Length(min = 2, max = 5, message = "测试") String val1,
                           @Length(min = 2, max = 5, message = "测试") String val2) {
            return "OK";
        }
    
        //这是基于 bean 的验证体系(@Validated,这个注解加上代表要验证这个模型参数)
        @Mapping("bean")
        public String bean(@Validated ValidModel model) {
            return "OK";
        }
    }
    
    //申明可验证的模型
    @Data
    public class ValidModel {
        @NotBlank(message = "手机号不能为空")
        private String mobile;
    
        @NotBlank(message = "密码不能为空")
        private String password;
    }
    

    2、增加 solon.cache.spymemcached 分布式缓存组件,提供 solon cache 的实现支持

    配置:(Solon 的缓存注解,默认是不需要配置缓存服务的。默认会提供本地缓存服务)

    solon.app:
      name: demoapp
      group: demo
      
    cache1:
      server: memcached.water.io:11211  #具体需要哪些配置,可以看下 MemCacheService 的类实现
      user: memcached
    

    代码:

    //组件配置
    @Configuration
    public class Config {
        @Bean
        public CacheService cache(@Inject("${cache1}") MemCacheService cache){
            return cache;
        }
    }
    
    //使用
    @Controller
    public class CacheController {
        /**
         * 执行结果缓存10秒,并添加 test_${label} 和 test1 标签
         * */
        @Cache(tags = "test_${label},test1" , seconds = 60)
        @Mapping("/cache/")
        public Date test(int label) {
            return new Date();
        }
    
        /**
         * 执行后,清除 标签为 test  的缓存(不过,目前没有 test 的示签...)
         * */
        @CachePut(tags = "test1")
        @Mapping("/cache/update")
        public Date update() {
            return new Date();
        }
    
        /**
         * 执行后,清除 标签为 test_${label}  的缓存
         * */
        @CacheRemove(tags = "test_${label}")
        @Mapping("/cache/remove")
        public String remove(int label) {
            return "清除成功-" + new Date();
        }
    }
    

    3、增加 solon.cache.jedis 分布式缓存组件

    使用同上

    4、优化 solon.logging 内部结构,扩展更自由

    例,配置一个新的日志添加器,指定类名,指定级别:

    solon.logging.appender:
      test:
        class: demo.TestAppender
        level: TRACE
    

    定义日志添加器:

    public class TestAppender extends AppenderBase {
        @Override
        public void append(LogEvent logEvent) {
            System.out.println("[Test] " + logEvent.getContent());
        }
    }
    

    附:生态组件清单

    Nami 插件(Solon rpc client) 说明
    nami插件:: 说明
    nami.coder.fastjson fastjson的编解码适配
    nami.coder.hessian hessian的编解码适配
    nami.coder.snack3 snack3的编解码适配
    nami.channel.http.okhttp okhttp的通道适配
    nami.channel.socketd socketd的通道适配(适配后,可使用org.noear:solon.sockted.client.* 做为客户端)
    Solon 插件 说明
    boot插件:: 说明
    org.noear:solon.boot.jlhttp* boot插件,对jlhttp适配,提供http服务(不自带session state)
    org.noear:solon.boot.jetty* boot插件,对jetty适配,提供http服务(网友@khb提供)
    org.noear:solon.extend.jetty.jsp 扩展插件,为jetty添加jsp支持(不建议使用jsp)(网友@khb提供)
    org.noear:solon.boot.undertow* boot插件,对undertow适配,提供http服务(网友@tyk提供)
    org.noear:solon.boot.websocket boot插件,对java-websocket适配,提供websocket服务
    org.noear:solon.extend.undertow.jsp 扩展插件,为undertow添加jsp支持(不建议使用jsp)(网友@tyk提供)
    静态文件支持插件:: 说明
    org.noear:solon.extend.staticfiles 扩展插件,添加静态文件支持(监视 resources/static 文件夹)
    切面支持插件:: 说明
    org.noear:solon.extend.aspect 扩展插件,添加Dao、Service注解支持;进而支持事务和缓存注解
    数据操作支持插件:: 说明
    org.noear:solon.extend.data 扩展插件,实现事务和缓存的注解支持
    验证支持插件:: 说明
    org.noear:solon.extend.validation 扩展插件,实现验证的注解支持
    Yaml配置支持插件:: 说明
    org.noear:solon.extend.properties.yaml 扩展插件,添加yml配置文件支持
    Data插件:: 说明
    org.noear:solon.extend.data 扩展插件,添加事件(@Tran)、缓存(@Cache)支持
    Cloud插件:: 说明
    org.noear:solon.cloud 扩展插件, 添加Solon Cloud 的接口定义及配置规范
    Validation插件:: 说明
    org.noear:solon.extend.validation 扩展插件,添加验证(@Valid)支持
    Cache插件:: 说明
    org.noear:solon.cache.spymemcached 扩展插件,完成memcached的缓存服务适配
    org.noear:solon.solon.cache.jedis 扩展插件,完成redis的缓存服务适配
    jsr插件:: 说明
    org.noear:solon.extend.jsr303 扩展插件,完成jsr303 bean 验证支持
    org.noear:solon.extend.jsr330 扩展插件,完成jsr330 组件与注入支持
    跨域插件:: 说明
    org.noear:solon.extend.cors 扩展插件,完成web跨域注解支持
    Session插件:: 说明(可将boot插件的session state服务,自动换掉)
    org.noear:solon.extend.sessionstate.jwt 扩展插件,分布式session(基于jwt构建)
    org.noear:solon.extend.sessionstate.local 扩展插件,本地session
    org.noear:solon.extend.sessionstate.redis 扩展插件,分布式session(其于redis构建)
    日志插件:: 说明
    org.noear:solon.logging 扩展插件,添加日志支持
    org.noear:solon.logging.impl 扩展插件,添加Slf4j日志支持
    序列化插件:: 说明
    org.noear:solon.serialization.fastjson* 序列化插件,对 fastjson 适配,提供json视图输出 或 序列化输出
    org.noear:solon.serialization.snack3* 序列化插件,对 snack3 适配,提供json视图输出 或 序列化输出
    org.noear:solon.serialization.hession* 序列化插件,对 hession 适配,提供 hession 序列化输出
    org.noear:solon.serialization.jackson 序列化插件,对 jackson 适配,提供json视图输出 或 序列化输出
    org.noear:solon.serialization.protostuff 序列化插件,对 protostuff 适配,提供protostuff视图输出 或 序列化输出
    视图插件:: 说明(可置多个视图插件)
    org.noear:solon.view.freemarker* 视图插件,对 freemarker 适配,提供html视图输出
    org.noear:solon.view.jsp 视图插件,对 jsp 适配,提供html视图输出
    org.noear:solon.view.velocity 视图插件,对 velocity 适配,提供html视图输出
    org.noear:solon.view.thymeleaf 视图插件,对 thymeleaf 适配,提供html视图输出
    org.noear:solon.view.beetl 视图插件,对 beetl 适配,提供html视图输出
    org.noear:solon.view.enjoy 视图插件,对 enjoy 适配,提供html视图输出
    Solon SocketD 插件 说明
    SocketD boot插件:: 说明
    org.noear:solon.boot.socketd.jdksocket sockted boot插件,对jdksocket适配,提供socketd服务
    org.noear:solon.boot.socketd.netty sockted boot插件,对netty适配,提供socketd服务
    org.noear:solon.boot.socketd.rsocket sockted boot插件,对rsocket适配,提供socketd服务
    org.noear:solon.boot.socketd.smartsocket sockted boot插件,对smart-socket适配,提供socketd服务
    org.noear:solon.boot.socketd.websocket sockted boot插件,对websocket适配,提供socketd服务
    SocketD client 插件:: 说明
    org.noear:solon.sockted 扩展插件,sockted 协议的编解码、会话等基础支持
    org.noear:solon.sockted.client.jdksocket 扩展插件,sockted 协议的 jdksocket 客户端适配
    org.noear:solon.sockted.client.netty 扩展插件,sockted 协议的 netty 客户端适配
    org.noear:solon.sockted.smartsocket 扩展插件,sockted 协议的 smartsocket 客户端适配
    org.noear:solon.sockted.websocket 扩展插件,sockted 协议的 websocket 客户端适配
    其它扩展插件 说明
    org.noear:beetlsql-solon-plugin beetlsql 适配插件
    org.noear:mybatis-solon-plugin mybatis 适配插件
    org.noear:mybatis-sqlhelper-solon-plugin mybatis-sqlhelper 适配插件
    org.noear:weed3-solon-plugin weed3 适配插件
    org.noear:cron4j-solon-plugin cron4j 适配插件
    org.noear:quartz-solon-plugin quartz 适配插件
    org.noear:dubbo-solon-plugin dubbo 适配插件
    org.noear:feign-solon-plugin feign 适配插件
    org.noear:hasor-solon-plugin hasor 适配插件
    org.noear:luffy-solon-plugin luffy 适配插件
    org.noear:sureness-solon-plugin sureness 适配插件
    org.noear:solon-springboot-starter springboot 适配插件
    Solon Cloud 插件 说明
    org.noear:consul-solon-plugin consul 适配插件(支持Solon cloud 配置服务、注册与发现服务)
    org.noear:nacos-solon-plugin nacos 适配插件(支持Solon cloud 配置服务、注册与发现服务)
    org.noear:zookeeper-solon-plugin zookeeper 适配插件(支持Solon cloud 配置服务、注册与发现服务)
    org.noear:water-solon-plugin water 适配插件(支持Solon cloud 配置、注册与发现、事件、日志、跟踪、等服务)
    org.noear:rabbitmq-solon-plugin rabbitmq 适配插件(支持Solon cloud 事件总线服务)
    org.noear:rocketmq-solon-plugin rocketmq 适配插件(支持Solon cloud 事件总线服务)
    org.noear:mqtt-solon-plugin mqtt 适配插件(支持Solon cloud 事件总线服务)
    org.noear:kafka-solon-plugin kafka 适配插件(支持Solon cloud 事件总线服务)
    org.noear:guava-solon-plugin guava 适配插件(支持Solon cloud 融断服务)
    org.noear:sentinel-solon-plugin sentinel 适配插件(支持Solon cloud 融断服务)
    org.noear:semaphore-solon-plugin semaphore 适配插件(支持Solon cloud 融断服务)
    org.noear:aliyun-oss-solon-plugin aliyun-oss 适配插件(支持Solon cloud 分布式文件服务)
    org.noear:aws-s3-solon-plugin aws-s3 适配插件(支持Solon cloud 分布式文件服务)
    org.noear:snowflake-id-solon-plugin snowflake 算法适配插件(支持Solon cloud 分布式ID服务)

    附:项目地址

    附:入门示例

  • 相关阅读:
    省赛总结
    factorial
    poj 3842 An Industrial Spy
    最近我这是怎么了
    U盘分区的方法
    没事做贴个代码,判断是否素数,顺便打个素数表(非原创)。
    [转]ubuntu 安装code blocks全记录
    zoj 2312
    (转)Enterprise Library系列文章回顾与总结
    分布式缓存系统Memcached简介与实践
  • 原文地址:https://www.cnblogs.com/noear/p/14764064.html
Copyright © 2020-2023  润新知