Netty

这份书单,想要晋级高级Java工程师的朋友值得一看!

时光毁灭记忆、已成空白 提交于 2020-07-24 18:44:39
点击蓝色“程序员书单”关注我哟 加个“星标”,每天带你读好书! ​ 经过了10多年的发展,Java Web从开发框架到社区都已经非常成熟,很多程序员都可以通过使用框架很快速地搭建起一个Java Web应用,特别是近几年SpringBoot大热,干脆连配置都不需要了解了,直接一键式编译部署运行,让Java工程师的入门成本变得越来越低。 但于此同时,互联网公司对于Java的应用场景也在不断地升级换代,从单机部署再到分布式,从SOA再到微服务,Java后端技术栈变得更加庞大,对于工程师的要求也越来越高,特别是对于大公司来说更是如此,也正因为如此,对Java工程师的考察已经不限于Java Web的那套东西了,企业往往会提出更高的要求,比如需要你能够熟练使用设计模式,了解Java并发编程和JVM调优,甚至是了解分布式技术、微服务以及中间件等等。 今天的这份书单并不针对某一种技术,而是想介绍一些一些Java进阶方面的书籍,其中包括Java的一些编码规范,代码最佳实践,以及调优指南,另外还介绍了一些Java编程的黑科技,比如Java异步编程,相信这些书籍对你的Java进阶学习会有所帮助。 Java进阶系列书单 ​ 阿里巴巴Java开发手册 《阿里巴巴Java开发手册》的愿景是码出高效,码出质量。它结合作者的开发经验和架构历程,提炼阿里巴巴集团技术团队的集体编程经验和软件设计智慧

阿里大牛总结的Netty最全常见面试题,面试再也不怕被问Netty了

对着背影说爱祢 提交于 2020-07-23 18:51:43
Netty 总算总结完了,小编 也是长舒了一口气。有太多读者私信我让我总结 Netty 了,因为经常会在面试中碰到 Netty 相关的问题。 全文采用大家喜欢的与面试官对话的形式展开。 如果大家觉得 小编 总结的不错的话,不妨转发分享鼓励一下! 推荐大家看看这个Netty教程: 全网最权威的Netty底层原理讲解!阿里P8架构师用300分钟让你精通Netty。 概览: Netty 是什么? 为什么要用 Netty? Netty 应用场景了解么? Netty 核心组件有哪些?分别有什么作用? EventloopGroup 了解么?和 EventLoop 啥关系? Bootstrap 和 ServerBootstrap 了解么? NioEventLoopGroup 默认的构造函数会起多少线程? Netty 线程模型了解么? Netty 服务端和客户端的启动过程了解么? Netty 长连接、心跳机制了解么? Netty 的零拷贝了解么? Netty 是什么? ‍ 面试官 :介绍一下自己对 Netty 的认识吧!小伙子。 我 :好的!那我就简单用 3 点来概括一下 Netty 吧! Netty 是一个 基于 NIO 的 client-server(客户端服务器)框架,使用它可以快速简单地开发网络应用程序。 它极大地简化并优化了 TCP 和 UDP 套接字服务器等网络编程

Reusing of bytebuf in netty

僤鯓⒐⒋嵵緔 提交于 2020-06-23 09:31:54
问题 I have a http service with Netty. For a set of requests there is the same reply with just "{}" in http body. I had an idea to avoid creation of new buffer for each such request etc so I've just used: private static final ByteBuf EMPTY_REPLY = Unpooled.copiedBuffer("{}", CharsetUtil.UTF_8); in my SimpleChannelInboundHandler. It works only for first query, after it I start to have WARNING: Failed to mark a promise as success because it has failed already: DefaultChannelPromise@48c81b24(failure:

Issue with netty websocket headers name in lowercase

允我心安 提交于 2020-06-17 09:18:06
问题 I am using netty to implement a websocket server. The server needs to work with some old websocket clients libraries (written in other languages) out there which does not honour the HTTP header case insensitivity rule. I am facing a problem there. My inbound channel pipeline is pretty standard which looks like following HttpServerCodec -> HttpObjectAggregator -> HttpRequestBuilder ->WebSocketServerProtocolHandler -> WebSocketFrameAggregator -> CustomHandler In netty version 4.1.23.Final I see

java.lang.UnsupportedOperationException: Reflective setAccessible(true) disabled

