对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.12 发布
Solon 是一个轻量的Java基础开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多种开发模式。短小而精悍!
Solon Cloud 是一系列的接口标准和配置规范,算是 Solon 的分布式开发套件方案。
快速了解Solon的材料:
《Solon 特性简集,相较于 Springboot 有什么区别?》
《Solon Cloud 分布式服务开发套件清单,感觉受与 Spring Cloud 的不同》
《Solon 生态插件清单》,目前已有100多个生态插件
所谓更小:
内核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、增加新的插件适配
- 添加 opentracing-solon-plugin 插件。可快速对接所有支持 opentracing 的链路跟踪产品。下面以 Jaeger 对接为例:
@Configuration
public class Config {
@Bean
public Tracer tracer() throws TTransportException {
Reporter reporter = new RemoteReporter.Builder()
.withSender(new UdpSender(AGENT_HOST, AGENT_PORT, 0))
.withFlushInterval(10)
.build();
return new JaegerTracer.Builder(Solon.cfg().appName())
.withReporter(reporter)
.withExpandExceptionLogs()
.withSampler(new ConstSampler(true)).build();
}
}
2、优化 Nami 内部结构(不影响外部调用)
- 优化 Nami Filter;改为链式过滤;并添加 Invocation 做为配套
- 拆分 Nami.Builder 为独立的 NamiBuilder 类
- 取消 Decoder, Encoder, Channel 对 Filter 的继承;改为更明确的 pretreatment 预处理接口
- 移动 Result 到 nami 一级包目录
- 简化 Naimi 的附件模式。改由 NamiAttachment 直接操控
总体来说,是简化和增强了 Nami 的过滤及附件能力。例:
//过滤能力
@Component
public class NamiFilterAdapter implements Filter { //这是Nami的过滤器接口
@Override
public Result doFilter(Invocation inv) throws Throwable {
inv.headers.put("token","1");
System.out.println("我给 Nami 加了个头信息!");
return inv.invoke();
}
}
//附件能力
@Controller
public class Demo {
@NamiClient
HelloService helloService;
@Mapping("/")
public void test() {
//添加附件:token=aaa (最终会做为 header 传给 server)
NamiAttachment.put("Token","5643c10c-87c3-4b7e-bd26-30cf2456aad8");
//helloService 的 remoting server ,需要有 token 认证
helloService.hello("noear");
}
}
3、增强部分接口及相关配置能力
- 增加 Solon Filter 序号位支持
- 增加 Solon Props::getByParse 接口,可应对组合配置需要。例:
Hello ${user.name}这样的配置需求 - 增加 CloudJobHandler 接口,让 Job Handler 更清晰些
- 增加 Solon Auth 新注解:
@AuthIp,@AuthPath支持 - 增加 CloudConfig 的注解内容,支持 ${xx}yyy 风格配置
- 增加 CloudEvent 的注解内容,支持 ${xx}yyy 风格配置
- 增加 CloudJob 的注解内容,支持 ${xx}yyy 风格配置
- 增加 CloudBreaker 的注解内容,支持 ${xx}yyy 风格配置
- 增加 @Component 单例组件通过 EventBus 扩展的机制
- 增加 env 启动参数切换配置文件;例:java -jar xxx.jar -env=test
- 标注 Utils::throwableWrap 函数为弃用,并调整内部异常包装处理
- 限制 DataThrowable 被最终渲染
- 取消 WarnThrowable
4、日志对接进一步增加
Solon 的日志体系,除自有 slf4j 实现之后;还适配有 Logback 的添加器;现增加 Log4j 添加器的适配。
附:项目地址
附:入门示例
- Solon 入门教程示例:https://gitee.com/noear/solon_demo
- Solon Rpc 入门教程示例:https://gitee.com/noear/solon_rpc_demo
- Solon Cloud 入门教程示例:https://gitee.com/noear/solon_cloud_demo
- Solon 进阶教程示例:https://gitee.com/noear/solon_advance_demo
对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.12 发布的更多相关文章
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.8 发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.14 发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.8 发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.37 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.4.1 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.33 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.35 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.2 重要发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- spring boot / cloud (三) 集成springfox-swagger2构建在线API文档
spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 前言 不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...
随机推荐
- @unittest.skip(reason):强制跳转。reason是跳转原因
在执行测试用例时,有时候有些用例是不需要执行的,那我们怎么办呢?难道删除这些用例?那下次执行时如果又需要执行这些用例时,又把它补回来?这样操作就太麻烦了. unittest提供了一些跳过指定用例的方法 ...
- ltrim的思考
ltrim的思考 说明 string ltrim( string $str[, string $character_mask] ) 删除字符串开头的空白字符(或其他字符) 案例1 $test = &q ...
- liunx中文件夹不能删除怎么操作
1.运行rm -rf 文件名称 2.不能删除对应文件并且提示"rm: cannot remove './.user.ini': Operation not permitted" 操 ...
- 如何在centos上配置802.1Q VLAN标记,linux单网卡多vlan多网段Ip配置案例
介绍 VLAN使将大型网络分成较小且易于管理的网络成为可能.802.1Q是所有供应商都在其网络设备中实施的标准.某些交换机能够将多个VLAN分配给单个网络端口.使用此功能,您可以将多个VLAN分配给单 ...
- WM_PAINT 与 WM_ERASEBKGND消息的深入分析
当WM_PAINT消息不是由函数InvalidateRect产生的时(即通过最大话,最小化,移动,下拉菜单等),系统会先产生连续产生若干个WM_ERASEBKGND消息,紧接着在产生WM_PAINT消 ...
- windows调起git bash执行sh脚本定时统计git仓库代码量
本来挺简单的一个东西硬是弄了两天 心力交瘁 找了网上不少资料 整理一下发给大家 首先是统计每个人的代码量的git命令 在网上找的 我这里做了以下修改 git log --format='%aN'|so ...
- 人人都爱Kubernetes,Docker难道就不香了吗?
开篇 提起Docker,有很多人第一印象会认为它就是一个虚拟化容器,所以大家特别容易陷入到一种误区,就是觉得Docker只是在Linux操作系统之上又增加了一层,就跟OS上跑了一个VMWare一样.D ...
- 《我常用的股票投资工具与网站》v2.0
<我常用的股票投资工具与网站>v2.0 王大海 职业投资,抽空做一点分享. 661 人赞同了该文章 "少年你好,想不到你竟有如此因缘际会看到这里.我看你骨骼精奇,定是万中无一的交 ...
- Docker——Registry 通过Shell管理私有仓库镜像
使用方法: 复制代码保存为 image_registry.sh sh image_registry.sh -h #查看帮助 HUB=10.0.29.104:5000 改为自己的地址 #!/bin ...
- 精确报告Linux内存使用情况实用脚本:ps_mem
精确报告Linux内存使用情况实用脚本:ps_mem 2019-09-06 12:45 ps_mem内存工具 ps_mem 是一个可以帮助我们精确获取 Linux 中各个程序核心内存使用情况的简单 p ...