V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  byte10  ›  全部回复第 51 页 / 共 91 页
回复总数  1810
1 ... 47  48  49  50  51  52  53  54  55  56 ... 91  
2022-04-21 13:07:25 +08:00
回复了 Dogod37 创建的主题 Java 密集多次 http 请求外部接口怎么操作比较好?
可执行代码:

```
@PostMapping("/test")
public void postUrl(HttpServletRequest req) {
final AsyncContext ctx = req.startAsync();
List<String> respList = new ArrayList<>();
int taskNum = 10;
CountDownLatch countDownLatch = new CountDownLatch(taskNum);
for (int i = 0; i < taskNum; i++) {
VertxHttpClientUtil httpClientUtil = new VertxHttpClientUtil();
httpClientUtil.post("https://baidu.com", (resp) -> {
respList.add(resp);
countDownLatch.countDown();
});
}
CompletableFuture.supplyAsync(() -> {
try {
countDownLatch.await();
System.out.println("finish..");
ctx.getResponse().getWriter().print(respList.get(0));
ctx.complete();
} catch (Exception e) {
e.printStackTrace();
}
return null;
});
}

```
CompletableFuture ,请自行设置 50-200 个线程,瓶颈在于 CompletableFuture 的线程数和你第三接口的吞吐量了。
2022-04-21 12:41:03 +08:00
回复了 Dogod37 创建的主题 Java 密集多次 http 请求外部接口怎么操作比较好?
你可以看看我的答案,完美符合你的需求。https://www.bilibili.com/video/BV1FS4y1o7QB , 用 tomcat 的 NIO ,异步 servlet api ,完全没压力,你个机器单机 1000/s 吞吐量都可以。客户端找一个响应式的,或 vert.x 生态的也有,我代码给出了例子。不要先判断对错,要先看。看完,就会明白。当然 CompletableFuture 。allOf 也得用上,不然不好控制多个任务的同步问题
2022-04-21 10:03:09 +08:00
回复了 byte10 创建的主题 NAS 挑战全网最小 3.5 寸四盘位 nas 主机,有视频来瞧瞧
@kukat 😄,有信心,因为自己操刀的。而且群晖系统牛皮,只要硬盘在问题不大,换 U 盘启动,换主机迁移,我都测试过没问题,妥妥的稳。

@Cassius 这个好,非常的硬核,非常的全面,非常感谢。后续我看看是否要换 12V-ATX 模块。
2022-04-20 21:36:23 +08:00
回复了 DavidA 创建的主题 宽带症候群 想 DIY 软路由,有什么学习渠道吗?
咸鱼直接买 R4S 吧或者 R2S 。或者搞旁路由,我的就是旁路由,你直接虚拟机跑一个,旁路由比较好玩。
2022-04-20 17:37:25 +08:00
回复了 byte10 创建的主题 NAS 挑战全网最小 3.5 寸四盘位 nas 主机,有视频来瞧瞧
@geniussoft 我应该想错了,不需要继电器,直接连接备用锂电池就可以了,只要加一个二极管隔离就可以了。后面电路图画好,请教下你。
2022-04-20 16:44:20 +08:00
回复了 byte10 创建的主题 NAS 挑战全网最小 3.5 寸四盘位 nas 主机,有视频来瞧瞧
@geniussoft 那有什么其他的好方案,可以介绍下吗?因为我的电路的知识很有限。
2022-04-20 16:08:29 +08:00
回复了 byte10 创建的主题 NAS 挑战全网最小 3.5 寸四盘位 nas 主机,有视频来瞧瞧
@geniussoft 嗯 你这个解释我能接受。切换的电压曲线,我可能搞不定,我没示波器。但是我有大电容可以提供秒级的电压, 不会有欠压情况,继电器切换开关在 30-60ms ,固态继电器的就更短。而锂电池可以提供半个小时的电量。你电路高手啊,你应该可以设计出这样的备用电源的电路啊,从理论出发是完全没问题的。这么简单的电路设计,闭着眼睛都能画出来吧。

