微服务架构=分布式计算

向哈勃所有读者致以问候! 我叫Igor Rybakov,是哈萨克斯坦IT公司DAR的技术总监。 今天,我将与您分享现代信息系统中并行计算原理的理解和使用。 为了更深入地理解这一点,我想提出一些理由,以支持在现代信息系统的开发中对并行和分布式计算的概念进行研究和实际应用。


并行计算还是英特尔的创始人


首先,有一点历史。 1965年,英特尔的创始人之一戈登·摩尔(Gordon Moore)发现了一种模式:微型电路的新模型的出现是在前者出现大约一年后出现的,而其中每次晶体管的数量几乎翻了一番。 事实证明,放置在集成电路芯片上的晶体管数量每24个月翻一番。 这种观察被称为摩尔定律。 英特尔的创始人预测芯片中的元素数量将从1965年的2 ^ 6(约60个)增加到1975年的 2 ^ 16(6.5万个)。


现在,为了能够实现摩尔预测的这种额外的计算能力,必须使用并行计算。 几十年来,处理器制造商一直在指令级提高时钟速度和并行度,因此在新处理器上,旧的单线程应用程序运行速度更快,而程序代码没有任何更改。


从2000年代中期开始,处理器制造商开始偏爱多核体系结构,但是要充分利用中央处理器性能的提高,必须以适当的方式重写程序。 这里出现了一个问题,因为根据阿姆达尔定律 ,并非每种算法都可以并行化,从而确定了解决超级计算机上的计算问题的效率的根本限制。


为了克服此限制,使用了分布式计算方法。 这是一种使用几台计算机解决劳动密集型计算问题的方法,这些计算机通常组合成一个并行计算系统。 考虑到许多计算问题的同时解决方案,在分布式信息系统中执行顺序计算。 与本地超级计算机相比,分布式多处理器计算系统的一个功能是由于扩展而无限增加性能。


在2005年中左右,计算机大量配备了多核处理器,可以进行并行计算。 现代网络技术使您可以组合成千上万台计算机。 这导致了所谓的“云计算”的出现。


并行计算的使用


当前的信息系统,例如电子商务,迫切需要向其客户提供优质的服务。 公司正在竞争,发明了新的服务和信息产品。 服务的设计应具有高负载和高容错性,因为服务的用户不是一个办公室,也不是一个国家,而是整个世界。


同时,重要的是要保留项目的经济可行性,并且不要在昂贵的服务器设备上花费不必要的资金,前提是仅使用部分计算能力的旧软件可以在上面运行。


应用系统的开发人员面临一个新问题:需要重写信息系统以满足现代业务的需求,以及更好地利用服务器资源来降低总拥有成本的需求。 现代信息系统需要解决的任务是多种多样的。


从机器学习和大数据分析开始,以确保高峰时期现有基本系统功能的稳定运行。 例如,您可以在这里引用在线商店中的大量销售信息。 所有这些任务都可以使用并行和分布式计算的组合来解决,例如,实现微服务架构。


服务质量控制


为了衡量客户端的实际服务质量,使用了服务级别协议(SLA)的概念,即系统性能的一些统计指标。


例如,开发人员可以将任务设置为向所有用户请求中的95%提供响应时间不超过200毫秒。 顺便说一句,这是非常真实的非功能性需求,因为用户不喜欢等待。


要评估用户对服务的满意度,可以使用Apdex指标,该指标反映成功(满意)响应与不满意(不满意)的比率。 例如,我们的阈值是SLA = 1.2秒,然后在请求的响应时间的95%<= 1.2秒时,结果将成功。 在大量请求超过1.2秒但小于4T(4.8秒)的情况下,结果被认为是令人满意的,而当大量请求超过4T时,那些> 4.8秒的请求被认为是失败。


结论


因此,我想说的是,微服务的开发实际上涉及对分布式和并行计算的理解和实际应用。


当然,您将不得不牺牲一些事情:


  • 开发和维护的简单性-开发人员实施分布式模块的努力;
  • 使用数据库时,严格一致性(ACID)可能会消失,并需要其他方法。
  • 正在将计算能力用于网络通信和序列化;
  • 我们花时间实施DevOps实践,以进行更复杂的监视和部署。

作为回报,我认为,我们可以获得更多:


  • 具有重用准备使用的整个模块的能力,并因此可以在市场上快速推出产品;
  • 系统的高可扩展性,这意味着更多的客户不会丢失SLA;
  • 使用最终的一致性,基于CAP定理,我们能够再次管理大量数据,而又不会丢失SLA。
  • 记录系统状态的任何更改以进行进一步分析和机器学习的能力。

Source: https://habr.com/ru/post/zh-CN443988/


All Articles