应用程序的性能决定了软件可以完成预期任务的速度。它回答了关于应用程序的一些问题,例如:
峰值负载下的响应时间 与其他选择在易用性、支持的功能和用例等方面的比较 操作成本(CPU使用、内存需求、数据吞吐量、带宽等)
这种性能分析的价值超出了对服务负载所需的计算资源或满足峰值需求所需的应用程序实例数量所做的估算。性能显然与成功企业的基本原则相关。它反映了整体用户体验,包括确定哪些因素会增加了响应时间,通过设计根据带宽优化的内容交付提高客户黏性,选择最佳设备,最终帮助企业发展业务。
问题
当然,这是对业务服务的性能工程价值的过度简化。要理解笔者刚才描述的挑战,情况真实而复杂。
现实世界的应用程序可能托管在云上。应用程序可以利用非常大(或概念上无限)的计算资源量。它在硬件和软件方面的需求将通过云来满足。开发人员将使用云提供的功能来实现更快的编码和部署。云托管不是免费的,成本开销与应用程序的资源需求成正比。
除了搜索服务(SaaS),平台即服务(PaaS),基础架构即服务(IaaS)和负载平衡即服务(LBaaS)这是云端负责此托管应用程序的流量管理之外,开发人员可能也使用以下一个或多个快速增长的云服务:
安全即服务(SECaaS),满足软件和用户的安全需求 数据即服务(DaaS),根据应用程序的需求提供用户的数据 日志记录即服务(LaaS),DaaS的“近亲”,提供关于日志传送和使用的分析指标 搜索即服务(SaaS),用于应用程序的分析和大数据需求 网络即服务(NaaS),用于通过公共网络发送和接收数据
云服务也呈指数级增长,因为它们使开发人员更容易编写复杂的应用程序。除了软件复杂性,所有这些分布式组件的相互作用也变得更加复杂。用户群变得更加多样化。软件的要求列表变得更长。对其他服务的依赖性变得更大。由于这些因素,这个生态系统中的缺陷可以触发性能问题的多米诺效应。
例如,假设你有一个精心编写的应用程序,它遵循安全编码实践,设计满足不同的负载要求,并经过全面测试。还假设你有基础架构和分析工作协同工作,以支持对基本性能的要求。将性能标准嵌入系统实现、设计和架构中需要什么?软件如何跟上不断变化的市场需求和新兴技术?如何衡量关键参数以调整老化的系统获得最佳性能?如何使系统具有弹性和自我恢复能力?如何更快地识别任何潜在的性能问题,并尽快解决它们?
选择容器
具有微服务设计或面向服务体系结构(SoA)优点的软件容器提高了性能,因为一个包括更小的、自足的代码块的系统更容易编码,并且对其他系统组件具有更清晰的、明确的依赖性。它更容易测试,并且问题(包括围绕资源利用和内存过度消耗的问题)比在巨型单片架构中更容易识别。
当扩展系统以服务增加的负载时,容器化的应用程序能快速且容易地复制。安全缺陷被更好地隔离。补丁可以独立地版本化和快速部署。性能监控更有针对性,测量更可靠。你还可以重写和“改造”资源密集型代码段,以满足不断发展的性能要求。
容器快速启动并快速停止。与虚拟机(VM)相比,它们实现了高效的资源利用和更好的进程隔离。容器没有空闲的内存和CPU开销。它们允许多个应用程序共享机器,而不会丢失数据或性能。容器使应用程序可移植,因此开发人员可以构建和运送应用程序到支持容器技术的、运行Linux的任何服务器,而不必担心性能损失。容器量入为出,并遵守集群管理器(如Cloud Foundry的Diego、Kubernetes、Apache Mesos和Docker Swarm)强加的配额(例如存储,计算和对象计数配额)。
容器在性能上表现出优势,即将到来的“无服务器”计算(也称为功能即服务(FaaS))会进一步扩展容器的好处。在FaaS时代,这些短命或短暂的容器将带来超越应用程序性能的优势,并直接转化为在云中托管的开销成本的节省。如果容器的工作速度更快,那么它的寿命会更短,并且计算过载是完全按需的。
编译:Jonathan Zhang
作者:Garima V Sharma
来源:https://opensource.com/article/17/2/performance-container-world
投稿邮箱:[email protected]
本文转载于微信公众号: OpenStack中国社区(openstackcn),更多微信文章请扫描关注公众号:
|