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

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

内容简介: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 发布》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

人本界面

人本界面

(美)拉斯基(Jef Raskin) / 史元春 / 机械工业出版社 / 2004-1-1 / 28.0

如果我们想克服目前人机界面上的固有缺陷,就很有必要理解本书的教义;若无此愿望,读读也无妨。交互设计的许多重要方面此书并没有包括在内,因为许多文献中都已经有详尽的阐述。本书的意图是补充现有的界面设计的方法或预测未来。  本书概述了人机界面设计领域的研究成果,详细论证了界面设计思想应以认知学为基础,并考虑人类的心智特点,在指出当前界面设计中弊端的同时,提出了新产品开发的思路。本书集计算机科学、人体工程......一起来看看 《人本界面》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具