Spring Boot 轻量替代框架 Solon 1.3.29 发布

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

内容简介:Solon 是一个微型的Java开发框架。项目2018年启动,参考过大量前人作品;内核0.1m的身材,超高的跑分,以及良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。 Solon 强调:克制 + ...

Solon 是一个微型的 Java 开发框架。项目2018年启动,参考过大量前人作品;内核0.1m的身材,超高的跑分,以及良好的使用体验。支持:RPC、REST API、MVC、WebSocket、Socket 等多种开发模式。

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

替代?那有什么异同之处?

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

《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 cloud event 增加通道概念,以支持不同消息队列产品共用

例如一个IoT项目的应用场景:业务消息用RabbitMQ,设备消息用 MQTT。

配置

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

solon.cloud.mqtt:
  server: "tcp://localhost:41883"   #mqtt服务地址(默认通道不用命名)

solon.cloud.rabbitmq:
  server: localhost:5672   #rabbitmq 服务地址
  username: root           #rabbitmq 链接账号
  password: 123456         #rabbitmq 链接密码
  event:
    channel: "biz"      #对事件服务进行通道命名

生产端代码

@Controller
public class TestController {
    @Mapping("/test")
    public Object test(String msg) {
        //发送默认通道
        return CloudClient.event().publish(new Event("hello.demo", msg).qos(1).retained(true));
    }

    @Mapping("/test2")
    public Object test2(String msg) {
        //发送到biz通道(发送时,增加 channel 信息即可)
        return CloudClient.event().publish(new Event("hello.demo2", msg).channel("biz"));
    }
}

消费端代码

//订阅并消费默认通道的事件(为了演示把mqtt的消息订阅过来了)
@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));
        return true;
    }
}

//订阅并消费biz通道的事件
@CloudEvent(value = "hello.demo2", channel = "biz")
public class EVENT_hello_demo2 implements CloudEventHandler {
    @Override
    public boolean handler(Event event) throws Throwable {
        System.out.println(LocalDateTime.now() + ONode.stringify(event));
        return true;
    }
}

2、Solon cloud breaker 断路器增加动态配置支持

配置

solon.cloud.local:
  breaker:
    hello: 1   #断路器名称与阀值

演示代码

@Controller
public class DemoController {

    //此处安排了个断路器(即限流器),如果断路时,会返回HTTP 403状态
    @CloudBreaker("hello")
    @Mapping("/hello")
    public String hello() {
        return "hello";
    }


    @Mapping("/reset")
    public void reset() {
        //重新设置断路器的阀值(此配置,也可能过配置服务管理;动态更新)
        Solon.cfg().setProperty("solon.cloud.local.breaker.hello", "10");
    }
}

3、Solon logging 增加支持有格式化或无格式化的异常打印

Solon logging 是基于 slf4j 的个实现方案,内部对接 Solon cloud log service 接口,从而将日志写到分布式日志服务。


//无格式化场景
log.error("Error: ", e);

//格式化场景
log.error("Error: {}", e);

4、增加路由组件切换支持


public class Demo10App {
    public static void main(String[] args) {
        Solon.start(Demo10App.class, args, app -> {
            Router router = new RouterCustom();

            //替换路由器
            app.routerSet(router);
        });
    }
}

5、@Init 增加延时处理机制,并默认为 true


@Component
public class Demo {
    @Init
    public void init(){
    }
}

6、优化session.jwt组件内部机制

附:入门示例


以上所述就是小编给大家介绍的《Spring Boot 轻量替代框架 Solon 1.3.29 发布》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Clean Architecture

Clean Architecture

Robert C. Martin / Prentice Hall / 2017-9-20 / USD 34.99

Practical Software Architecture Solutions from the Legendary Robert C. Martin (“Uncle Bob”) By applying universal rules of software architecture, you can dramatically improve developer producti......一起来看看 《Clean Architecture》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具