@ruanimal 有可能,但是印象中是有过一次震动,大部分情况都是放沙发。
2022-04-20 14:06:41 +08:00
回复了 byte10 创建的主题 NAS 挑战全网最小 3.5 寸四盘位 nas 主机,有视频来瞧瞧
@geniussoft 。。。这论据是啥?这个 nas 主机的可靠性可能是差了一点点,但是放角落不动,没啥大问题,散热可以再优化。至于 UPS 是可行,因为我有验证过,你的论据是啥?
2022-04-20 13:23:06 +08:00
回复了 byte10 创建的主题 NAS 挑战全网最小 3.5 寸四盘位 nas 主机,有视频来瞧瞧
@codefever 之前散热不行,拷贝东西都死机了 ,现在的散热估计还有待改进,现在深圳 23 度,硬盘待机将近 40 度。拷贝 10 分钟,硬盘温度会去到 50-60 度,如果不是高强度应该可以,而且目前只有 3 个硬盘还行。。。。夏天到了再看看后面可以再优化一下,
@Jekins 可以看看那个 B 战-小巫老师,视频:NIO 场景和实战,有很多场景和代码验证。还有一个 NIO 服务的绝对优势,看完你就知道小白的问题在哪里了。里面还有一个多线程的讲解,也有代码验证 《最大线程数计算公式》的例子。大多数人都不知道怎么去理解 NIO ,他们以为 用上 tomcat 8.x 后的就以为用上了 NIO 了,实际上还差一些。

@xxfye 正确,回答正确。tomcat NIO 要开 200 个线程,那是因为业务层“一般”一般一般依然使用阻塞模型,如果使用异步模型,那么只要少量的线程即可,但是需要使用者去主动设置。

关于网上说的:bio 上下文竞争比 nio 强烈 。因为 NIO 一般只需要设置等于 cpu 核心数即可,BIO 需要设置大量的线程,所以结果是:bio 上下文竞争比 nio 强烈。因果关系没搞明白吗?

如果你想测试多线程开销到底有多大的影响,我代码中有给出例子,你可以使用 TestMaxThreadNum.calculationCpuTime() 去验证,第一次设置 cpu 核心数量,第二次设置 2000 个线程,你就会发现 2000 大量的线程 跑起来没有线程数量少的快( cpu 密集型情况下)。所以 ”线程数量多“ 的上下文竞争 会比 ”线程数量少“ 的厉害,性能会有所下降。

另外 BIO 上下文竞争是否会比 NIO 厉害,这里要区分情况,如果 BIO 线程中经常出现 IO 等待,那么不会有特别多的线程竞争。只有在 IO 时间短,且存在大量的线程的情况下,才会出现这样的情况。要减少这种情况,就需要在业务 IO 时间短的时候,使用少量线程,这不好设置和判断。而 NIO 则可以无视 IO 时间,我在视频中有讲过。

能救一个算一个。
@Leviathann tomcat 问题不大啊,你应该看看我的那个讲解 会给你展示 tomcat 如何处理高并发的场景,不是它不行,而是大部分人不会用。它 tomcat 也是支持 NIO ,使用 servlet 异步编程,依然可以少量的线程,处理高并发。b 战:小巫老师的 NIO 服务的优势-无视 IO 时间,tomat 单机跑 1w+/s 的 QPS 也问题不大。

@zmal 是的,我已经给 OP 的测试方案了,希望他能研究学习下。
@relaxchen mongodb 不是内网部署吗,相对安全把?被批量扫库是什么意思?
@lisongeee 即便 OP 能拿出数据来,也可能是错的,因为测试的方案就不正确了。

