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 发布的更多相关文章

  1. Spring Boot 轻量替代框架 Solon 1.3.15 发布

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  2. Spring Boot 轻量替代框架 Solon 1.3.18 发布

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  3. Spring Boot 轻量替代框架 Solon 1.3.20 发布

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

  4. Spring Boot 轻量替代框架 Solon 的架构笔记

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  5. Spring Boot 轻量替代框架 Solon 的架构笔记 - new

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  6. Spring Boot & Cloud 轻量替代框架 Solon 1.4.1 发布

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

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

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

  8. Spring Boot & Cloud 轻量替代框架 Solon 1.3.33 发布

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

  9. Spring Boot & Cloud 轻量替代框架 Solon 1.3.35 发布

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

随机推荐

  1. Java基础语法:变量与常量

    一.命名规范 所有变量.常量.方法.类 都使用英文单词 命名,要见名知意. 所有变量.方法 的命名都使用小驼峰法 :首字母小写的驼峰命名法.例如:sampleText 类 的命名都使用大驼峰法 :首字 ...

  2. JAVA基础(一)—— 基础类型与面向对象

    JAVA基础(一)--基础类型与面向对象 1 数据类型 基本类型 byte short int long float double boolean char n 8 16 32 64 32 64 tr ...

  3. 写了一个vue+antdv的后台管理模板

    1,项目简介 写在前面===>这是一个vue+antdv的后台管理模板 项目地址: https://github.com/BaiFangZi/vue-antd-manage 1.1,概述 ​ 最 ...

  4. MySQL:多表查询

    SELECT查询不但可以从一张表查询数据,还可以从多张表同时查询数据.查询多张表的语法是:SELECT * FROM <表1> <表2>,普通多表查询会获取M x N行记录,所 ...

  5. 如何进BAT,有了这个篇面试秘籍,成功率高达80%!!(附资料)

    多年前自己刚来北京找工作的时候,面了一个星期 面了七八家公司才拿到一个offer.而上次跳槽面了不到10家公司基本全过而且都给到了期望的薪资,本来自己在面试前没想到能够这么顺利,回想起来还是自己准备的 ...

  6. Python高级——多任务编程之线程

    转: Python高级--多任务编程之线程 文章目录 线程概念 1. 线程的介绍 2. 线程的概念 3. 线程的作用 多线程的使用 1. 导入线程模块 2. 线程类Thread参数说明 3. 启动线程 ...

  7. pytorch(17)学习率调整

    学习率调整 class _LRScheduler 主要属性 optimizer:关联的优化器 last_epoch:记录epoch数 bash_lrs:记录初始学习率 class _LRSchedul ...

  8. SSRF漏洞利用之Redis大神赐予shell

        0x00实验环境 1.centos靶机(IP为:192.168.11.205,桥接模式) 2.kali黑客攻击主机(IP为:192.168.172.129,NAT模式) 0x01实验原理 这段 ...

  9. 优秀的vue服务端渲染框架

    目前国内优秀的基于vue的ssr框架有minissr,可以在服务端生成html代码,有利于搜索引擎爬取. https://www.wechatmini.com/vue/minissr 使用方法可以参考 ...

  10. WPF 基础 - Window 启动动画

    <Window ... WindowStyle="None" AllowsTransparency="True" RenderTransformOrigi ...