Solon 1.6.33 釋出,更現代感的應用開發框架

劉之西東發表於2022-03-19

相對於 Spring Boot 和 Spring Cloud 的專案

  • 啟動快 5 ~ 10 倍
  • qps 高 2~ 3 倍
  • 執行時記憶體節省 1/3 ~ 1/2
  • 打包可以縮小到 1/2 ~ 1/10(比如,90Mb 的變成了 9Mb)

關於 Solon

Solon 是一個更現代感的應用開發框架,輕量、開放生態型的。支援 Web、Data、Job、Remoting、Cloud 等任何開發場景。

  • 強調,剋制 + 簡潔 + 開放 + 生態的原則
  • 力求,更小、更少、更快、更自由的體驗

目前有近130個生態外掛,含蓋了日常開發的各種需求。

本次主要更新

  • 增加 Session::sendAsync() 介面,便於支援跨執行緒發訊息
    • 外掛 solon.boot.jetty 的 weboskcet 增加支援
    • 外掛 solon.boot.undertow 的 weboskcet 增加支援
    • 外掛 solon.boot.websocket 的 weboskcet 增加支援
    • 外掛 solon.boot.smarthttp 的 weboskcet 增加支援
    • 外掛 solon.boot.socketd.jdksocket 的 socket 增加支援
    • 外掛 solon.boot.socketd.netty 的 socket 增加支援
    • 外掛 solon.boot.socketd.smartsocket 的 socket 增加支援
  • 增加 server.ssl.* 專屬ssl配置屬性
    • 外掛 solon.boot.jlhttp,增加 ssl 支援
    • 外掛 solon.boot.jetty,增加 ssl 支援
    • 外掛 solon.boot.undertow,增加 ssl 支援
  • 外掛 solon.schedule 新增 純手工控制能力
public class DemoApp {
    public static void main(String[] args) throws Throwable {
        Solon.start(DemoApp.class, args, app -> {
            //刪掉job
            app.get("/removeJob", (ctx) -> {
                String name = ctx.param("name");
                if (Utils.isNotEmpty(name)) {
                    JobManager.remove(name);
                }
            });
        });

        JobManager.add("job1", 1000 * 3, false, () -> {
            System.out.println("job1::" + LocalDateTime.now());
        });

        JobManager.add("job2", "0/10 * * * * ? *", false, () -> {
            System.out.println("job2::" + LocalDateTime.now());
        });

        JobManager.start();
    }
}
  • 外掛 dubbo-solon-plugin 的註解新增屬性模板支援
@Controller
public class DemoController{
    @Reference(group="${demo.group}")
    UserService userService;
    
    //...
}

  • 優化 Bean 的泛型基類在容器的註冊

進一步瞭解 Solon

專案地址

相關文章