JAVA 分类

一文了解Netty整体流程 有更新!

Netty 的整体流程相对来说还是比较复杂的,初学者往往会被绕晕。所以这里总结了一下整体的流程,从而对 Netty 的整体服务流程有一个大致的了解。从功能上,流程可以分为服务启动、建立连接、读取数据、业务处理、发送数据、关闭连接以及关闭服务。

阅读全文 »

优雅地记录http请求和响应的数据

经常会遇到需要处理http请求以及响应body的场景。而这里比较大的一个问题是servlet的requestBody或responseBody流一旦被读取了。就无法二次读取了。针对这个问题,spring本身提供了解决方案,即ContentCachingRequestWrapper/ContentCachingResponseWrapper。

阅读全文 »

深入剖析Springboot内置容器Undertow初始化流程

由于种种原因,需要在springboot内置容器为undertow的环境下对servlet初始化做一些扩展工作。
我们都知道springMVC中的DispatcherServlet,而它是继承于FrameworkServlet这个类的。在FrameworkServlet这个类中,通过initServletBean这个方法去初始化一些servlet所需要的bean。

阅读全文 »

全链路中的数据透传

在微服务的应用场景下,服务之间可以通过各种方式与协议进行交互,同时整条链路也会变得比较长。与此同时,我们会希望一些数据在整条链路中进行透传,比如说用作对普通 api 参数的动态补充、链路压测标识或者灰度发布标识等。

阅读全文 »

浅析高性能序列化协议Kryo

Kryo是一个高性能的序列化/反序列化工具,由于其变长存储特性并使用了字节码生成机制,拥有较高的运行速度和较小的体积,在某些场景中成为了除Json、Protobuf之外的选择。

阅读全文 »

关于Undertow和RxNetty的一次错误排查

undertow是一个快速高性能的容器。但在springboot中集成undertow作为内置容器后,测试我司RPC框架序列化扩展的时候却发生了错误。客户端报的异常,仅仅是判断出报了一个400 BadRequest,没有其他任何有效信息。

阅读全文 »