我那个视频有讲解怎么做正确的压力测试的,一般用 jmeter 测试没问题,但是测试 NIO 就需要换一个,可以使用 ab(ApacheBench)和 wrk 压测工具。如果知道 http 协议 那么就应该知道 连接数 是关键因素,但是太多人不清楚了。。。jmeter 适合测试 BIO 的服务,不适合测试 NIO 的服务,建议用 wrk 这个工具。
@jeesk 哈哈,先看完,如果有问题可以留言或者 加绿色。我已经给你答案了,还有很多测试的代码,可以验证你的疑虑。为何 tomcat NIO 等于没用?因为下游的业务代码全是阻塞 IO 代码,所以你才会看到 tomcat NIO 依然需要默认 200 个线程。而 webflux 默认就是 cpu 核心数的线程,因为它是响应式编程。除了 webflux ,还有一个 vert.x 使用异步编程,也可以做到少量线程。当然你的业务如果是阻塞 IO 的操作,比如 mysql 读写等,还是需要创建的线程池去处理。

作为一个后辈,我是需要你做出指引,给大家做出指引,科普知识非常的困难,我尽力而为。当然你说的推广算是附带的吧。
@Jekins 可以看看我的视频。B 站:小巫老师,视频:NIO 二 实战演练 ,里面就一个几个案例,讲到为何要用 NIO 。另外一个 视频:NIO 的绝对优势 这个视频非常的强,可以打开 NIO 的思路。里面有很多测试代码,可以帮组你理解 NIO 为何几个线程就可以吊打 BIO 几千个线程。

@nothingistrue 正确,200 个线程难以看出差距,不过在低端 cpu 可以看出和 4 个线程的差距,高端 cpu 起码 2000 个线程和 10 个线程对比才能看出来,另外要测试的话 需要用 cpu 密集型任务去验证,很多小白会用 IO 任务去验证。。我头大。

@hidemyself 你可以看看我的视频,B 站:小巫老师,NIO 二 实战演练,讲述了为何需要 NIO 的场景,里面有很多测试的代码,看完你应该就能明白,NIO 有绝对的性能优势。 等 java 的协程出来,BIO 就基本不会在用了。
@jeesk 少年,你多听前辈的。我来给你一一解答把,第一点:你用 BIO 和 NIO 都是 200 个线程 ,首先你条件是错了。。NIO 只要 4 个线程即可。另外要验证 BIO 上下文切换厉害,这个是需要在 IO 时间很短的情况下才会出现,且 200 个线程不算啥,你得开 1000 个线程才能看出有差距。

所以你要验证线程上下文切换的损耗,我给你一个测试的方案。写一个 main 方法,一个用 4 个线程,一个用 200 个线程,处理的任务是:判断 100000007 是否为一个质数(一个线程计算一个数,总共相同计算 500 次),一个数 for 循环一亿次去判断,最终得到的是 4 个线程比 200 个线程快,原因就是线程切换会有开销,至于你看起来差不多,那是因为现在的 cpu 单核很快。你可以换成树莓派,或者手机 linux deploy ,或者几年前的双核 I3 去验证。你要多学习,多思考。不然以后会误导后辈的,我们公司都很多这样的小白,没有完整的验证方案,因为不懂这基础知识,所以没法设计验证的方案。

第二个问题:一般 BIO - tomcat ,如果有 2000 个用户在线,那么就需要 2000 个线程,除非用伪 BIO 。

第三个问题:你的思路很混乱,我暂时无法回答,也不知道从哪里回答你。

对于 NIO 你先看我的视频,如果能看懂,你就算是毕业了,如果还没看懂,那么是我的讲的还不行。里面有大量的 test case 去验证 tomcat 线程数的数量该设置多少,https://www.bilibili.com/video/BV1FS4y1o7QB ,主页我还有一个视频讲多线程的,应该对你也有帮助。。

@jeesk 关于 tomcat NIO 和 BIO 为何默认 200 个线程。这个从你目前的知识,无法解答。答案在视频里,如果你看懂了,自然明白。里面有大量的数据可以验证,tomcat 有 NIO 但是大多数人 还不会使用。tomcat NIO 的 支持 servlet 用异步编程的模式,只需要设置 tomcat 线程数等于 cpu 核心数 即可。里面有大量的例子给你证明的,希望你能明白。

