En relación con los proyectos Spring Boot y Spring Cloud
- Arranque de 5 a 10 veces más rápido
- qps es de 2 a 3 veces mayor
- Ahorro de memoria en tiempo de ejecución 1/3 ~ 1/2
- El embalaje se puede reducir a 1/2 ~ 1/10 (por ejemplo, 90Mb se convierte en 9Mb)
Sobre Solón
Solon es un marco de desarrollo de aplicaciones más moderno, ligero, abierto y ecológico. Admite cualquier escenario de desarrollo como Web, Datos, Trabajo, Remoting, Nube, etc.
- Énfasis en los principios de moderación + simplicidad + apertura + ecología
- Esfuércese por una experiencia más pequeña, menos, más rápida y más libre
En la actualidad, existen cerca de 130 complementos ecológicos, que cubren diversas necesidades del desarrollo diario.
Esta importante actualización
- Agregar compatibilidad con la interfaz SocketContext::SessionState
@Controller
public class DemoController{
@Socket
@Mapping("/hello")
public String hello(Context ctx){
if(ctx.session("user") == null){
ctx.sessionSet("user", "noear");
}
return ctx.session("user");
}
}
- Agregar soporte de interfaz Session::pathNew()
- Agregue las interfaces SolonApp::listenBefore, SolonApp::listenAfter para proporcionar soporte para el filtrado de oyentes
public class DemoApp {
public static void main(String[] args) {
Solon.start(DemoApp.class, args, app -> {
app.listenBefore(new ListenerEmpty() {
@Override
public void onOpen(Session session) {
//修改ws的监听路径
if (session.path().startsWith("/xx/")) {
session.pathNew(session.path().substring(4));
}
}
});
});
}
}
- Agregue el complemento sa-token-solon-plugin para adaptarse a dao [esquema experimental]
- SaTokenDaoOfRedis
- SaTokenDaoOfSession
- Se agregó el complemento mybatis-plus-extension-solon-plugin
- El complemento solon.extend.sessionstate.jwt arroja ServiceConfigurationError
- Agregue CloudJobInterceptor para proporcionar un mecanismo de interceptación de trabajos
@Slf4j
public class CloudJobInterceptorImpl implements CloudJobInterceptor {
@Override
public void doIntercept(Job job, CloudJobHandler handler) throws Throwable {
long start = System.currentTimeMillis();
try {
handler.handle(job.getContext());
} catch (Throwable e) {
//记录带标签的日志
TagsMDC.tag0("job");
TagsMDC.tag1(job.getName());
log.error("{}", e);
throw e; //别吃掉
} finally {
//记录一个内部处理的花费时间
long timespan = System.currentTimeMillis() - start;
CloudClient.metric().addMeter(Solon.cfg().appName(), "job", timespan);
}
}
}
- Agregue CloudEventInterceptor para proporcionar un mecanismo de interceptación de eventos
//CloudEventInterceptor 与 CloudJobInterceptor 起到类型的作用
- Ajuste la configuración de manejo predeterminada de Gateway
- Ajuste CloudJobHandler como la interfaz obligatoria del trabajo, antes de que Handler pueda
- Ajuste HttpUtils para agregar soporte de cambio entre procesamiento corto y procesamiento largo