Netty

RestTemplate组件:ClientHttpRequestFactory、ClientHttpRequestInterceptor、ResponseExtractor【享学Spring MVC】

浪尽此生 提交于 2020-08-14 13:33:27
每篇一句 做事的人和做梦的人最大的区别就是行动力 前言 本文为深入了解Spring提供的Rest调用客户端RestTemplate开山,对它相关的一些组件做讲解。 Tips:请注意区分RestTemplate和RedisTemplate哦~ ClientHttpRequestFactory 它是个函数式接口,用于根据URI和HttpMethod创建出一个ClientHttpRequest来发送请求~ ClientHttpRequest它代表请求的客户端,该接口继承自HttpRequest、HttpOutputMessage,只有一个ClientHttpResponse execute() throws IOException方法。其中Netty、HttpComponents、OkHttp3,HttpUrlConnection对它都有实现~ // @since 3.0 RestTemplate这个体系都是3.0后才有的 @FunctionalInterface public interface ClientHttpRequestFactory { // 返回一个ClientHttpRequest,这样调用其execute()方法就可以发送rest请求了~ ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod)

Spring Cloud升级之路

你。 提交于 2020-08-14 09:27:12
针对网关非 Get 请求的重试 在之前的系列里面 Spring Cloud升级之路 - Hoxton - 5. 实现微服务调用重试 ,我们针对 OpenFeign 和 Spring Cloud Gateway 都设置了重试。 对于 OpenFeign: Get请求:任何非200 响应码,任何异常,都会重试。 非 Get 请求:任何IOException(除了SocketTimeOutException,这个是read time out 导致的),还有 redilience 断路器异常,都会重试,其他的都不重试。 对于 Spring Cloud Gateway: Get请求:任何4XX,5XX响应码,任何异常,都会重试。 现在,我们需要实现针对于 Spring Cloud Gateway 的非 Get 请求的任何IOException(除了SocketTimeOutException,这个是read time out 导致的),还有 redilience 断路器异常进行重试,Get因为请求并没有真正发出去。 现有设计 目前在 Spring Cloud Gateway 的 RetryFilterFactory,无法实现针对 Get 和非 Get 对于不同的异常进行不同的重试: org.springframework.cloud.gateway.filter.factory

Netty源码死磕一(netty线程模型及EventLoop机制)

此生再无相见时 提交于 2020-08-14 02:30:08
引言 好久没有写博客了,近期准备把 Netty 源码啃一遍。在这之前本想直接看源码,但是看到后面发现其实效率不高, 有些概念还是有必要回头再细啃的,特别是其线程模型以及 EventLoop 的概念。 当然在开始之前还是有务必要对 IO模型 要有清晰准确的认识。 传送门 事件循环机制(EventLoop) Netty线程模型中一个非常重要的概念: 事件循环机制(EventLoop) 这个概念在 JS 上体现的也非常淋漓尽致,下面在开始介绍netty的线程模型之前,允许我简单的介绍下事件循环机 制在 JS 中的体现 JS 的语言性质: 单线程非阻塞,单线程意味着,js代码在执行的任何时候,都只有一个主线程来处理所有的任务>。非阻塞则意味着,在进行异步IO任务时不会阻塞主线程,主线程会挂起这个任务,等待异步任务完成再执行对应>的回调。 那么JS是如何实现单线程非阻塞的呢? JS 引擎遇到一个异步事件后并不会一直等待其返回结果,而是会将此事件>挂起(例如交给浏览器去执行请求),主线程会继续执行方法栈中的其他任务。之后当异步任务返回结果后,(可>能是浏览器?)会将回调函数加入到事件队列( Task Queue )中,那么什么时候会从事件队列中取出回调函数执行>呢?当前执行栈中的所有任务都执行完毕,主线程处于闲置状态时会去查找事件队列是否有任务待执行,如果有则

pulsar 连接 源码

