加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

如何在云中调节微服务

发布时间:2021-11-28 13:23:11 所属栏目:云计算 来源:互联网
导读:没有服务器可以进行计算吗?还是没有代码也能进行编程?人们需要在采用不断发展的云计算技术中思考这些创新。 云是人们一直在使用的定义并不明确的术语之一。就像政客在陷入困境时喜欢说解决问题的方法更多的是教育一样。在过去的十年或更长的时间里,从实习生
   没有服务器可以进行计算吗?还是没有代码也能进行编程?人们需要在采用不断发展的云计算技术中思考这些创新。
 
    “云”是人们一直在使用的定义并不明确的术语之一。就像政客在陷入困境时喜欢说解决问题的方法更多的是“教育”一样。在过去的十年或更长的时间里,从实习生到首席信息官,IT部门的每个人都知道,解决任何问题的正确答案都是“云”。
 
    但是,这个术语掩盖了很多复杂性和混乱性,因为其含义千差万别。在这个流行术语被采用之前,大型机提供商开始销售分时系统,托管公司在Unix服务器上租用帐户。像美国在线这样的公司以娱乐为背景,提供类似云计算的存储和计算服务。
 
    即使到现在,这种演变仍在继续。云计算最早的产品只是在服务器上运行的数十个虚拟机。即使用户实例只占机器的一小部分,也可以假定是root用户。FTP服务器后来被重命名为bucket和dropbox。从那时起,其衍生的服务开始爆炸式增长,“aaS”(即服务)已经成为首字母缩略词创建者最喜欢采用的后缀。
 
    这一演变仍在继续,每一项新的发展都促使云计算用户重新考虑他们希望购买和租赁的东西。其中许多是重新发现并重新包装的想法。许多都是解决上一代解决方案产生的问题的更智能的解决方案。所有这些都给人们提供了重新构建云计算的机会,希望让它焕然一新。
 
    以下是云计算发展和变化的七种重要方式:
 
    1.节省成本的计算粒度变小可以节省成本
 
    第一代无服务器计算具有相对较大的计算单元。例如,AWS Lambda一开始就把所有的计算粒度统一为100毫秒,程序员很快就发现,他们花同样的费用可以实现更加快速的计算,或者是实现20倍、30倍甚至100倍的计算量。如果他们利用效率不高,那也没关系。支付的账单是一样的。
 
    随着越来越多的无服务器平台参与竞争,计算粒度变得越来越小。AWS公司停止以100ms计费,最终以1ms的增量开始计费。
 
    2.简化操作系统运营
 
    现代化的操作系统是一种复杂的系统,可以处理打印任务、视频游戏、文档编辑以及无数的任务。人们是否想过为什么要在启动云实例时准备好所有代码来处理这些任务?
 
    Unikernels是消除这些复杂性的一种方法。一旦你的代码运行,编译器将构建一个规模更小的程序包,该程序包将驻留在标准虚拟机管理程序之上。支持者指出,这不仅可以提高效率,攻击面也要小得多,从而更易于保护。
 
    为什么不直接从AWS或Google获得最小的操作系统?谷歌的Container-Optimized OS和亚马逊的Bottlerocket将传统的虚拟化范例应用于操作系统,其中容器由虚拟操作系统(OS)和更小的Linux充当虚拟机管理程序。它们非常适合用于封装只做一件事的微服务,而无需依赖操作系统的许多功能。
 
    3.开源功能
 
    简化部署到云平台的工作的另一种方法是让开发人员编写简单的功能,并将所有其他工作留给云平台本身。在过去的几年中,所有主要的云计算提供商都推出了自己的工具,这些工具允许一小段代码、一个功能来做出一些决策,并处理一些数据。这些都是了不起的进步,特别是对于将许多服务组合到一个产品中的开发人员来说。
 
    唯一的缺点是可能面临云计算供应商锁定的情况。尽管可以采用多种语言编写功能,但与框架的交互是专有的。现在,有许多有趣的开源项目(OpenWhisk、OpenFaaS、Kubeless、Knative、Fission)提供“功能即服务”。    调试微服务对于工作人员来说似乎令人生畏,而采用正确的工具和策略可以使他们更轻松地开展工作。
 
    信息架构的增长促使许多组织采用云服务,并随着时间的推移而增长。微服务在这方面一直处于领先地位,并且在设计各种应用程序以使其成为可独立部署的服务方面,其受欢迎程度呈指数级增长。
 
    在O'Reilly公司的一项调查中,50%以上的受访者表示,他们组织中50%以上的新开发项目使用微服务。
 
    在单片机系统中,整个应用程序可能会由于模块中的单个错误而失败。使用独立的模块为开发人员提供了更广泛的灵活性,可以编辑和部署可定制的代码,而不必担心影响独立的模块。
 
    但是,当意外引发错误时,这种方法会带来独特的挑战。由于信息架构的复杂性以及从开发阶段到生产阶段的过渡,在云中调试微服务可能是一项艰巨的任务。
 
    以下探讨一下面临的一些挑战以及如何无缝地应对这些挑战。
 
调试微服务的挑战
 
    (1)追踪和可观察性不足
 
    微服务需求的增长带来了基础设施的复杂性。每一个云组件、模块和无服务器调用通常都隐藏了基础设施的复杂性,这使得DevOps和运营团队很难根据输出跟踪和观察微服务的内部状态。独立运行的微服务难以跟踪异步模块中存在的任何用户请求,这可能会导致错误的链式复制。这也意味着检测相互交互的服务可能会受到这些错误的影响。这些因素使得查明任何错误或错误的根本原因对于开发人员来说是一项艰巨的任务。
 
    (2)在复杂环境中监视状态
 
    由于许多微服务聚集在一起来构建系统,因此监视其状态变得很复杂。随着更多的微服务组件添加到系统中,复杂的服务网格逐渐发展,而每个模块都独立运行。这也带来了任何一个模块随时可能发生故障,但不会影响其他模块运行的可能性。
 
    开发人员可能发现调试某些特定微服务中的错误非常困难。其中的每一个都可以用不同的编程语言进行编码,具有独特的日志记录功能,并且大多独立于其他组件。
 
    (3)从开发到生产可能是不可预测的
 
    在将代码从开发阶段移动到生产阶段时,性能和状态错误也是不可预测的。即使在集成和单元测试之后,人们也无法预测代码在分布式服务器上处理成千上万个请求时的性能。如果代码扩展不充分或者数据库无法处理请求,那么开发人员几乎无法检测到系统中的潜在错误。
 
在云中调试微服务的方法
 
    以下是一些特定于微服务的调试方法,这些方法可以帮助组织解决以下提到的挑战:
 
    (1)非侵入式调试选项
 
    与传统的调试方法不同,第三方工具可以通过中断或暂停服务来帮助DevOps团队设置不会影响调试过程执行的断点。这些方法是非侵入性的,允许开发人员查看全局变量和堆栈跟踪,这有助于他们更有效地监视和检测错误。它还允许开发人员在不停止代码运行或重新部署其代码库的情况下测试可能出现的有关问题。
 
    (2)可观察性增强工具
 
    任何具有大量微服务的系统都很难跟踪请求。尽管人们可能认为构建可观察性的自定义平台是解决这个问题的答案,但它在开发过程中会消耗大量的时间和资源。

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读