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

凡科代理建站登录哪里做网站比较稳定

凡科代理建站登录,哪里做网站比较稳定,深圳科技有限公司 网站建设,广东衍发建设管理有限公司公司网站Gateway和Netty都有盲区的感觉#xff1b; 一、Netty简介 Netty是一个异步的#xff0c;事件驱动的网络应用框架#xff0c;用以快速开发高可靠、高性能的网络应用程序。 传输服务#xff1a;提供网络传输能力的管理#xff1b; 协议支持#xff1a;支持常见的数据传输… Gateway和Netty都有盲区的感觉 一、Netty简介 Netty是一个异步的事件驱动的网络应用框架用以快速开发高可靠、高性能的网络应用程序。 传输服务提供网络传输能力的管理 协议支持支持常见的数据传输协议 核心模块包括可扩展事件模型、通用的通信API、零拷贝字节缓冲 二、Netty入门案例 1、服务端启动 配置Netty服务器端程序引导相关核心组件的加载 public class NettyServer {public static void main(String[] args) {// EventLoop组处理事件和IOEventLoopGroup 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 ChannelInitializerSocketChannel {Overrideprotected void initChannel(SocketChannel socketChannel) {// 获取管道ChannelPipeline pipeline socketChannel.pipeline();// Http编码、解码器pipeline.addLast(DefHttpServerCodec,new HttpServerCodec());// 添加自定义的handlerpipeline.addLast(DefHttpHandler, new DefHandler());} }3、自定义处理器 处理对服务器端发起的访问通常包括请求解析具体的逻辑执行请求响应等过程 public class DefHandler extends SimpleChannelInboundHandlerHttpObject {Overrideprotected 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】);IteratorMap.EntryString,String iterator httpRequest.headers().iteratorAsString();while (iterator.hasNext()){Map.EntryString,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;charsetutf-8);response.headers().set(HttpHeaderNames.CONTENT_LENGTH, content.readableBytes());ctx.writeAndFlush(response);}} }4、测试请求 上面入门案例中简单的配置了一个Netty服务器端启动之后在浏览器中模拟访问即可 http://127.0.0.1:8082/?id1nameSpring三、Gateway集成 1、依赖层级 项目中Gateway网关依赖的版本为2.2.5.RELEASE发现Netty依赖的版本为4.1.45.Final是当下比较主流的版本 !-- 1、项目工程依赖 -- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactIdversion2.2.5.RELEASE/version /dependency!-- 2、starter-gateway依赖 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-webflux/artifactIdversion2.3.2.RELEASE/version /dependency!-- 3、starter-webflux依赖 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-reactor-netty/artifactIdversion2.3.2.RELEASE/version /dependency2、自动化配置 在Gateway网关的自动化配置配置类中提供了Netty配置的管理 AutoConfigureBefore({ HttpHandlerAutoConfiguration.class,WebFluxAutoConfiguration.class }) ConditionalOnClass(DispatcherHandler.class) public class GatewayAutoConfiguration {Configuration(proxyBeanMethods false)ConditionalOnClass(HttpClient.class)protected static class NettyConfiguration {BeanConditionalOnProperty(name spring.cloud.gateway.httpserver.wiretap)public NettyWebServerFactoryCustomizer nettyServerWiretapCustomizer(Environment environment, ServerProperties serverProperties) {return new NettyWebServerFactoryCustomizer(environment, serverProperties) {Overridepublic 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 NettyWebServerFactoryCustomizerimplements WebServerFactoryCustomizerNettyReactiveWebServerFactory{private final Environment environment;private final ServerProperties serverProperties;Overridepublic 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;Overridepublic 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;/*** 启动方法*/Overridepublic 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();}/*** 停止方法*/Overridepublic 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, ? superHttpServerResponse, ? extends PublisherVoid handler) {return new HttpServerHandle(this, handler);} }ENDENDEND
http://www.w-s-a.com/news/390312/

相关文章:

  • 水冶那里有做网站的对于网站链接优化有哪些建议
  • 宝安中心地铁站是几号线化妆品网站做的好的
  • 海宁营销型网站设计企业融资是什么意思
  • 淘宝客做网站要钱吗网站开发试题库
  • 10g空间网站做视频网站网站建设找超速云
  • 一元购网站怎么做企业网站源码cms
  • 域名不变 网站改版临沂企业网站建站模板
  • 天河网站建设信科网络外包公司和公司直招哪个好
  • 网站制作哈尔滨聊天系统源码
  • 网站建设朋友圈素材青白江建设网站
  • 红酒网站设计软件设计文档
  • 如何创建网站目录网站申请支付宝接口
  • 网站做区块链然后往里面投钱品牌设计公司收费标准
  • 2022互联网+创新创业项目呼和浩特企业网站排名优化
  • 电子商务类网站建设山西自助建站系统怎么用
  • odoo做网站网站设置专栏有什么好处
  • 局域网内个人网站建设查询企业的网站有哪些
  • 网站建设属于技术开发吗网页制作团队
  • 做家常菜的网站哪个好哪个网站做图片外链
  • 眼科医院网站设计怎么做6深圳宝安是什么风险等级
  • 网站制作容易吗logo免费生成网站
  • 建设厅官方网站下载专区网络托管公司
  • 祥云平台官方网站网线制作实验原理
  • 把网站做成app的软件下载国外做兼职的网站有哪些
  • 网站建设 海豚弯专业的网站开发服务商
  • 那个网站有免费模板中国家装公司十大排名
  • 中铁建设集团有限公司门户网站余杭区建设规划局网站
  • 天猫网站建设的目标是什么做网站常见问题模板
  • 做php网站需要什么软件天津建设网官方网站
  • 南漳网站开发上海网站推广方法