抛弃Spring Cloud Gateway,得物 使用Netty架构100Wqps网关
得物技术团队在2021年初开始自研网关,并在2021年底完成了100W QPS的压测,替换了原有的Spring Cloud Gateway。这个新的网关采用了基于Netty的自研架构。
以下是一个简化的Netty网关处理器示例,用于处理HTTP请求:
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
public class HttpRequestHandler extends SimpleChannelInboundHandler<FullHttpRequest> {
@Override
protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) {
// 业务逻辑处理
// ...
// 响应
ctx.writeAndFlush(response);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
// 异常处理
ctx.writeAndFlush(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR))
.addListener(ChannelFutureListener.CLOSE);
}
}
这个示例展示了如何使用Netty处理HTTP请求。在实际应用中,你需要根据具体的业务需求和性能要求,进行详细设计和优化。例如,可以集成负载均衡、服务发现、认证授权、限流控制等功能。
为了达到100W QPS的性能,得物的网关还需要进行以下优化:
- 高性能的线程模型,适应高并发。
- 合理的内存管理,避免内存泄漏或者大量内存使用。
- 优化网络I/O模型,提高吞吐量。
- 合理的负载均衡策略,确保请求分配均匀。
- 实时监控,确保服务稳定性。
这些优化点都是在保障系统稳定性的前提下,尽可能地提高系统的吞吐量。
评论已关闭