云架构作为软件应用程序的基本方法出现。同时引入了微服务,使开发过程更加高效。
微服务的需求是显而易见的,但在很多情况下,用户看到这个词却很难理解它的含义。与微服务相关的困惑有很多,我们想在本文中讨论它们。
在这里,您将获得有关微服务架构 (MA)、使用 MA 的实际应用程序以及使用它的一些优点和缺点的所有必要信息。
了解微服务
MA 是一种应用程序开发方法,其中服务很小并且彼此独立部署。换句话说,这种类型的架构将服务聚集在一起并将它们编排到一个框架中。
这些服务连接到一个 API,该 API 有助于系统元素之间的交互。框架内的每个服务都是独立的,这极大地影响了维护和开发的便捷性。
微服务架构是寻求更高可扩展性和敏捷性的公司的理想选择。微服务的独立性使得更新每个服务几乎很容易,而无需合并到应用程序的整个系统中。
微服务概念的定义
微服务的主要概念是分解。这是确定微服务结构时需要考虑的重要一点。因此,让我们更深入地研究分解方法:
用例的分解。在这个具体案例中,可以使用亚马逊作为例子。因此某些微服务适用于发货订单。
业务技能分解。这里,每个特定的微服务负责业务运营的特定部分。例如,企业资源规划或 ERP 可用于自动化人力资源、财务系统、采购、制造等流程。
资源分解。在这个场景中,特定领域的所有操作都被微服务覆盖。以Spotify为例,微服务用于管理用户帐户。这样就可以达到功能更深层次的个性化水平。
确保数据一致性的策略
微服务架构有利于弹性和可扩展性,但该系统中的数据一致性可能是一个重大挑战。为了揭示一些风险,您应该更好地了解一切是如何运作的并制定实用的策略。
因此框架内的每个服务都有自己的数据库。所有数据库在运行期间都是同步的。
为了实现系统内的强一致性,可以使用SAGA。聚合操作序列的工作原理是将事务拆分为几个较小的事务。这些是隔离的,因此如果一项事务失败,其他事务可以接管。有两种方法:编排和编排。在第一种方法中,中央服务负责协调流程及其顺序。在编排方面,所有服务都独立地决定彼此的操作。
另一个好的策略是使用分布式锁。当多个服务共享资源时可能会出现问题。为了解决这个问题,您可以使用 ZooKeeper 或 Redis 等系统。使用分布式锁,在给定时间只有一个服务可以对资源进行更改。
展示微服务架构的实际
沃尔玛的
使用微服务架构的一个很好的例子是沃尔玛。由于在客户活动高峰期持续出现问题,该架构于 2012 年推出。工作流程不完善,由于系统问题导致销售额明显下降。
在审查现有系统后,该公司决定转向微服务。借助这种方法,可以重新分配任务,从而简化工作流程。
以下是切换后的一些结果:
计算机能耗下降至 40%。
通过更改架构,硬件工作量在某些情况下减少到最少 20%、最多 50%。
充分利用移动应用程序成为可能。因此,微服务通过添加另一个购买流来提高转化率。
避免了假日购物、黑色星期五和其他客户活动高峰期间的停机时间。
Spotify 的做法
另一家选择微服务架构的公司是 Spotify。根据最近的统计数据,活跃用 匈牙利手机号码数据库
户超过 7500 万,复杂的整体系统可能会带来更多挑战,而不是对服务的顺利运行做出贡献。
为了给客户提供尽可能最佳的体验,该公司通过实施以下几点来实现其目标:
每个微服务都有一个特定的目标。例如,分析用户行为有助于自动创建播放列表。
整个系统分为单独的、独立的微服务,由单独的开发团队管理。
每个可能的问题都会影响特定的服务,因此不会影响整体工作负载。
所有服务都是隔离的,因此只有最低限度的相互依赖。这使得实现一致的客户服务成为可能。
护照扫描件
PassportScan 中也使用了微服务架构。这种类型的架构创建了一个结构化的工作流程,为用户提供更好的服务体验。微服务涵盖了以下元素:
图像识别
敏感信息的存储
支付的组成部分
预订要素
用户账户管理
这种数据结构方法极大地影响了所有流程,并提高了所有阶段的安全级别。此外,工作流程也得到了简化,因此操作顺序不存在任何问题。
实施微服务架构的好处和挑战
以下是微服务架构的一些优点:
微服务的最大优势在于其规模。每个微服务都比较小,只做一件事。这大大减少了所需的代码量。因此,当新人加入团队时,他们理解一个小型应用程序所花费的时间比理解一个有很多怪癖的大型扩展系统所花费的时间要少。
微服务架构基于隔离原则,因此可以将项目划分为多个自治部分。每个部分负责部署、开发、测试和扩展应用程序的一部分。这意味着成果和进展将会更快地取得。
在这样的工作环境中,整个流程变得更快、更有效率。最小化范围有助于减少错误数量,也是一种节省时间的方法。
微服务架构的隔离方法还简化了对出现的问题进行故障排除的过程。例如,如果发生内存泄漏,通常会导致整个系统停止运行。在选择微服务架构时,这个问题只发生在一个服务中,因此其他服务不受影响。
应用程序的持续交付是另一个值得一提的好处。该应用程序分为几个部分 - 更改某些组件变得更加容易,而不会影响整个工作流程。因此,该应用程序不断运行,同时不断发展。
技术堆栈的灵活性。一个很棒的事情是每个微服务都有自己的技术堆栈,并且对其他部分没有影响。这是团队创新和实验的完美环境。
除了部署和维护之外,微服务架构还使测试变得更加容易。完成测试序列需要更短的时间。这也对整个开发周期产生长期影响。
由于所有元素都是独立的,因此维护应用程序非常容易。不存在立即影响系统的元素依赖性。
当然,我们不能忘记微服务架构的部署过程是多么容易。所有服务都是单独提供的,与所有其他流程一样,出现的任何问题一般不会影响系统。
与微服务相关的挑战
所有类型的架构都有一些挑战,微服务也有一些我们可以分享的东西:
正如我们已经讨论过的,微服务很小,而且数量可能很多,从而创建了一个困难的分布式连接系统。这就是部署变得如此困难的原因。系统内的众多移动部件增加了操作的复杂性。开发人员还有很多与众多服务的合作相关的工作。
测试服务之间的各种交互变得更加困难。由于系统结构复杂,不仅变得更加困难,而且更加耗时。
开发人员需要更多的时间来实现交互机制来解决一些可能出现的问题。
团队内部的沟通应该透明,以实现多服务请求。每个团队成员都必须充分参与并透彻理解流程,否则很难实现完美的工作流程。
结论
微服务架构正在慢慢成为一种越来越流行的应用程序开发方式。来自不同市场的许多公司都认为它们是其行业的完美选择。我们已经讨论了沃尔玛、Spotify 和 Passport Scan 等公司的例子。
这种方法被认为对于开发应用程序来说更具成本效益和灵活性。它还可以随着业务需求的增长而逐步发展和增长。微服务架构区别于其他选项的主要优势是隔离、更高的生产力、易于测试和部署