精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊Gateway集成Netty服務

開發 前端
Netty是一個異步的,事件驅動的網絡應用框架,用以快速開發高可靠、高性能的網絡應用程序。

一、Netty簡介

Netty是一個異步的,事件驅動的網絡應用框架,用以快速開發高可靠、高性能的網絡應用程序。

圖片

傳輸服務:提供網絡傳輸能力的管理;

協議支持:支持常見的數據傳輸協議;

核心模塊:包括可擴展事件模型、通用的通信API、零拷貝字節緩沖;

二、Netty入門案例

1、服務端啟動

配置Netty服務器端程序,引導相關核心組件的加載;

public class NettyServer {

public static void main(String[] args) {

// EventLoop組,處理事件和IO
EventLoopGroup parentGroup = new NioEventLoopGroup();
EventLoopGroup childGroup = new NioEventLoopGroup();

try {

// 服務端啟動引導類
ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap.group(parentGroup, childGroup)
.channel(NioServerSocketChannel.class).childHandler(new ChannelInit());

// 異步IO的結果
ChannelFuture channelFuture = serverBootstrap.bind(8082).sync();
channelFuture.channel().closeFuture().sync();

} catch (Exception e){
e.printStackTrace();
} finally {
parentGroup.shutdownGracefully();
childGroup.shutdownGracefully();
}
}
}

2、通道初始化

ChannelInitializer特殊的通道處理器,提供一種簡單的方法,對注冊到EventLoop的通道進行初始化;比如此處設置的編碼解碼器,自定義處理器;

public class ChannelInit extends ChannelInitializer<SocketChannel> {

@Override
protected void initChannel(SocketChannel socketChannel) {

// 獲取管道
ChannelPipeline pipeline = socketChannel.pipeline();

// Http編碼、解碼器
pipeline.addLast("DefHttpServerCodec",new HttpServerCodec());

// 添加自定義的handler
pipeline.addLast("DefHttpHandler", new DefHandler());
}
}

3、自定義處理器

處理對服務器端發起的訪問,通常包括請求解析,具體的邏輯執行,請求響應等過程;

public class DefHandler extends SimpleChannelInboundHandler<HttpObject> {

@Override
protected void channelRead0(ChannelHandlerContext ctx, HttpObject message) throws Exception {

if(message instanceof HttpRequest) {
// 請求解析
HttpRequest httpRequest = (HttpRequest) message;
String uri = httpRequest.uri();
String method = httpRequest.method().name();
log.info("【HttpRequest-URI:"+uri+"】");
log.info("【HttpRequest-method:"+method+"】");

Iterator<Map.Entry<String,String>> iterator = httpRequest.headers().iteratorAsString();
while (iterator.hasNext()){
Map.Entry<String,String> entry = iterator.next();
log.info("【Header-Key:"+entry.getKey()+";Header-Value:"+entry.getValue()+"】");
}

// 響應構建
ByteBuf content = Unpooled.copiedBuffer("Netty服務", CharsetUtil.UTF_8);
FullHttpResponse response = new DefaultFullHttpResponse
(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, content);
response.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/plain;charset=utf-8");
response.headers().set(HttpHeaderNames.CONTENT_LENGTH, content.readableBytes());
ctx.writeAndFlush(response);
}
}
}

4、測試請求

上面入門案例中,簡單的配置了一個Netty服務器端,啟動之后在瀏覽器中模擬訪問即可;

http://127.0.0.1:8082/?id=1&name=Spring

三、Gateway集成

1、依賴層級

項目中Gateway網關依賴的版本為2.2.5.RELEASE?,發現Netty依賴的版本為4.1.45.Final,是當下比較主流的版本;

<!-- 1、項目工程依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>

<!-- 2、starter-gateway依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>

<!-- 3、starter-webflux依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-reactor-netty</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>

2、自動化配置

在Gateway網關的自動化配置配置類中,提供了Netty配置的管理;

@AutoConfigureBefore({ HttpHandlerAutoConfiguration.class,WebFluxAutoConfiguration.class })
@ConditionalOnClass(DispatcherHandler.class)
public class GatewayAutoConfiguration {

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(HttpClient.class)
protected static class NettyConfiguration {

@Bean
@ConditionalOnProperty(name = "spring.cloud.gateway.httpserver.wiretap")
public NettyWebServerFactoryCustomizer nettyServerWiretapCustomizer(
Environment environment, ServerProperties serverProperties) {
return new NettyWebServerFactoryCustomizer(environment, serverProperties) {
@Override
public void customize(NettyReactiveWebServerFactory factory) {
factory.addServerCustomizers(httpServer -> httpServer.wiretap(true));
super.customize(factory);
}
};
}
}
}