不打扰是莪最后的温柔 提交于 2020-08-14 01:58:10
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS"

超详细Netty入门,看这篇就够了!

旧街凉风 提交于 2020-08-13 16:16:38
简介: 本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。 思维导图 前言 本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。 一、Netty概述 官方的介绍: Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty 是 一个 异步事件驱动 的网络应用程序框架,用于 快速开发可维护的高性能协议服务器和客户端 。 二、为什么使用Netty 从官网上介绍,Netty是一个网络应用程序框架,开发服务器和客户端。也就是用于网络编程的一个框架。既然是网络编程,Socket就不谈了,为什么不用NIO呢? 2.1 NIO的缺点 对于这个问题,之前我写了一篇文章 《NIO入门》 对NIO有比较详细的介绍,NIO的主要问题是: NIO的类库和API繁杂,学习成本高,你需要熟练掌握Selector、ServerSocketChannel

Java架构师面试题系列之Dubbo面试专题(29题,含详细答案解析)

让人想犯罪 __ 提交于 2020-08-13 01:52:24
【 Java架构师面试网 】收集整理了几乎整个架构师学习途中会遇到的面试题,希望大家都能早日圆自己的架构师梦~ 网站近期在备案和迁移服务器,暂时无法打开,先关注一波公众号吧 公众号: Java架构师面试网 ,关注回复“ 资料 ”即可领取精美整理的面试资料一份哦~ 1. Dubbo 支持哪些协议,每种协议的应用场景,优缺点? dubbo : 单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用,以及消费者远大于提供者。传输协议 TCP,异步, Hessian 序列化; rmi : 采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,传输协议 TCP。多个短连接, TCP 协议传输,同步传输,适用常规的远程服务调用和 rmi 互操作。在依赖低版本的 Common-Collections 包, java 序列化存在安全漏洞; http : 基于 Http 表单提交的远程调用协议,使用 Spring 的 HttpInvoke 实现。多个短连接,传输协议 HTTP,传入参数大小混合,提供者个数多于消费者,需要给应用程序和浏览器 JS 调用; webservice : 基于 WebService 的远程调用协议,集成 CXF 实现

浅谈tcp socket的backlog参数

佐手、 提交于 2020-08-12 19:50:39
最近看netty源码碰到ChannelOption.SO_BACKLOG参数,通过跟踪代码发现其实是用于设置底层tcp socket的backlog参数,由于不了解这个参数,有必要彻底的理解一下。 TCP三次握手底层实现 backlog参数主要用于底层方法int listen(int sockfd, int backlog), 在解释backlog参数之前,我们先了解下tcp在内核的请求过程,其实就是tcp的三次握手: 1、client发送SYN到server,将状态修改为SYN_SEND,如果server收到请求,则将状态修改为SYN_RCVD,并把该请求放到syns queue队列中。 2、server回复SYN+ACK给client,如果client收到请求,则将状态修改为ESTABLISHED,并发送ACK给server。 3、server收到ACK,将状态修改为ESTABLISHED,并把该请求从syns queue中放到accept queue。 在linux系统内核中维护了两个队列:syns queue和accept queue syns queue 用于保存半连接状态的请求,其大小通过/proc/sys/net/ipv4/tcp_max_syn_backlog指定,一般默认值是512,不过这个设置有效的前提是系统的syncookies功能被禁用。互联网常见的TCP

浅谈tcp socket的backlog参数

