Netty
aa1215018028
这个作者很懒,什么都没留下…
展开
-
protobuf3的语法
本文主要讨论protobuf3在编写proto接口描述文件时的语法,下面是一个proto文件的实例:syntax = "proto3";import "address.proto";package com.study.blog.protobuf;option java_package = "com.study.blog.protobuf";/option java_outer_classname="PersonProto";option java_multiple_files = .原创 2021-01-13 14:10:43 · 824 阅读 · 0 评论 -
Netty内存管理详解
前言正是Netty的易用性和高性能成就了Netty,让其能够如此流行。而作为一款通信框架,首当其冲的便是对IO性能的高要求。不少读者都知道Netty底层通过使用Direct Memory,减少了内核态与用户态之间的内存拷贝,加快了IO速率。但是频繁的向系统申请Direct Memory,并在使用完成后释放本身就是一件影响性能的事情。为此,Netty内部实现了一套自己的内存管理机制,在申请时,Netty会一次性向操作系统申请较大的一块内存,然后再将大内存进行管理,按需拆分成小块分配。而释放时,Nett原创 2020-09-27 17:19:16 · 1833 阅读 · 4 评论 -
Java NIO知识点详解
前言抱歉好久没更原创文章了,看了下上篇更新时间,已经拖更一个多月了。这段时间也一直在学习Netty相关知识,因为涉及知识点比较多,也走了不少弯路。目前网上关于Netty学习资料玲琅满目,不知如何下手,其实大家都是一样的,学习方法和技巧都是总结出来的,我们在没有找到很好的方法之前不如按部就班先从基础开始,一般从总分总的渐进方式,既观森林,又见草木。之前恰巧跟杭州一个朋友小飞也提到过,两者在这方面的初衷是一致的,也希望更多的朋友能够加入一起学习和探讨。(PS:本篇文章是和小飞一起学习整理所得~)原创 2020-09-25 17:44:55 · 481 阅读 · 0 评论 -
Netty与SpringBoot整合
Netty与Spring Boot的整合 最近有朋友向我询问一些Netty与SpringBoot整合的相关问题,这里,我就总结了一下基本整合流程,也就是说,这篇文章 ,默认大家是对netty与Spring,SpringMVC的整合是没有什么问题的。现在,就进入正题吧。Server端:总的来说,服务端还是比较简单的,自己一共写了三个核心类。分别是NettyServerListe...原创 2018-12-15 15:59:30 · 1114 阅读 · 1 评论 -
最全netty知识点总结
1.BIO、NIO和AIO的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器...原创 2018-07-07 09:54:57 · 1884 阅读 · 0 评论 -
从线程模型的角度看 Netty 为什么是高性能
前言在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty。但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚。本文就来从历史源头说道说道。传统 IO在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包。比如下面的伪代码:ServeSocket serverSocket = new ServeSocke...原创 2018-07-05 20:24:19 · 200 阅读 · 0 评论 -
最详细的Netty简介
随着移动互联网的爆发性增长,小明公司的电子商务系统访问量越来越大,由于现有系统是个单体的巨型应用,已经无法满足海量的并发请求,拆分势在必行。在微服务的大潮之中, 架构师小明把系统拆分成了多个服务,根据需要部署在多个机器上,这些服务非常灵活,可以随着访问量弹性扩展。世界上没有免费的午餐, 拆分成多个“微服务”以后虽然增加了弹性,但也带来了一个巨大的挑战:服务之间互相调用的开销。比如说:原来用户下一个...原创 2018-06-27 14:53:33 · 2117 阅读 · 4 评论 -
Netty源码分析之客户端启动过程
一、先来看一下客户端示例代码。 1 public class NettyClientTest { 2 public void connect(int port, String host) throws Exception { 3 EventLoopGroup group = new NioEventLoopGroup();//与服务端不同,客户端只需要一个IO线程组 ...原创 2018-06-26 18:31:02 · 259 阅读 · 1 评论 -
Netty源码分析之服务端启动过程
一、首先来看一段服务端的示例代码: 1 public class NettyTestServer { 2 public void bind(int port) throws Exception{ 3 EventLoopGroup bossgroup = new NioEventLoopGroup();//创建BOSS线程组 4 EventLoopGro...原创 2018-06-26 18:27:40 · 194 阅读 · 0 评论 -
netty实战--手写rpc框架
rpc简介rpc大家大概都听说过,远程过程调用。简单来说,就是我的一个操作是远程操作的给的结果,举个例子,考试作弊,你把考题发出去了,你同学帮你做好把答案传输给你,然后你就把答案写上,那么在判卷老师眼里,你回答的还不错,但是,其实你是做了远程过程调用的。rpc的好处也在上面的例子中体现了,当自身能力不行的时候,可以依靠强大的远程力量来做到结果。如果自己有能力回答卷子,那就没必要走rpc了。换句话说...原创 2018-06-30 14:05:11 · 1320 阅读 · 0 评论 -
基于Netty的java框架
http://netty.io/wiki/adopters.html原创 2018-06-25 18:39:55 · 600 阅读 · 0 评论 -
Netty 缓存详解
Netty 的缓冲 API 有两个接口一: ByteBuf 当需要与远程进行交互时,需要以字节码发送/接收数据。由于各种原因,一个高效、方便、易用的数据接口是必须的,而 Netty 的 ByteBuf 满足这些需求,ByteBuf 是一个很好的经过优化的数据容器, 我们可以将字节数据有效的添加到 ByteBuf 中或从 ByteBuf 中获取数据。ByteBuf 有 2 部分:一个用于读,一个用...原创 2018-06-29 19:36:32 · 3642 阅读 · 0 评论 -
Netty实例教程解析
在博主不长的工作经历中,NIO用的并不多,由于使用原生的Java NIO编程的复杂性,大多数时候我们会选择Netty,mina等开源框架,但理解NIO的原理就不重要了吗?恰恰相反,理解NIO底层机制是理解这一切的基础,由此我总结一下当初学习NIO时的笔记,以便后续复习。 以下是我理解的Java原生NIO开发大致流程: 上图大致描述的是服务端的NIO操作。第一步,绑定一个...原创 2018-06-10 20:37:33 · 215 阅读 · 0 评论 -
Netty原理解析
Netty是JBoss出品的高效的Java NIO开发框架,关于其使用,可参考我的另一篇文章 netty使用初步。本文将主要分析Netty实现方面的东西,由于精力有限,本人并没有对其源码做了极细致的研 究。如果下面的内容有错误或不严谨的地方,也请指正和谅解。对于Netty使用者来说,Netty提供了几个典型的example,并有详尽的API doc和guide doc,本文的一些内容及图示也来自于...原创 2018-06-10 20:34:39 · 833 阅读 · 1 评论