当前位置: 首页 > news >正文

网站服务器下行很多是什么意思左右结构网站

网站服务器下行很多是什么意思,左右结构网站,最大的中文搜索引擎,门户类网页一、Netty概述 1.Netty是什么#xff1f; Netty 是一个异步的、基于事件驱动的网络应用框架#xff0c;用于快速开发可维护、高性能的网络服务器和客户端。 2.Netty的地位怎么样#xff1f; Netty 在 Java 网络应用框架中的地位就好比#xff1a;Spring 框架在 JavaEE …一、Netty概述 1.Netty是什么 Netty 是一个异步的、基于事件驱动的网络应用框架用于快速开发可维护、高性能的网络服务器和客户端。 2.Netty的地位怎么样 Netty 在 Java 网络应用框架中的地位就好比Spring 框架在 JavaEE 开发中的地位 以下的框架都使用了 Netty因为它们有网络通信需求 Cassandra - nosql 数据库 Spark - 大数据分布式计算框架 Hadoop - 大数据分布式存储框架 RocketMQ - ali 开源的消息队列 ElasticSearch - 搜索引擎 gRPC - rpc 框架 Dubbo - rpc 框架 Spring 5.x - flux api 完全抛弃了 tomcat 使用 netty 作为服务器端 Zookeeper - 分布式协调框架 3.Netty有哪些优势 Netty vs NIO工作量大bug 多 需要自己构建协议 解决 TCP 传输问题如粘包、半包 epoll 空轮询导致 CPU 100% 对 API 进行增强使之更易用如 FastThreadLocal ThreadLocalByteBuf ByteBuffer Netty vs 其它网络应用框架 Mina 由 apache 维护将来 3.x 版本可能会有较大重构破坏 API 向下兼容性Netty 的开发迭代更迅速API 更简洁、文档更优秀 久经考验16年Netty 版本 2.x 2004 3.x 2008 4.x 2013 5.x 已废弃没有明显的性能提升维护成本高 二、使用Netty实现一个简单的网络通信模型 开发一个简单的服务器端和客户端 客户端向服务器端发送“HelloWorld”服务器只接收并打印输出不返回。 加依赖 dependencygroupIdio.netty/groupIdartifactIdnetty-all/artifactIdversion4.1.39.Final/version/dependency 服务器端 public class HelloServer {public static void main(String[] args) {// 1. 启动器负责组装netty组件启动服务器new ServerBootstrap()// 2. BossEventLoop, WorkerEventLoop(selector,thread), group组.group(new NioEventLoopGroup())// 3. 选择 服务器的 ServerSocketChannel 实现.channel(NioServerSocketChannel.class) // OIO BIO// 4.boss 负责处理连接 worker(child) 负责处理读写决定了 worker(child)能执行那些操作handler.childHandler(// 5. channel 代表和客户端进行数据读写的通道 Initializer 初始化负责添加别的handlernew ChannelInitializerNioSocketChannel() {Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {// 6. 添加具体的 handlerch.pipeline().addLast(new StringDecoder()); // 将ByteBuf 转换为字符串ch.pipeline().addLast(new ChannelInboundHandlerAdapter(){ // 自定义 handlerOverridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {// 打印上一步转换好的字符串System.out.println(msg);}});}})// 7.绑定监听端口.bind(9090);} }代码解读 1.服务器端创建一个新的ServerBootstrap实例。ServerBootstrap是Netty中用于设置服务器端的参数并启动服务器的启动类。 2.为服务器设置一个事件循环组。NioEventLoopGroup是一个基于NIO非阻塞I/O的实现用于处理I/O操作的多线程事件循环。这允许服务器处理多个并发连接。可以理解为创建一个组组中包含多个eventLoop把 eventLoop 理解为处理数据的工人 工人可以管理多个 channel 的 io 操作并且一旦工人负责了某个 channel就要负责到底绑定。 工人既可以执行 io 操作也可以进行任务处理每位工人有任务队列队列里可以堆放多个 channel 的待处理任务任务分为普通任务、定时任务。 3.选择一个serverChannel的实现有基于NIO的服务器端实现、OIO(阻塞IO)的服务器端实现、基于Linux的Epoll的服务器端实现等。 4.添加事件处理逻辑。 5.ChannelInitializer是一个特殊的channel处理器用于对channel中的handler进行初始化具体的handler添加到initChannel()方法中。可以把handler 理解为数据的处理工序。 6.数据传输都是以字节形式传输Netty使用ByteBuf对NIO中ByteBuffer进行增强通过StringDecode()解码成字符传输给msg最终打印输出。pipeline可以理解为把多道工序合在一起 pipeline负责发布事件读、读取完成...传播给每个 handler handler 对自己感兴趣的事件进行处理重写了相应事件处理方法 7.绑定端口用于客户端连接。 客户端 public class HelloClient {public static void main(String[] args) throws InterruptedException {// 1. 启动类new Bootstrap()// 2. 添加EventLoop.group(new NioEventLoopGroup())// 3. 选择客户端 channel 实现.channel(NioSocketChannel.class)// 4. 添加处理器.handler(new ChannelInitializerNioSocketChannel() {Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {ch.pipeline().addLast(new StringEncoder());}})// 5. 连接到服务器.connect(new InetSocketAddress(localhost,9090))// 6. 等待connect建立连接完毕.sync()// 7. 获取channel对象.channel()// 8. 向服务发送数据.writeAndFlush(hello, world);} }代码解读 1.客户端创建一个新的Bootstrap实例。Bootstrap是Netty中用于设置客户端参数并启动客户端的启动类。 2.NioEventLoopGroup同 Server。 3.选择客户 Socket 实现类NioSocketChannel 表示基于 NIO 的客户端实现其它实现还有基于OIO的客户端实现、基于Linux的Epoll的客户端实现等。 4.添加 SocketChannel 的处理器ChannelInitializer 处理器仅执行一次它的作用是待客户端 SocketChannel 建立连接后执行 initChannel 以便添加更多的处理器。 5.指定要连接的服务器和端口。 6.Netty 中很多方法都是异步的如 connect这时需要使用 sync 方法等待 connect 建立连接完毕。 7.获取 channel 对象它即为通道抽象可以进行数据读写操作。 8.写入消息并清空缓冲区。 运行结果 流程梳理
http://www.hkea.cn/news/14424694/

