首页 > 作文

三种Java自定义DNS解析器方法与实践

更新时间:2023-04-05 20:43:19 阅读: 评论:0

前言:

最近终于用上了高性能的测试机(54c96g * 3),相较之前的单机性能提升了三倍,数量提升了三倍,更关键的宽带提单机升了30倍不止,总体讲提升了100多倍,这下再也不用担心单机压力机瓶颈,直接原地起飞。

不过没高兴5分钟,我发现接口居然请求不通,经过一阵拨乱反正终于找到原因:域名无法解析,ip无法直接访问。

自然而然,解决方案呼之欲出:自定义java dns解析器。

经过同事指点、资料搜索和探索实践。终于锁定了两个核心类:org.apache.http.impl.conn.inmemorydnsresolverorg.apache.http.impl.conn.systemdefaultdnsresolver,下面我会演示一下这两个类的使用实践,其中主要区别还是在负载均衡的实现上,这个有空再分享。

1.inmemorydnsresolver

这个类使用比较简单,先写一个demo,实现一个简单的域名解析。

这样我们就可以把fun.tester解析到127.0.0.1上了,后面我会进行一个简单的测试。

2.systemdefaultdnsresolver

这个看名字是系统默认dns解析器,但默认在哪,我也没看出来,唯一可以查到的引用就是异步线程池管理器使用

org.apache.http.impl.nio.conn.poolingnhttpclientconnectionmanager#poolingnhttpclientconnectionmanager(org.apache.http.nio.reactor.connectingioreactor, org.apache.http.nio.conn.nhttpconnectionfactory<org.apache.http.nio.conn.managednhttpclientconnection>, org.apache.http.config.registry<org.apache.http.nio.conn.schemeiossionstrategy>, org.apache.http.conn.schemeportresolver, org.apache.http.conn.dnsresolver, long, java.util.concurrent.timeunit),

接下来我们看这个demo

3.自定义dnsresolver

通过源码可以看出,两个实现类都是通过实现org.apache.http.conn.dnsresolver这个接口中org.apache.http.conn.dnsresolver#resolve方法。我们自己可以完全自己实现。

仔细看不难发现,其实就是代码缝合怪。

4.连接池管理器

下面分享一下如何使用自定义动脉硬化的原因的org.apache.http.conn.dnsresolver,就是在创建连接池管理器的时候设置一下就可以。

5.测试

首先我在本地起一个http服务,端口12345,非常简单。代码如下:

然高中优秀议论文800字后我准备一个测试脚本:

控制台日志输出:

info-> 27.214 f-1 请求uri:http://fun.tester如何早起:12345/ , 耗时:304 ms , httpcode: 200
info-> 27.214 f-4 请求uri:http://fun.tester:12345/ , 耗时:304 ms , httpcode: 200
info-> 27.214 f-10 请求uri:http://fun.tester:12345/ , 耗时:305 ms , httpcode: 200
info-> 27.214 f-5 请求uri:http://fun.tester:12345/ , 耗时:305 ms 福州大学旗山校区, httpcode: 200
info-> 27.214 f-2 请求uri:http://fun.tester:12345/ , 耗时:305 ms , httpcode: 200
info-> 27.214 f-8 请求uri:http://fun.tester:12345/ , 耗时:305 ms , httpcode: 200
info-> 27.214 f-3 请求uri:http://fun.tester:12345/ , 耗时:305 ms , httpc中秋作文200字优秀ode: 200
info-> 27.214 f-7 请求uri:http://fun.tester:12345/ , 耗时:305 ms , httpcode: 200
info-> 27.214 f-6 请求uri:http://fun.tester:12345/ , 耗时:305 ms , httpcode: 200
info-> 27.214 f-9 请求uri:http://fun.tester:12345/ , 耗时:305 ms , httpcode: 200

三种实现方式控制台输出大同小异,都能满足我们的需求,当然仅仅是功能测试场景下。下期会结合源码分析如何实现负载均衡。

到此这篇关于三种java自定义dns解析器方法与实践的文章就介绍到这了,更多相关java自定义dns解析器内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-05 20:43:10,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/5eccc094e9e74eaf53d73148812c0146.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:三种Java自定义DNS解析器方法与实践.doc

本文 PDF 下载地址:三种Java自定义DNS解析器方法与实践.pdf

标签:自定义   测试   管理器   简单
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图