Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 在选择服务器语言时,除了开发时间外,我还必须考虑哪些因素?_Performance_Service_Microservices - Fatal编程技术网

Performance 在选择服务器语言时,除了开发时间外,我还必须考虑哪些因素?

Performance 在选择服务器语言时,除了开发时间外,我还必须考虑哪些因素?,performance,service,microservices,Performance,Service,Microservices,我试图更好地理解服务器语言/框架及其在微服务环境中使用的潜在优势和劣势。开发时间对我来说并不重要,因为这是我个人的项目,学习使用正确的工具解决问题对我来说比构建服务所需的开发时间更重要 我想得越多,我就越觉得90%的时间都应该使用长生不老药。原因有两方面: 1) 并发性意味着许多用户可以访问服务而不会失败 2) 大多数微服务的处理开销为0,它们访问数据库并返回json。也就是说,使用更快的语言访问数据库的收益与使用较慢的语言是无法区分的。该数据库将决定数据返回的速度,而不是服务器语言,因为数据库

我试图更好地理解服务器语言/框架及其在微服务环境中使用的潜在优势和劣势。开发时间对我来说并不重要,因为这是我个人的项目,学习使用正确的工具解决问题对我来说比构建服务所需的开发时间更重要

我想得越多,我就越觉得90%的时间都应该使用长生不老药。原因有两方面:

1) 并发性意味着许多用户可以访问服务而不会失败

2) 大多数微服务的处理开销为0,它们访问数据库并返回json。也就是说,使用更快的语言访问数据库的收益与使用较慢的语言是无法区分的。该数据库将决定数据返回的速度,而不是服务器语言,因为数据库实现本身将以C++等低级语言编写。(这是真的吗?Elixir+Postgresql会明显慢于Go+Postgresql吗?甚至Ruby+Postgresql吗?是瓶颈Postgresql还是发出请求的语言?)

假设以上2条都是真的,那么我有理由认为我会在90%的时间里使用Elixir,因为我会得到一个经过未来验证的服务,可以应对流量峰值,而且它的执行速度通常与任何其他数据库检索Rest API相同

另一个服务需要处理器速度的10%的时间,像图像识别服务,然后我将在C++或Python中实现,因为它已经有C++实现的图像识别库(ie Tensor Flow)。 这是考虑何时为微服务使用特定语言的正确方法吗?如果不是,除了开发时间之外,我还应该考虑什么? 假设以上2条是真的,那么我有理由相信我90%的时间都会使用长生不老药[…]

在做这些陈述时要小心!他们引诱你选择你在建立新服务时经常选择的东西,而实际上你应该考虑该服务应该做什么,以及哪些语言和框架可以帮助你达到最佳效果!也就是说:你的两个前提都是真的!DB hit是最昂贵的操作,在处理较大负载时,并发性是一个至关重要的工具。它们是正确的,但并不完整:您可能需要考虑其他条件,如资源消耗、平台的调度行为等

就语言数量而言:托管语言(例如基于JVM或.NET运行时的所有语言)总是意味着一定的静态开销,因为它们需要进行垃圾收集,或者需要在运行中编译代码,运行时动态类型推断,反射等。这意味着,他们将需要更多的内存和CPU周期比其他语言如C++,GO,RISE和喜欢。 虽然你必须用C++语言来进行内存管理,但是GO、D和RIST等语言试图为完全管理的语言/运行时提供一个中间的基础,比如JVM或.NET.< 与您在语言/运行时方面的选择同样重要的是您的体系结构。所有涉及经典数据库的东西都可能在扩展方面给你带来麻烦,所有碰到磁盘的东西都会在负载下杀死你


那么我的建议是什么?记住所有的变量(请求延迟不是唯一的指标!资源消耗也可能是一个杀手!),选择最好的语言和工具链,以满足您的服务填充和验证不同体系结构的任何目的

@enzian这个问题对程序员来说不太合适-很快就会被否决并关闭,请参阅推荐阅读: