高并发下的“读后写”模式存在的问题

我们的服务有一个功能,该功能会限制同时使用的用户数,例如使用该功能的用户不能超过100个。就好像购买车票一样,可以购买到车票的人数不能超过该车次的对应区间的车票总数。然后,在并发测试中,我们发现,实际可以使用该功能的用户数达到了200。追查之后,我们发现,这是一个典型的“读后写“的模式带来并发问题。

阅读更多...

kill -9导致subprocess.run启动的子进程无法退出

背景

我们有一个任务托管平台,该平台可以托管python语言编写任务,并且可以对任务状态进行管理。由于业务的需要,我们需要在python的任务中调起一个shell脚本来完成一些额外的事情。当我们把编写好的任务部署到任务托管平台之后,我们发现一个奇怪的现象:当在任务的超时时间内手动结束任务的时候,只有python的父进程退出了,而python启动的shell子进程却没有退出。

阅读更多...

自动化测试首先是一种工作文化

自古以来,人类就有创造自动装置以减轻或代替人劳动的想法。自动化技术的产生和发展经历了漫长的历史过程。古代中国的铜壶滴漏(简称漏壶)、指南车以及17世纪欧洲出现的钟表和风磨控制装置,虽然都是毫无联系的发明,但对自动化技术的形成却起到了先导作用。

自动化测试之痛

最近在帮助一个团队梳理团队测试效率的问题,其目标是提升该团队的测试效率。在整个梳理的过程中,我发现一件非常有意思的事情:这个团队基本上没有自动化测试,大部分的测试手段还是手工测试加CR。更为有意思的事情是:团队成员大都对自动化测试比较抵触,认为自动化测试的成本较大,且看不到收益。

回想过去几年的测试工作,我发现,几乎所有的测试团队在面对自动化测试时都会存在类似的问题:希望自动化测试提升效率,但是执行时却发现自动化测试反而没有提升效率,因此慢慢废弃自动化测试,直至抵触自动化测试,到最后自动化测试变成一种“形而上”般的存在。我姑且称这种现象为——自动化测试之痛

阅读更多...

使用Boost::Python用C++开发Python库

背景

很多系统都会用json格式进行数据交互。为了保证数据在系统上下游的自动校验,避免数据结构异常带来的系统稳定性问题,可以采用json-schema来定义json接口,并利用json-schema-validator来校验接口响应的结构的合法性。

然而系统中不同子系统的实现(编程语言)并非总是一致,虽然各种语言都提供了json-schema-validator的具体实现,但是不同语言支持的json-schema-validator标准的版本并非完全一致,这会对后续的使用带来一些混乱,例如:

阅读更多...

集群时间戳不一致导致的问题及其分析和思考

1883年11月18日,美国第一个全国统一铁路时刻表诞生,这一天的正午时分,美国东部的时钟全部回拨。从此,上帝的时间被改用人间的指针来度量。 ——公司的力量

背景

最近遇到的业务上的问题涉及:在一个集群中,存在部分机器的时间戳和其它机器不一致而导致的重大问题。为了不泄露业务的相关信息,文中会用一个类似的场景来对这个问题进行分析。

阅读更多...

软件的熵和破窗原理

如下的内容,摘选自《程序员修炼之道——通向务实的最高境界(第二版)》。

虽然软件开发不受绝大多数物理法则的约束,但我们无法躲避来自“熵”的增加的重击。“熵”是一个物理学术语,它定义了一个系统的“无序”总量。不幸的是,热力学法则决定了宇宙中的熵会趋向最大化。当软件中的无序化增加时,程序员会说“软件在腐烂”。有些人可能会用更乐观的术语来称呼它,即“技术债”,潜台词是说他们总有一天会偿还的——恐怕不会还了。

阅读更多...

使用Wireshark分析SRT直播流

SRT(Secure Reliable Transport)是一种基于UDT(UDP-based Data Transfer)的、安全的、可靠的、开源的数据传输协议&技术。SRT在UDP基础之上实现了:智能数据重传机制和AES256加密技术,这使得其成为一种安全、可靠、低延迟的传输技术。利用SRT,可以实现在不可预测的网络环境下(例如互联网)高效、安全的传输数据。SRT还做了特殊优化以适合视频实时流数据的传输。根据SRT Alliance在2019-04-04的介绍,目前如下的应用已经集成并支持SRT:OBS StudioVideoLAN’s VLCFFmpegWireshark

阅读更多...
  • Copyrights © 2020-2024 Wang Wei
  • 本站访问人数: | 本站浏览次数:

请我喝杯咖啡吧~

微信