内容简介:Solon 是一个轻量的Java基础开发框架。强调,克制 + 简洁 + 开放的原则;力求,更小、更快、更自由的体验。支持:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多种开发模式。短小而精悍! Solo...
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- looter——超轻量级爬虫框架
- 工具 | 一个轻量级业务中台开发框架
- 轻量级API测试框架Pandaria
- bilibili 轻量级业务框架正式开源
- 轻量级 Web 框架 Gin 结构分析
- Golang轻量级-高并发socket框架
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Zen of CSS Design
Dave Shea、Molly E. Holzschlag / Peachpit Press / 2005-2-27 / USD 44.99
Proving once and for all that standards-compliant design does not equal dull design, this inspiring tome uses examples from the landmark CSS Zen Garden site as the foundation for discussions on how to......一起来看看 《The Zen of CSS Design》 这本书的介绍吧!
