“根本就不需要 Kafka 这样的大型分布式系统!”

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csdnnews/article/details/99367147

640?wx_fmt=gif

由 Scala 和 Java 编写的 Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据,不过,Kafka 也存在数据并非真正的实时传输、不支持物联网传感数据直接接入、监控不完善等缺点。事实上,作为开发者,在项目中通常会视情况而定地去选择适用的技术架构,而并非所有相关的架构就适合自己,在本文中,作者基于特定的项目及场景强烈地表达了对 Kafka的不满,而这究竟是何原因导致的?

640?wx_fmt=jpeg

作者 | Normcore Tech
译者 | 弯月,责编 | 屠敏出品 | CSDN(ID:CSDNnews)以下为译文:可能有人没有听说过Kafka,这是一个非常复杂的分布式软件,可协调多台计算机之间的数据传输。更具体地说,该软件的功能是“展平”数据,然后快速地将数据从一个地方移动到另一个地方。一般来讲,如果你有很多数据需要快速处理并发送到其他地方,那么就可以考虑一下Kafka。Kafka还可以在一定期限内保留数据,比如设置数据保存2天、3天或7天,如果你的下游流程失败,那么你还可以利用存储在Kafka中的数据重新处理。许多处理汇总数据的公司(比如Facebook和Twitter等社交网络数据,以及每晚需要处理大量星体运动的天文学家,或需要快速了解车辆周围环境数据的自动驾驶车辆公司等)都在使用Kafka,将任意地方生产的数据(即用户通过键盘输入的数据,通过望远镜读取的数据,通过车辆遥测读取的数据等)移动至下游流程进行处理和分析。最近,WeWork更为名The We Company,他们在共享工作间领域取得了成功,其官网宣称公司的使命为:“提升世界的意识。”其核心业务是从房地产出租公司那里租下办公室,然后转租给无法按照传统流程租赁办公室的个人和小公司。为了“提升世界的意识”,该公司致力于为世界各地的个人和公司的团队打造独特却又不完全相同的办公空间。最近,该公司还开始涉足教育。最近,因为上市,WeWork曝光了一些财务信息:WeWork的收入从2017年的8.86亿美元增加到2018年的18亿美元,大约翻了一番,而净亏损达到惊人的19亿美元。对于即将上市的公司而言,这个数字可不怎么好看;然而也有先例,优步的增长萎缩依然未能阻碍其完成一场备受关注的公开募股。以下是Crunchbase新闻报道的WeWork财务报告:

  • 2017年WeWork的收入为:8.86亿美元

  • 2017年WeWork的净亏损为:9.33亿美元

  • 2018年WeWorks的收入为:18.2亿美元(+ 105.4%)

  • 2018年WeWork的净亏损为:19亿美元(+ 103.6%)

