![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Netty
文章平均质量分 65
水的精神
一件事,要么不做,要么做到极致。
展开
-
解密netty是怎么玩线程池
netty如此强大和优秀的通信框架,是如何封装和使用线程池的。 其实这一点我是非常的好奇,我们在使用netty的时候,似乎没有感受到哪里有线程池相关的操作。 这篇文章解密netty使用线程池的精妙绝伦的地方。netty中和线程池相关的东西 我截取了一份netty服务端的代码,如下: 上图中的EventLoopGroup实际上就是线程池,只不过netty是基于事件驱动的,它想要把一切都描述的和事件相关,所以它给线程池套上了一个事件马甲,然后叫做 “事件循...原创 2021-06-27 12:14:12 · 724 阅读 · 1 评论 -
一个超级简单的使用netty NIO实现服务端和客户端的栗子
前置条件IDEA开发工具 maven管理依赖 熟悉了netty的核心组件,看这个案例会爽一点。如果不是很清楚,可以看我的这篇文章:netty全部核心组件 另外这个案例我直接使用的韩顺平老师的案例。因为我写也是一样,我们就是为了学习,能CV的代码我就不一个一个敲了。这段代码本来注释已经比较多了,我自己也加了一部分的注释。引入maven依赖 先创建一个项目 在pom引入依赖,轻松搞定,netty给我们准好了一个大而全的包,不需要额外的引入其他的包。<de...原创 2021-06-26 18:46:12 · 442 阅读 · 1 评论 -
零拷贝你知道吗?你听说过吗?
面试官: 零拷贝知道吗? ..面试官:MMAP知道吗? 不知道..面试官: 回去等结果吧! 复制一个文件的内容到另外一个文件,有极好的处理方式,也有极差的处理方式。不过如果一般我们使用的就是极差的方式。 来看看应该如何做这个拷贝的优化,这需要用到linux内核的用户态和内核态切换的概念,以及一点点内核的知识。看看极差情况下的代码是如何写File file = new File("test.txt");RandomAccessFile raf = new...原创 2021-06-26 12:20:52 · 175 阅读 · 0 评论 -
关于netty的 ChannelHandler
在我的上一篇文章中有介绍netty的核心组件:Get netty的魅力 从核心组件到工作原理事件和channelHandle。事件又是怎么一回事呢,什么是netty中的事件?前边一直提到netty基于事件驱动。那么什么又是事件:举个栗子,还说上边发工资买新手机的栗子,其中买手机这个动作就是事件。考虑到扩展性,所有的动作成为是事件,实际上发了工资你不光能买手机,还能和同事出去撮一顿,还能买房子。那么对应程序中,处理业务逻辑,打印日志,等等操作就是事件,这些都由你来定义。而netty给我们实现好...原创 2021-06-26 11:09:46 · 211 阅读 · 0 评论 -
netty全部核心组件
看看netty为我们提供的核心组件一channel:netty中把一个端到端的通信定义为了通道。所谓的端包含但不限于硬件设备,文件。这是对通信的第一层抽象。通道也是一个连接。 回调:这个回调是netty的一个机制,我用生活的栗子来解释。理解下边的一句话:"等发工资了,就买一个新手机;如果有女朋友了,就带她去吃好吃的"。其中买手机和带女盆友吃好吃的是预定于好要做的事情,这就是netty中将要回调的事情。而发工资是实践驱动,如果不发工资,那么预定义好的事情都不能做。如果发工资这件事情发生了,那么就发生..原创 2021-06-26 00:20:06 · 849 阅读 · 0 评论 -
Get netty的魅力 从核心组件到工作原理
生活不只有眼前的苟且,还有远方的凑合。 工作不只有眼前的CRUD,还有远方的netty、linux内核、网络原理、1000+算法... 洗干净,排好队,一个一个来! 感受netty的魅力,很多知识来源于《netty》实战这本书。正文在努力生成中。必须要翻过的山:通信 这可能需要一些前置知识,比如网络原理,通信协议。 凡是线上运行的程序,需要有用户和服务器的交互,凡是有用户数据产生的事情,都要用到通信,都要用到传输。也就是说,如果你不想一直写CRUD,像通...原创 2021-06-25 06:56:17 · 308 阅读 · 1 评论 -
我用发工资和女朋友的栗子讲明白netty中的核心组件
看看netty为我们提供的核心组件channel:netty中把一个端到端的通信定义为了通道。所谓的端包含但不限于硬件设备,文件。这是对通信的第一层抽象。通道也是一个连接。 回调:这个回调是netty的一个机制,我用生活的栗子来解释。理解下边的一句话:"等发工资了,就买一个新手机;如果有女朋友了,就带她去吃好吃的"。其中买手机和带女盆友吃好吃的是预定于好要做的事情,这就是netty中将要回调的事情。而发工资是实践驱动,如果不发工资,那么预定义好的事情都不能做。如果发工资这件事情发生了,那么就发生回调.原创 2021-06-25 06:12:54 · 245 阅读 · 0 评论 -
用脑图构建netty知识脉络
这张脑图整理自《netty实战》其中书中的知识点都有覆盖到,书中的netty使用案例没有整理出来。Netty实战 Netty是什么? 是一款用于创建高性能网络应用程序的高级框架 异步的 事件驱动的 主要构件 Channel Java NIO的基本构造 数据传入或传出的载体 可以打开、关闭 可以连接、断开连接 Netty内部为每个Channel分配了一个EventLoop 回调 一个方法 这个方法的引用提供给另一个方法,以便后原创 2021-06-25 05:07:57 · 342 阅读 · 0 评论 -
为什么要手写RPC,不写行不行
1.为什么要手写RPC?2.为什么要用RPC?3.RPC是什么?4.怎么写RPC?5.我写RPC行不行?需要那些前置知识。什么是RPC,为什么要用它? 实际上这个问题是一个扫盲的。为了加深印象我还是说一下。RPC是时代的产物,是特定场景需求下的产物。 理解什么是RPC之前,我们先说一下为什么要使用RPC。不得不提的是单体应用到分布式应用的进步。RPC是远程过程调用,在分布式服务场景下,我们期望方便的完成跨服务之间的调用,我们都知道在单体应用下,我们的调用顶多是...原创 2021-06-23 08:37:45 · 304 阅读 · 1 评论 -
Netty模型
对于netty的模型,如下如。不过我自己的理解是:我们关注的点,是服务器如何处理非常多的请求的问题。所谓的BossGroup和workerGroup ,其实就是一个主从架构,boss就是master,而worker扣就是跟从者。从名字上也好理解,一个老板,一个是员工。老板跑业务,跟人接触,然后项目给员工做。boss是一个whill(true)的死循环,不停的接受请求,然后经过合理的分配机制,将这些请求的链接转换channel。worker,其实也一样是一个whille(tru...原创 2021-02-01 01:26:34 · 215 阅读 · 1 评论 -
Reactor模式
Reactor的模式Reactor的模式-单reactor单线程问题是还是会阻塞Reactor的模式-主从Reactor多线程原创 2021-02-01 01:01:26 · 169 阅读 · 0 评论 -
NIO 核心组件
# #三个核心组件buffer chanal selector# #三大组件之间的对应关系selector 上边是和线程相对应的,一对一的关系;selector 下边是和chanal对应的,一对多的关系;chanal 下边是个buffer对应的,一对一的关系;buffer是和管道对应的,连接程序的一次请求。# #核心组件分解——bufferBuffer类是java中,缓冲区的顶级父类,它有不同数据类型的子类buf...原创 2020-10-19 00:18:00 · 734 阅读 · 0 评论 -
BIO与NIO 的简单对比
# #通过一张图来比对 描述:左边的是BIO,右边的是NIO 计算机技术发展的本质,就是对计算机资源合理的压榨。 对比:BIO其实是靠线程和客户端连接起来的。客户端的连接,对接的是线程。不同的客户端,就要有不同的线程来应对。而阻塞就是发生在线程上,当线程没有通信任务的任务的时候,就在阻塞这。可以理解为偷懒,它占用的系统资源,但是没干活。而BIO就是要解决这个偷懒的问题。客户端通信连接的是buffer,而不是线程,NIO里边的线程,是监听一批通道。所以这些线程都在干着活儿。...原创 2020-10-18 19:19:03 · 793 阅读 · 0 评论