四、配置加載

1、基礎配置

在工程的配置文件中,簡單做一些基礎性的設置;

server:
port: 8081 # 端口號
netty: # Netty組件
connection-timeout: 3000 # 連接超時

2、屬性配置類

在ServerProperties類中,并沒有提供很多顯式的Netty配置參數,更多信息需要參考工廠類;

@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true)
public class ServerProperties {
private Integer port;
public static class Netty {
private Duration connectionTimeout;
}
}

3、配置加載分析

圖片

  • 基于配置的屬性,定制化管理Netty服務的信息;
public class NettyWebServerFactoryCustomizer
implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory>{
private final Environment environment;
private final ServerProperties serverProperties;
@Override
public void customize(NettyReactiveWebServerFactory factory) {
PropertyMapper propertyMapper = PropertyMapper.get().alwaysApplyingWhenNonNull();
ServerProperties.Netty nettyProperties = this.serverProperties.getNetty();
propertyMapper.from(nettyProperties::getConnectionTimeout).whenNonNull()
.to((connectionTimeout) -> customizeConnectionTimeout(factory, connectionTimeout));
}
}
  • NettyReactiveWeb服務工廠,基于上述入門案例,創建WebServer時,部分參數信息出自LoopResources接口;
public class NettyReactiveWebServerFactory extends AbstractReactiveWebServerFactory {

private ReactorResourceFactory resourceFactory;

@Override
public WebServer getWebServer(HttpHandler httpHandler) {
HttpServer httpServer = createHttpServer();
ReactorHttpHandlerAdapter handlerAdapter = new ReactorHttpHandlerAdapter(httpHandler);
NettyWebServer webServer = new NettyWebServer(httpServer, handlerAdapter, this.lifecycleTimeout);
webServer.setRouteProviders(this.routeProviders);
return webServer;
}

private HttpServer createHttpServer() {
HttpServer server = HttpServer.create();
if (this.resourceFactory != null) {
LoopResources resources = this.resourceFactory.getLoopResources();
server = server.tcpConfiguration(
(tcpServer) -> tcpServer.runOn(resources).addressSupplier(this::getListenAddress));
}
return applyCustomizers(server);
}

}

五、周期管理方法

1、控制類

圖片

Gateway項目中,Netty服務核心控制類,通過NettyReactiveWebServerFactory工廠類創建,對Netty生命周期的管理提供了一層包裝;

public class NettyWebServer implements WebServer {

private final HttpServer httpServer;
private final ReactorHttpHandlerAdapter handlerAdapter;

/**
* 啟動方法
*/
@Override
public void start() throws WebServerException {
if (this.disposableServer == null) {
this.disposableServer = startHttpServer();
// 控制臺日志
logger.info("Netty started on port(s): " + getPort());
startDaemonAwaitThread(this.disposableServer);
}
}
private DisposableServer startHttpServer() {
HttpServer server = this.httpServer;
if (this.routeProviders.isEmpty()) {
server = server.handle(this.handlerAdapter);
}
return server.bindNow();
}

/**
* 停止方法
*/
@Override
public void stop() throws WebServerException {
if (this.disposableServer != null) {
// 釋放資源
if (this.lifecycleTimeout != null) {
this.disposableServer.disposeNow(this.lifecycleTimeout);
}
else {
this.disposableServer.disposeNow();
}
// 對象銷毀
this.disposableServer = null;
}
}
}

2、管理類

Netty組件中抽象管理類,以安全的方式構建Http服務;

public abstract class HttpServer {

public static HttpServer create() {
return HttpServerBind.INSTANCE;
}

public final DisposableServer bindNow() {
return bindNow(Duration.ofSeconds(45));
}

public final HttpServer handle(BiFunction<? super HttpServerRequest, ? super
HttpServerResponse, ? extends Publisher<Void>> handler) {
return new HttpServerHandle(this, handler);
}
}

六、參考源碼

編程文檔:
https://gitee.com/cicadasmile/butte-java-note

應用倉庫:
https://gitee.com/cicadasmile/butte-flyer-parent

責任編輯:武曉燕 來源: 知了一笑
相關推薦

2024-07-29 08:24:43

2024-11-22 00:09:15

2022-10-28 07:27:17