从好的方面来看,根据Axios的数据,2018年WeWork的入住率为90%,且会员总数在不断增加。有人常常将WeWork视为硅谷地区的公司过高估值的完美例子。作为一家房地产企业,WeWork烧钱的速度非常快,毫无疑问他们必须努力让公众市场投资者相信公司有长远的发展,同时和还要维护其作为科技公司的地位。这家公司再三强调说它不是一家房地产公司(毕竟它在不断烧钱对吧?),那么一家消息中介技术公司究竟能提供什么?WeWork曾宣布,它使用Kafka来实现“内部部署的物联网需求”。这是什么意思?“我们的产品是物理空间,”WeWork的首席开发负责人David Fano说,他在会议期间穿着一件印有“bldgs = data”字样的T恤。每个办公室都有10个环境传感器——小巧的壁挂式绿色盒子,这些传感器可跟踪室内温度、湿度、空气质量、气压和环境光线水平。还有20个白色的壁挂式信标,呈三角形分布在公共空间(开放式办公区和会议室),用于测量WeWork成员的室内位置(数据是匿名的)。顶部四分之一的传感器通过计算机视觉观察成员的活动。 换句话说,WeWork会跟踪WeWork的多个物理事件并记录所有这些数据。但是......他们真的有必要这样做吗?记录Keith Harring壁画周围开放区域的环境温度能给他们带来怎样的竞争优势?更重要的是,他们能否将这些信息用到重要的项目中?由于WeWork的资金主要来自订阅,特别是来自企业的订阅,因此为这些客户优化空间是有意义的:对于公司而言,重要的是要了解办公室的“单位组合” ——私人办公室、会议空间和开放式办公桌——的比例,我们可以利用这些信息对下一个办公间作出调整。我觉得这家新闻报道机构需要建立一种思考技术的心理模型。Ben Thompson为Stratechery提供了出色的服务,他建立了聚合理论(https://stratechery.com/concepts/),我在努力为这些理论建立一个网站,如果必须从中选择一个的话,那便是:大多数创业公司(以及大公司)现有的技术栈都没有必要。在此,我想挑战一下那些自认为可以在一个周末期间独自建立Facebook的Hacker News上的开发人员,我认为WeWork的实际业务和架构问题在于:WeWork需要的只不过是清点进出的人数,然后对容量规划做优化而已,追踪“气压”有什么用?只要你有WeWork的ID,那你肯定是个人或公司。那么,在大堂里安装一个登记系统,并要求会议系统发放名牌,不是更简单吗?第一项要求根本就不需要Kafka: 目前WeWork有280个办公间。假设每个办公间平均每天有1000个(有这么多吗?)成员出入。那么每天会产生280,000个事务。我们假设每个人在早餐时间进来一次,在午餐时间出入各一次,然后离开。那么每个人会产生4个事务。那么每天大约是100万个事务,这点数据量存储在最常用的开源关系数据库Postgres中就可以了。保守地说,Postgres每秒可以提供10,000次写入(如果设置得当,其写入次数会更高)。每天100万个事件,也就是每秒11次。根本就不是问题。至于第二项要求,受预订会议室人数的影响,产生的数据量可能更高,但你不需要实时传输数据。你完全可以等到一天结束时批量处理或收集,这同样可以利用司空见惯的关系数据库。 与大型Postgres(或者是BigQuery,或选择其他关系数据库连接到接收JSON传感器数据的Web服务)相比,Kafka的日常开销要高出很多,因为分布式系统非常非常复杂,比传统的系统复杂得多。Kafka是一个非常优秀的强大的工具,但各个公司在采用该软件时,需要三思而后行。杀鸡焉用牛刀,WeWork用Kafka来记录开放办公间的气压,实属大材小用。 虽然很多时候我们都不需要Kafka,但开发人员很喜欢推荐这个工具,因为他们可以借机积攒经验和谈资。开发人员喜欢用最尖端的技术来完成工作,有时甚至他们自己都没意识到这一点。过度架构真实存在。Nemil在一篇文章中说:在职业生涯的早期,你遇到的大量设计不良的软件系统都要归咎于那些传播错误观点的工程媒体。在大学和培训班中,你对工程的了解主要来自工程媒体,例如 Hacker News、聚会、会议、Free Code Camp和Hacker Noon等。这些网站广泛讨论的技术(比如微服务、前端框架或区块链)自然会现在你的技术栈中,虽然不是很必要。使用这些技术栈会导致各个公司承担不必要的债务,导致他们不得不在风险投资周期中寻求更多的资金,无法迈向精益或从别人的资金中解脱出来。这种不幸的趋势只会持续下去,我们唯一能做的就是公之于众。原文:https://vicki.substack.com/p/you-dont-need-kafka声明:本文为CSDN翻译,转载请注明来源出处。

【END】

同为Python工程师,年薪30w和年薪50w的差距在哪里?

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

640?wx_fmt=jpeg

 热 文 推 荐 

☞今日头条搜索网页版上线;华为筹建中国开源基金;Racket v7.4 发布 | 极客头条

亚马逊与 Uber,软件开发的方式有何不同?

豪投10亿!华为放话2025年97%的大企业采用AI!网友神回应了

Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!

☞主链100强榜单出炉, XRP竟与比特币比肩; 以太坊每周产生1248种新代币 | 数据周榜

Docker,一个傲娇的男人

AI“生死”落地:谁有资格入选AI Top 30+案例?

最前沿:堪比E=mc2,Al-GA才是实现AGI的指标性方法论?

边看边用!这本 Python 3.6 的书火爆了 IT 圈!

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

展开阅读全文

这坑人的API,根本就不精确

05-15

好不容易才找到 GetSystemTimeAsFileTime 这个API 用来获取精确时间rnrnVOID GetSystemTimeAsFileTime(rn LPFILETIME lpSystemTimeAsFileTime // pointer to a file time rn // structurern);rnrnFILETIMErnThe FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601. rnrn看到可以获取精度到百纳秒就高兴急了,可以实现我的微妙检测。rnrn结果坑死我了。rnrn我用下面代码测试:rnrn[code=C/C++]rn FILETIME t1, t2;rn LARGE_INTEGER i1, i2;rnrn GetSystemTimeAsFileTime(&t1);rn i1.LowPart = t1.dwLowDateTime;rn i1.HighPart = t1.dwHighDateTime;rnrn for (int i = 0, N = 6000000; i < N; ++i)rn ;rnrn GetSystemTimeAsFileTime(&t2);rn i2.LowPart = t2.dwLowDateTime;rn i2.HighPart = t2.dwHighDateTime;rnrn int t = i2.QuadPart - i1.QuadPart;rnrn[/code]rnrn本来以为t会比较小, N值从1000一直开始加,到5000000都是0,刚换6000000就猛的变成156250,15.625毫秒。rnrn不说个位级别的微妙了,就连各位级别的毫秒都看不到。rnrn完全不明白怎么回事。。。。。。。。。。。rnrn然后又这样换了,进行测试:rn[code=C/C++]rn long long t1, t2;rnrn t1 = GetTickCount();rnrn while(true)rn rn if ((t2 = GetTickCount()) - t1 > 0)rn rn cout << t2 - t1 << endl;rn t1 = t2;rn rn rn[/code]rn本来以为至少可以看到个位级别的毫秒。rnrn但是最小单位就固死了是15和16毫秒, 一直输出15或16.rnrn感觉,系统能取到的最小时间精度就是15或16毫秒了。。。rnrnrn这是怎么回事啊。我晕啊··rnrn看来获取当前时间精确到微妙是不可能了。rnrn但是一个时间间隔精确到微妙应该没问题,因为还有QueryPerformanceCounter 和 QueryPerformanceFrequencyrnrnrn唉。。。。。感觉好坑~~~rnrn 论坛

没有更多推荐了,返回首页