佐手、 提交于 2020-08-12 19:39:39
最近看netty源码碰到ChannelOption.SO_BACKLOG参数,通过跟踪代码发现其实是用于设置底层tcp socket的backlog参数,由于不了解这个参数,有必要彻底的理解一下。 TCP三次握手底层实现 backlog参数主要用于底层方法int listen(int sockfd, int backlog), 在解释backlog参数之前,我们先了解下tcp在内核的请求过程,其实就是tcp的三次握手: 1、client发送SYN到server,将状态修改为SYN_SEND,如果server收到请求,则将状态修改为SYN_RCVD,并把该请求放到syns queue队列中。 2、server回复SYN+ACK给client,如果client收到请求,则将状态修改为ESTABLISHED,并发送ACK给server。 3、server收到ACK,将状态修改为ESTABLISHED,并把该请求从syns queue中放到accept queue。 在linux系统内核中维护了两个队列:syns queue和accept queue syns queue 用于保存半连接状态的请求,其大小通过/proc/sys/net/ipv4/tcp_max_syn_backlog指定,一般默认值是512,不过这个设置有效的前提是系统的syncookies功能被禁用。互联网常见的TCP

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

旧时模样 提交于 2020-08-12 18:43:10
Netty 总算总结完了,小编 也是长舒了一口气。有太多读者私信我让我总结 Netty 了,因为经常会在面试中碰到 Netty 相关的问题。 全文采用大家喜欢的与面试官对话的形式展开。 如果大家觉得 小编 总结的不错的话,不妨转发分享鼓励一下! 概览: Netty 是什么? 为什么要用 Netty? Netty 应用场景了解么? Netty 核心组件有哪些?分别有什么作用? EventloopGroup 了解么?和 EventLoop 啥关系? Bootstrap 和 ServerBootstrap 了解么? NioEventLoopGroup 默认的构造函数会起多少线程? Netty 线程模型了解么? Netty 服务端和客户端的启动过程了解么? Netty 长连接、心跳机制了解么? Netty 的零拷贝了解么? Netty 是什么? ‍ 面试官 :介绍一下自己对 Netty 的认识吧!小伙子。 我 :好的!那我就简单用 3 点来概括一下 Netty 吧! Netty 是一个 基于 NIO 的 client-server(客户端服务器)框架,使用它可以快速简单地开发网络应用程序。 它极大地简化并优化了 TCP 和 UDP 套接字服务器等网络编程,并且性能以及安全性等很多方面甚至都要更好。 支持多种协议 如 FTP,SMTP,HTTP 以及各种二进制和基于文本的传统协议。

再见!杭州!再见!阿里巴巴!

本小妞迷上赌 提交于 2020-08-12 15:28:33
最近和在北京的朋友老冯聊天,老冯说他要离开阿里了,我和老冯是在14年北京租房时认识的,当时老冯招租室友,我加了微信,约看房,后来才知道他也是个程序员,但是因为我那时没啥钱,最后和我另外一些做开发朋友一起合租了。虽然没有一起合租,但是都是程序员,都是一个方向的开发,也经常和老冯一起玩。关于老冯的详细介绍,可以看去年写的这篇文章 《在阿里工作几年,女友跑路,晋升无望,买不起房,我活成了一个笑话~》 当时我建议老冯跳槽,但是老冯觉得再自己最落魄的时候去市场跳,没有优势,所以想再争取升了P7,然后再走。所以他去年下半年全力搞产出。全力思考和总结复盘自己做的事情。有时问他下班没,经常是这样的 或者聊起到休年假时,有过纠结,到底是休还是不休 虽然辛苦,但是辛苦没有白费。他去年拿了绩效3.75,答辩也通过了P7,虽然在很多大佬的眼里,本科3-4年,有些就已经升级到P7了,老冯等着一天确实等的晚了些,但是时光不负有心人。这个Title也是对老冯的认可。毕竟他说他11年毕业,现在都工作快9年了。很多后浪早已把他拍在沙滩上了,所以这个P7, 不管是可伶给他的,还是照顾给他的,或者真的是自己的实力达到了,他说已经不重要了 。因为他已经要离开阿里了。 15年5月从北京起身去杭州,到如今升了P7后,离开阿里,已经5年了。在阿里,流传着一年香,三年醇,五年陈,五年陈的纪念,会有一枚私人订制的戒指。5年