Netty異步Future

2022-03-04 08:10:35

NettyIO模型Reactor

2023-08-07 08:32:05

RocketMQ名字服務

2021-02-07 09:05:56

微服務結構云原生

2017-06-02 08:32:01

調度服務數據

2023-12-15 09:57:13

微服務鏈路服務

2025-04-27 08:25:00

Netty零拷貝內存

2024-11-25 06:20:00

Netty封裝框架

2022-03-03 08:01:41

阻塞與非阻塞同步與異步Netty

2021-07-20 08:03:43

微服務應用程序

2024-06-13 08:24:43

SpringGateway線程池

2024-11-04 08:00:00

Netty客戶端

2018-05-09 08:18:26

微服務改造架構

2022-04-11 08:17:07

JVMJava進程

2022-05-09 08:34:01

FeignhttpJava

2021-06-08 09:28:12

.Net通知服務

2023-01-29 09:06:24

微服務劃分關聯

2021-07-14 06:45:49

Windows.NetTopshelf
點贊
收藏

51CTO技術棧公眾號

午夜羞羞小视频在线观看| 这里只有精品999| 岛国精品一区| 色综合天天在线| 视频一区二区在线观看| 国产视频第一页| 最新国产乱人伦偷精品免费网站| 日韩精品欧美国产精品忘忧草| 男人亚洲天堂网| av午夜在线| 成人一级片在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 精品国产av无码| 国产美女精品视频免费播放软件| 亚洲一区视频在线观看视频| 欧美午夜精品久久久久久蜜| 国产精品亚洲lv粉色| 亚洲经典视频在线观看| 中文字幕精品久久| 一区二区三区四区影院| 精品欧美一区二区三区在线观看 | 水莓100在线视频| 美女免费视频一区二区| 国内精品中文字幕| 亚洲毛片亚洲毛片亚洲毛片| 久久亚洲黄色| 911精品国产一区二区在线| 欧美一级在线看| 成人日韩欧美| 久久影音资源网| 99久久免费国| 亚洲一二区视频| 午夜在线a亚洲v天堂网2018| 欧美成人午夜激情在线| 懂色av蜜桃av| 伊人久久大香线蕉无限次| 日韩一区二区免费在线观看| 九热视频在线观看| 色戒汤唯在线| 亚洲国产精品欧美一二99| 在线观看日韩片| 青青免费在线视频| 丁香婷婷综合色啪| 1卡2卡3卡精品视频| 午夜一级黄色片| 午夜亚洲性色福利视频| 久久久久久亚洲| 久久九九全国免费| 久久人人97超碰人人澡爱香蕉| 精品人妻少妇AV无码专区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美在线一区二区三区四| 伊人国产在线观看| 国产精品第十页| 欧美噜噜久久久xxx| 成人高潮免费视频| 四虎8848精品成人免费网站| 怡红院精品视频| 国产人妻大战黑人20p| 亚洲黄色录像| 日韩高清a**址| 亚洲观看黄色网| 欧美aaaaaaaa牛牛影院| 亚洲国产成人精品一区二区| 涩视频在线观看| 大奶在线精品| 亚洲国产精品成人一区二区| 色婷婷精品久久二区二区密| 国产欧美自拍一区| 日韩av在线直播| 日韩免费高清一区二区| 久久久久久毛片免费看| 亚洲精品国产精品久久清纯直播 | 91啦中文在线观看| 你懂的视频在线一区二区| 欧美偷拍视频| 国产色产综合色产在线视频 | 拔插拔插华人永久免费| 欧美成人免费全部网站| 欧美三级在线播放| 日本黄色的视频| 国产日韩一区二区三免费高清| 欧美二区在线观看| 欧美日韩一区二区区| 国产劲爆久久| 亚洲欧美日韩天堂| 国产又粗又长又硬| 综合久久久久| 国内揄拍国内精品| 亚洲图片欧美日韩| 极品少妇xxxx精品少妇偷拍| 成人精品一二区| 神马久久久久久久久久| 国产婷婷一区二区| 青少年xxxxx性开放hg| 国产精品186在线观看在线播放| 午夜成人在线视频| 另类小说第一页| 精品中文在线| 亚洲美女激情视频| 美国一级片在线观看| 国内精品久久久久久久97牛牛 | 欧美a一区二区| 91视频国产高清| 亚洲欧美日韩成人在线| 国产精品久久久久久福利一牛影视 | 97se亚洲| 亚洲一区二区久久久| 精品国产欧美日韩不卡在线观看| 亚洲黄色一区| 国产欧美精品一区二区| 黑人精品一区二区| 国产精品日产欧美久久久久| 国产日本在线播放| 婷婷激情成人| 日韩精品免费综合视频在线播放| 国产色无码精品视频国产| 翔田千里一区二区| 91精品国产一区二区三区动漫| 亚洲av毛片成人精品| 亚洲青青青在线视频| 免费日韩中文字幕| 草莓视频一区二区三区| 久久久999精品视频| 色av性av丰满av| 国产白丝精品91爽爽久久| 日韩av在线一区二区三区| av电影在线地址| 欧美男男青年gay1069videost | 欧美激情一区二区三区全黄| 每日在线观看av| 综合久久伊人| 亚洲一级免费视频| 国产美女激情视频| 成人的网站免费观看| 国产专区在线视频| crdy在线观看欧美| 伊人青青综合网站| 成人h动漫精品一区二区下载| 成人免费高清视频| 国产在线xxxx| 久久久久久久久久久久电影| 视频直播国产精品| 波多野结衣电影在线播放| 91亚洲永久精品| 成人免费视频91| 91九色鹿精品国产综合久久香蕉| 这里只有精品视频| 中文字幕在线观看视频免费| 91麻豆国产福利在线观看| 男人添女荫道口图片| 中文字幕日韩在线| 久久69精品久久久久久国产越南| 国产区精品在线| 国产精品网曝门| 一区二区三区 欧美| 欧美日韩在线观看视频小说| 国产精品va在线播放| 福利在线午夜| 欧美日韩在线一区二区| 久久久久久成人网| 美女精品一区二区| 在线不卡日本| 国产精选久久| 欧美激情日韩图片| 蜜桃视频污在线观看| 亚洲成av人片在线观看| 国产伦精品一区二区免费| 亚洲久久一区| 欧美日韩精品免费在线观看视频| 大胆人体一区| 中文字幕在线看视频国产欧美| 一级日韩一级欧美| 亚洲精品乱码久久久久久黑人| 国产成人精品一区二区三区在线观看 | 另类调教123区| 91制片厂免费观看| 给我免费播放日韩视频| 欧洲亚洲妇女av| 91xxx在线观看| 4438x亚洲最大成人网| 欧美人妻一区二区| 99精品视频在线播放观看| 久热免费在线观看| 午夜影院欧美| 国产一区精品视频| 日韩在线免费| 欧美成人三级视频网站| 少妇一级淫片免费看| 在线观看免费视频综合| 免费国产羞羞网站美图| 不卡一区中文字幕| 啊啊啊国产视频| 欧美在线首页| 欧美日韩在线高清| 二区三区精品| 欧美主播福利视频| 久草资源在线| 日韩精品中文字幕视频在线| 一区二区视频免费| 亚洲一级片在线观看| 一级特黄曰皮片视频| 国产不卡视频在线观看| 欧美三级理论片| 精品成人一区| 亚洲伊人婷婷| 四虎884aa成人精品最新| 成人妇女淫片aaaa视频| 天使と恶魔の榨精在线播放| 亚洲午夜精品视频| 性网爆门事件集合av| 日本道精品一区二区三区| 2021亚洲天堂| 国产三区在线成人av| 超碰caoprom| 黄色精品一二区| 国产美女三级视频| 国内精品福利| 波多野结衣三级在线| 久草精品在线| 国产一区二区不卡视频在线观看| 亚洲精品69| 国产成人精品av在线| segui88久久综合| 久久久999精品| 成人动漫在线播放| 日韩精品在线免费| 欧美视频一二区| 91精品国产一区二区三区蜜臀| 日韩电影在线观看一区二区| 亚洲一区二区三区四区五区黄| 手机看片国产日韩| 久久久综合视频| 久久精品女同亚洲女同13| 国产剧情一区二区三区| 中文字幕22页| 奇米精品一区二区三区在线观看 | 久久精品ww人人做人人爽| 久久久久毛片免费观看| 成人av色在线观看| jizzjizz少妇亚洲水多| 国产成人精品免费久久久久| 精精国产xxxx视频在线播放| 久久久久久91| av丝袜在线| 久久久视频在线| 色女人在线视频| 色综合天天狠天天透天天伊人| 麻豆视频在线观看免费网站| 日韩色av导航| 幼a在线观看| 在线观看日韩www视频免费| 日本视频在线观看一区二区三区| 亚洲国内高清视频| 神宫寺奈绪一区二区三区| 亚洲第一区在线观看| 蜜臀av午夜精品| 亚洲激情免费观看| 欧美老女人性开放| 国产亚洲精品久久久久久777| 精品资源在线看| 中文字幕国内精品| 黄色小网站在线观看| 美女视频黄免费的亚洲男人天堂| av网站在线看| 欧美激情a在线| 九色porny丨首页入口在线| 97人人做人人爱| 高清电影一区| 成人天堂噜噜噜| 日本一区二区三区电影免费观看| 999视频在线免费观看| 超碰成人在线免费| 精品视频一区二区| 国产真实有声精品录音| 夜夜爽99久久国产综合精品女不卡| 欧美一区二区三| av不卡在线免费观看| 一区视频在线| 国产女女做受ⅹxx高潮| 美女脱光内衣内裤视频久久网站| 手机在线国产视频| 东方aⅴ免费观看久久av| 国产国语性生话播放| 国产女同性恋一区二区| 国产日韩欧美在线观看视频| 亚洲综合激情网| 男人日女人网站| 欧美精品123区| 少妇人妻偷人精品一区二区| 在线观看国产精品91| 日韩av激情| 欧洲一区二区视频| 9999精品免费视频| 另类欧美小说| 亚洲国产日韩欧美在线| 久久亚洲中文字幕无码| 日本不卡一区二区| 精人妻一区二区三区| 久久久久久久久久电影| 亚洲国产成人精品综合99| 欧美日韩中文字幕在线| 国产又粗又黄又爽| 日韩精品在线观看一区二区| 黄视频网站在线| 国产va免费精品高清在线观看| 精品国产第一国产综合精品| 欧美三级电影在线播放| 欧美色综合网| 日本中文字幕影院| 2022国产精品视频| www青青草原| 欧美伊人久久久久久久久影院| 黄频在线免费观看| 日韩中文娱乐网| 中文字幕在线视频网站| 99影视tv| 欧美日韩在线二区| 国产中文字幕免费观看| 国产99久久久精品| 中国一级片在线观看| 91国在线观看| 色天堂在线视频| 国语自产在线不卡| 精品国产三区在线| 一区二区三区四区视频在线| 免费永久网站黄欧美| 黑森林av导航| 亚洲精品一卡二卡| 91在线观看喷潮| 一区二区在线视频| 超碰超碰人人人人精品| 国产高清不卡av| 欧美激情一区| 九九九久久久久久久| 中文字幕欧美一| 成人黄色片在线观看| 亚洲人成网站色ww在线| 国产美女高潮在线观看| 成人欧美一区二区三区在线观看 | 91原创在线视频| 国产一级一级片| 日韩欧美123| 曰本三级在线| 91青青草免费观看| 欧美久久影院| 欧美一区二区三区影院| 亚洲精品乱码久久久久久| 国产日产亚洲系列最新| 久久这里只有精品99| www欧美在线观看| 中文字幕免费在线不卡| 精品制服美女丁香| 东方av正在进入| 91精品欧美久久久久久动漫| 黄色动漫在线| 99久久免费国| 亚洲电影成人| 中文字幕一区二区久久人妻网站| 亚洲午夜电影在线观看| 丰满大乳国产精品| 午夜精品www| 日本精品影院| 已婚少妇美妙人妻系列| 国产精品系列在线| 国产又粗又猛又爽又黄视频| 日韩视频免费观看| 日韩成人视屏| 97国产在线播放| 久久久不卡网国产精品二区| 最近中文字幕免费观看| 久久久精品国产| 77成人影视| 国产91对白刺激露脸在线观看| 久久久久久久综合狠狠综合| 国产精品自拍第一页| 久久这里有精品视频| 精品国产乱子伦一区二区| 久久久免费视频网站| 国产精品久久久久久久久果冻传媒 | 亚洲自拍av在线| 亚洲三级毛片| 免费网站在线高清观看| 4438x成人网最大色成网站| 123区在线| 五月天亚洲综合| 狠狠色丁香婷婷综合| 久久精品国产亚洲AV无码麻豆| 精品偷拍一区二区三区在线看| 丁香婷婷久久| 国产美女作爱全过程免费视频| 91一区二区在线观看| 一区二区三区在线免费观看视频| 欧美精品亚州精品| 亚洲免费福利一区| 四虎1515hh.com| 日韩欧美999| 麻豆网站在线| 欧美一区二区福利| 国产电影一区在线|