精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本一区二区免费看| 日韩欧美黄色| 97se亚洲国产综合自在线不卡 | 成人直播在线| 成人污视频在线观看| 热久久99这里有精品| 男女男精品视频网站| 日韩激情欧美| 日本乱码高清不卡字幕| 欧美与动交zoz0z| 国产成人91久久精品| 国产ts丝袜人妖系列视频| 国产精成人品2018| 亚洲综合色噜噜狠狠| 欧美在线激情| 黑人精品一区二区三区| 视频在线观看国产精品| 久久久久久国产精品| 丰满的亚洲女人毛茸茸| 黄色欧美网站| 欧美一区二区三区婷婷月色| 少妇人妻互换不带套| 四虎影院观看视频在线观看| 欧美激情自拍偷拍| 精品乱色一区二区中文字幕| 亚洲一级视频在线观看| 香蕉久久国产| 欧美韩国理论所午夜片917电影| 欧美激情aaa| jazzjazz国产精品久久| 欧美最新大片在线看| 精品无码一区二区三区在线| 欧美天天影院| 欧美高清在线一区| 免费看污久久久| 韩国av免费在线| 韩国精品免费视频| 国产精品久久久久久av福利| 国产成人自拍视频在线| 欧美1区免费| 日韩在线小视频| 无码人妻精品一区二区三应用大全| 在线综合色站| 欧美一级片在线看| 美女在线视频一区二区| 日本综合视频| 日本精品免费观看高清观看| 成人免费在线小视频| 欧美wwww| 亚洲一区二区三区四区的| 99热一区二区三区| 黄色网页在线观看| 国产精品久久影院| 久久精品日产第一区二区三区高清版| 高清视频欧美一级| 欧美日韩偷拍视频| 欧美freesex交免费视频| 日韩中文字幕在线观看| 成人黄色a级片| 精品久久久久久久久久久下田 | 人妻激情偷乱频一区二区三区| 91精品视频一区二区| 欧美在线免费视屏| 三年中国国语在线播放免费| 无遮挡爽大片在线观看视频 | 91精品久久久久久综合五月天| 日韩一区二区免费在线观看| 老女人性生活视频| 91夜夜蜜桃臀一区二区三区| 日韩欧美一级特黄在线播放| 午夜诱惑痒痒网| 欧美大片网站| 91精品麻豆日日躁夜夜躁| 欧美激情第一区| 日韩中文字幕| 日韩一级完整毛片| 91传媒理伦片在线观看| 日本福利一区| 国产亚洲欧美视频| 操她视频在线观看| 欧美国产免费| 欧美一区二区三区……| 中文字幕在线观看视频免费| 久久国产精品72免费观看| 国产伦精品免费视频| 91九色蝌蚪91por成人| 国产一区999| 国语精品免费视频| 欧美日韩影视| 国产精品美女久久久久高潮| 51xx午夜影福利| 天堂av在线网| 欧美理论片在线| 香蕉视频污视频| 精品国内自产拍在线观看视频 | 国产精品久久久久精k8| 国产成人aa精品一区在线播放| 中文字幕av在线免费观看| 久久精品国产精品亚洲红杏 | 久久影院资源站| 伊人av综合网| 国产精品 欧美激情| 一本色道精品久久一区二区三区| 国产精品678| 午夜精品久久久久久久96蜜桃 | 青娱乐国产91| 天使と恶魔の榨精在线播放| 日本久久电影网| 又大又长粗又爽又黄少妇视频| 国产欧美三级电影| 在线成人一区二区| 色播视频在线播放| 久久99久久99| 国内精品**久久毛片app| 成年人在线观看| 国产精品美女久久久久久久久久久| 国产在线播放观看| 精品国产伦一区二区三区观看说明| 国产视频丨精品|在线观看| 亚洲一级理论片| 国产一区成人| 91av一区二区三区| 99riav在线| 欧美丝袜一区二区三区| 黄色a级三级三级三级| 国产一区二区在线| 久久久久久久91| 国产精品怡红院| 中文字幕电影一区| 青青青免费在线| 欧美第一在线视频| 日韩中文字幕网址| 亚洲精品一区二区二区| 91在线视频播放| 日本a在线免费观看| 精品视频在线播放一区二区三区| 国产一区二区三区毛片| 久久精品一二区| 成人一级片网址| 看一级黄色录像| 日本欧美不卡| 欧美精品一区二区高清在线观看| 国产高潮国产高潮久久久91| 蜜臀av在线播放一区二区三区| 久久精品日产第一区二区三区乱码 | 亚洲美女在线视频| 久久午夜免费视频| 成人看片黄a免费看在线| 精品免费久久久久久久| 欧美日韩中出| 欧美多人爱爱视频网站| 国产成人三级在线播放| 亚洲色图20p| 91久久精品国产91久久性色| 色噜噜在线观看| 欧美一区高清| av在线不卡观看| 香蕉视频网站在线观看| 色综合久久88色综合天天| 免费成人蒂法网站| 久久久久一区| 午夜精品亚洲一区二区三区嫩草 | 超碰男人的天堂| 一区二区高清| 欧美精品中文字幕一区二区| 亚洲精品一级二级| 这里只有精品丝袜| 日本一区二区三区久久| 日本一区二区三区高清不卡| 色婷婷综合网站| 亚洲精品99| 成人动漫视频在线观看完整版| 亚洲图区一区| 欧美v日韩v国产v| 中文字幕亚洲精品在线| 26uuu国产电影一区二区| 大陆极品少妇内射aaaaa| 九九视频精品全部免费播放| 国产日产欧美精品| 韩国成人免费视频| 日韩精品在线免费观看视频| 最近中文字幕在线观看| 亚洲码国产岛国毛片在线| 国产综合内射日韩久| 美女视频一区免费观看| 手机福利在线视频| 北条麻妃在线一区二区免费播放 | 欧美在线观看视频免费| 欧美一区 二区| 国产精品久久久久毛片大屁完整版 | 亚洲一区在线直播| 成人爽a毛片| 日本视频久久久| 成年人网站在线| 日韩精品亚洲精品| 国产女人18毛片水真多| 五月激情六月综合| 极品色av影院| 91欧美一区二区| 午夜av中文字幕| 久久国产高清| 精品一二三四五区| 欧美一区二区麻豆红桃视频| 豆国产97在线| 久久女人天堂| 91成人福利在线| 中文字幕在线观看播放| 亚洲午夜色婷婷在线| 国产乱淫a∨片免费视频| 日韩欧美亚洲国产一区| 天堂网av2018| 久久久久久99精品| 91在线第一页| 日韩成人一区二区三区在线观看| 嫩草影院中文字幕| 国产精品久久久久久久| 国产欧美日韩综合精品二区| 91成人app| 国产精品美女久久久久久免费| 1024在线看片你懂得| 久久影院模特热| 在线毛片网站| 国产午夜精品一区二区三区| 色欲久久久天天天综合网| 欧美一区二区女人| 一本一道精品欧美中文字幕| 日本久久一区二区| 9i看片成人免费看片| 亚洲成人黄色影院| 久操视频免费在线观看| 综合av第一页| 青青操在线播放| 日本一区二区视频在线| 中文字幕在线看高清电影| 成人视屏免费看| 国产在线观看免费播放| 久久成人麻豆午夜电影| 久久婷婷国产91天堂综合精品| 亚洲欧美日韩一区在线观看| 国自产拍偷拍精品啪啪一区二区| 国内一区二区三区| 久久艹国产精品| 中文不卡在线| 日本一二三区视频在线| 97精品人妻一区二区三区在线| 成人av免费在线| 中文字幕无人区二| 国产成+人+日韩+欧美+亚洲 | 国产成人欧美日韩在线电影| 亚洲黄色片免费| 极品少妇xxxx偷拍精品少妇| 亚洲天堂国产视频| 久久99最新地址| 樱花草www在线| 国产精品亚洲一区二区三区在线| 亚洲高清av一区二区三区| 国产一区二区三区在线观看精品 | 97精品视频在线| a天堂资源在线| 91av视频在线免费观看| 美女的胸无遮挡在线观看 | 中文字幕の友人北条麻妃| 欧美96在线丨欧| 国产91沈先生在线播放| 在线欧美视频| av免费中文字幕| 男人的天堂久久精品| 8x8x成人免费视频| 国产精品亚洲专一区二区三区 | 日韩久久久久| 黄色一级片网址| 亚洲午夜视频| 日日摸日日碰夜夜爽无码| 免费在线亚洲欧美| 国产wwwxx| 国产精品主播直播| 99久久人妻无码中文字幕系列| 久久影院午夜片一区| 久久精品国产亚洲AV成人婷婷| 亚洲精品亚洲人成人网| 亚洲日本韩国在线| 欧美日韩视频在线第一区| www.黄色小说.com| 精品视频—区二区三区免费| 成人在线免费公开观看视频| 欧美xxxx做受欧美| 自拍在线观看| 91久久久久久| 亚洲素人在线| 大桥未久一区二区三区| 西西人体一区二区| 国模大尺度视频| 久久精品欧美一区二区三区麻豆| www.99re7| 色综合久久久久| 国产av精国产传媒| 亚洲网址你懂得| 丁香花高清在线观看完整版| 99视频精品在线| 久久久久久婷婷| 国产精品国模大尺度视频| 日韩手机在线观看| 69堂亚洲精品首页| 欧美日韩免费做爰大片| 欧美美最猛性xxxxxx| 国产成人免费9x9x人网站视频| av资源一区二区| 天天天综合网| 日韩欧美在线免费观看视频| 粉嫩av一区二区三区粉嫩| 最新日韩免费视频| 黑人狂躁日本妞一区二区三区 | 日韩风俗一区 二区| 国产91在线视频蝌蚪| 日本亚洲欧美三级| a级日韩大片| 韩国黄色一级大片| 日韩二区三区四区| av网站有哪些| 亚洲一卡二卡三卡四卡五卡| 国产精品自偷自拍| 中文字幕精品国产| 日韩欧美另类一区二区| 国产精品区二区三区日本| 亚洲老妇激情| 亚洲免费黄色网| 国产偷国产偷亚洲高清人白洁| 西西44rtwww国产精品| 欧美大片一区二区| 国产福利视频在线观看| 国产欧美日韩中文| 日本a口亚洲| 可以免费在线看黄的网站| 波多野结衣在线一区| 欧美激情国产精品免费| 日韩一区二区三| 99福利在线| 99超碰麻豆| 午夜国产精品视频免费体验区| 在线一区二区不卡| 中文字幕永久在线不卡| 国产一区二区在线不卡| 日韩在线观看免费高清| 日韩成人综合网站| 日本一区二区三区www| 葵司免费一区二区三区四区五区| 韩国黄色一级片| 亚洲国产精品欧美一二99| 亚洲国产精品久久人人爱潘金莲| 欧美国产第一页| 国内露脸中年夫妇交换精品| 五十路熟女丰满大屁股| av成人免费在线| av毛片在线免费观看| 亚洲图片欧洲图片av| 国产成人福利夜色影视| 亚洲欧美国产精品桃花| 韩国成人福利片在线播放| 福利所第一导航| 亚洲国产第一页| 中文字幕 在线观看| 日韩在线国产| 精品一区二区三区免费| 永久看片925tv| 亚洲精品电影在线观看| 成人直播视频| 一区二区视频在线播放| 国产精品一区一区三区| 日本三级午夜理伦三级三| 免费看精品久久片| 一区二区三区我不卡| 国产98色在线|日韩| 日韩精品国产一区二区| 一区二区三区天堂av| 久久免费福利| 久在线观看视频| 国产精品久久久久影院老司| www.色呦呦| 日韩av电影中文字幕| 亚洲成av人片乱码色午夜| 插我舔内射18免费视频| 欧美亚洲综合在线| 污视频在线看网站| 久久一区二区三区av| 精品在线播放午夜| 黄色片视频网站| 中文字幕亚洲无线码a| 99久久人爽人人添人人澡| 亚洲色成人一区二区三区小说| 中文字幕欧美一区| 亚州精品国产精品乱码不99按摩| 国产精国产精品| 亚洲婷婷免费| 亚洲aaa视频| 亚洲精品美女久久| 国产免费av国片精品草莓男男| 免费国产a级片| 亚洲免费在线观看视频| 国产女主播在线写真| 成人动漫视频在线观看免费|