自作多情 提交于 2020-06-11 08:39:11
问题 When I run my Ktor application with gradle run then I've got the following exception: 19:21:11.795 [main] DEBUG io.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework 19:21:11.810 [main] DEBUG io.netty.util.internal.PlatformDependent0 - -Dio.netty.noUnsafe: false 19:21:11.810 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Java version: 11 19:21:11.811 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe:

java.lang.UnsupportedOperationException: Reflective setAccessible(true) disabled

大兔子大兔子 提交于 2020-06-11 08:39:09
问题 When I run my Ktor application with gradle run then I've got the following exception: 19:21:11.795 [main] DEBUG io.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework 19:21:11.810 [main] DEBUG io.netty.util.internal.PlatformDependent0 - -Dio.netty.noUnsafe: false 19:21:11.810 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Java version: 11 19:21:11.811 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe:

想开发IM集群?先搞懂什么是RPC!

ぃ、小莉子 提交于 2020-05-09 20:52:11
本文引用了后端技术指南针公众号“浅谈RPC那些事儿1”和即时通讯网的“即时通讯新手入门:快速理解RPC技术——基本概念、原理和用途”两篇文章的部分内容。 1、引言 经常有开发者在纠结怎么开发IM集群,虽然真正的使用人数,可能用个人电脑单机都能支撑。 你也许会说,明明不需要用到IM集群,干吗要自找麻烦?答曰:“老板说这个得有!”、“万一产品做成了,用户量达到百万、千万级呢?”,各种回答,反此种种。总之,IM集群就是得整一个(先甭管用不用的上...)。 当然,玩笑归玩笑,真正要做到可投入到生产级别的IM集群系统,难度还是相当大的。必竟IM这种长连接应用相比传统Http这种短连接应用太不标准。 我们以一个典型的IM聊天消息传输为例: 假设存在两个正在聊天的用户(用户A和用户B),当A连接的是IM集群中的IM实例1、B连接的是IM集群中的IM实例2,此时当用户A向用户B发送一条聊天消息时,这条消息应该如何传递呢? 我们梳理一下上面这个例子的消息流转过程: 1)IM聊天消息首先会由用户A发往IM实例1; 2)IM实例1会将此条消息转交给IM实例2; 3)IM实例2会将此条消息最终投递给连接在本实例上的用户B。 如上述流程所示,这就是一个IM集群系统中典型的聊天消息投递过程。 那么,这其中涉及到一个关键步骤:即第2)步中如何实现“IM实例1会将此条消息转交给IM实例2”? 此时

Dubbo

喜夏-厌秋 提交于 2020-05-09 20:27:15
1.Dubbo是什么? Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成。 RPC 指的是远程调用协议,也就是说两个服务器交互数据。 2.Dubbo的由来? 互联网的快速发展,Web应用程序的规模不断扩大,一般会经历如下四个发展阶段。 单一应用架构 当网站流量很小时,只需一个应用, 将所有功能都部署在一起即可。 垂直应用架构 当访问量逐渐增大,单一应用按照有业务线 拆成多个应用 ,以提升效率。 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免, 将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心 ,使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。 流动计算架构 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现, 此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率 。 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。 3.Dubbo的主要应用场景? 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本

ResourceLeakDetector.setLevel(PARANOID) is not producing resource leak logs

血红的双手。 提交于 2020-05-09 10:47:06
问题 I have a netty 4 http server Implemented. public void start() { System.out.println("In Start method"); try { ServerBootstrap b = new ServerBootstrap(); EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new HttpServerPipelineFactory()) .option(ChannelOption.SO_BACKLOG, 128) .childOption(ChannelOption.WRITE_BUFFER_WATER_MARK, WriteBufferWaterMark.DEFAULT)

reactor.netty.http.client.HttpClient reactor.netty.http.server.HttpServe r metrics

对着背影说爱祢 提交于 2020-05-08 18:55:13
6.7. Metrics HTTP客户端支持与 Micrometer 内置集成. 它使用前缀 reactor.netty.http.client 公开所有度量. 下表提供了HTTP客户端指标的信息: 指标名称 type description reactor.netty.http.client.data.received DistributionSummary 接收到的数据量,以字节为单位 reactor.netty.http.client.data.sent DistributionSummary 发送的数据量(以字节为单位) reactor.netty.http.client.errors Counter 发生的错误数 reactor.netty.http.client.tls.handshake.time Timer TLS握手花费的时间 reactor.netty.http.client.connect.time Timer 连接到远程地址所花费的时间 reactor.netty.http.client.address.resolver Timer 解析地址所花费的时间 reactor.netty.http.client.data.received.time Timer 消耗传入数据所花费的时间 reactor.netty.http.client.data.sent