@hidemyself 你可以看看我的视频,应该能回到你的问题 https://www.bilibili.com/video/BV1FS4y1o7QB
2022-04-16 18:02:35 +08:00
回复了 fox0001 创建的主题 Java 关于 Spring 5 的 WebClient 的困惑
@zartouch 完全正确。
@fox0001 你可以看看这个 https://www.bilibili.com/video/BV1Gq4y1e752 ,这有用到你说的那个响应式编程 httpclient 。#6 楼 说的是非常正确的。如果你的整个项目都是同步编程开发,那么最好不要用响应式编程的工具,不然会很麻烦,除非你很清楚这个使用方式。 这个讲 NIO 的为啥那么强,最好看下这个,https://www.bilibili.com/video/BV1Gq4y1e752
2022-04-16 14:35:13 +08:00
回复了 shallwei 创建的主题 云计算 腾讯云香港 两个月被封了 2 次 443,是什么问题?
@XSNARUTO 感觉你这个最靠谱😄
@herozzm 我也觉得没毛病。

我觉得要不打直接 明牌好了,直接 tcp 明文好了,反其道而行,你看我的访问都是正规的网站。tls 流量大,大概率被封。
2022-04-15 09:51:15 +08:00
回复了 Tukali 创建的主题 macOS 好用的随身 wifi 有哪些
三星 S9, 三星 S10 ,NOTE10 ,内网同一个房间,理论值 865Mpbs, 实际值 SMB 速度 60-70mb/s ,还有谁?高功率的 wifi5 。应该可以直接吊打 wifi5 的路由器吧? 咸鱼 300-500 买个破屏幕 就可以了
2022-04-15 09:38:07 +08:00
回复了 zdx0122 创建的主题 问与答 有哪些推荐的 mini 主机
直接咸鱼搜索 1165G7 ,回头感谢我吧,我没有币了。。有一个 10X10CM 的小主机 1699-1899 ,目前最好的小主机,性价比最高的小主机了。amd 也有 5900hx 那些。。不着急的话可以等 intel 12 代的,多核适合编程。

记得回头感谢我的回答
2022-04-13 16:46:17 +08:00
回复了 jessun1990 创建的主题 Apple 求问: PDD 的低价 M1,到底坑在哪里?
去年澳门版全新只要 7500-7600 元,16+256 。。去咸鱼买把,我都买了几个了,都还在保修。
2022-04-13 16:43:37 +08:00
回复了 dunhanson 创建的主题 程序员 为什么要区分不同的 http 状态码?想说服同事
@Biwood 哈哈 用 404 劫持页面,这个鸡贼😂
@adoal 可以的 666 ,收录你的回答,以后可以用这个理由。
@BeautifulSoap 同意。
@1000copy 挺好的,收录你这些理由。
@alswl 同意,收录,单纯把 http 当做传输协议也未尝不可,尤其是在 app 端是更好了。
@adoal 挺好的分析
@MrSheng 😂,可以的。
@salmon5 真实了。
@3dwelcome 可以的,案例不错。
@lisongeee 哈哈跨界了
@coala restful 规范确实很难执行
@seakingii 我不喜欢 restful ,都是太过于理想了。

总结一下:业务服务还是 200 一把梭好,没有啥原因,把 http 当成一个传输协议,因为有可能用 mqtt ,也可能用 ws 。听话不然就会很惨的,以后会很惨,前端后端都惨。跟那个 restful 一样,最后四不像。还是把事情简单化吧,不然以后不会幸福的。
1 ... 47  48  49  50  51  52  53  54  55  56 ... 91  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1085 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 18:55 · PVG 02:55 · LAX 11:55 · JFK 14:55
Developed with CodeLauncher
♥ Do have faith in what you're doing.