相关文章:

  • 网站自动更新网站建设价格标准报价单
  • 网站的风格包含的因素马鞍山网站制作公司
  • 建二手车网站家具网站开发报告
  • 成都市专业制作网站网页qq登录手机版
  • 个人博客网站开发的意义网络系统管理员
  • 正规的网站建设专业公司直播引流推广方法
  • 仿网站后台怎么做wordpress 标签详解
  • 网站源码交易平台代码天空影院手机免费观看在线
  • 郑州动力无限网站建设网站开发语言哪种好
  • 广州php网站建设如何利用wordpress搭建一个发卡网
  • 昆山 网站建设小学生手工
  • 在线视频网站开发廊坊做企业网站公司
  • html网站模仿做网站自己有模板要花多少钱
  • 我帮你建站投诉举报网站 建设方案
  • 网站xml贵大网站建设多少钱
  • python3 做网站成功的电子商务网站设计
  • 极速一区二区三区精品网络推广seo
  • 新手可以做网站营运吗乐云seo网站建设公司
  • 云主机如何建网站北京制作网站的基本流程
  • 网站建设公司发展规划网站目录爬行
  • 网站里面的按钮链接怎么做百度推广竞价是什么意思
  • 做网站推广一年多少钱做ppt模板网站有哪些
  • 永久免费的网站哪个好丹阳杨文军
  • 定制网站开发方案wordpress移动端设置方法
  • 无锡微信手机网站制作广东网络建设公司
  • 公共设施建设投资公司网站企业培训权威机构
  • 12380网站建设情况汇报企业邮箱格式怎么注册
  • 电商网站设计方案大全wordpress 代码行号
  • 学校网站设计理念郑州做网站外包的公司
  • flash xml网站模板做企业网站有哪些系统