热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

微服务:汇总数据:是否有一些好的模式?

如何解决《微服务:汇总数据:是否有一些好的模式?》经验,为你挑选了1个好方法。

我有以下微服务架构用例。

我的问题是,在当前情况下,我有3个微服务和一个APIGateway。

最后,网关必须进行大量查询,然后才能聚合(组合)来自这三个服务的数据。因为这三个微服务仅提供基本数据集。

请检查图片以获取更多详细信息!

这是一个好模式吗?还有其他模式吗?



1> 小智..:

上面是微服务的一个常见问题-域的分离。尽管每个服务都在不同的域中执行任务,但它们包含与其他服务“拥有”的数据的关系。您当前正在解决的方法实际上是管理实现的一种较容易的方法,因为它并不十分复杂,但是有些解决方案却更有效。

1.复制

采用微服务时,很难扎根的一件事是数据复制并不是一件坏事。尽管感觉好像数据在多个地方晃来晃去,但实际上通过将服务所需的数据复制到自己的托管数据库中,可以为服务的创建者提供更大的自治权。

如果要将事件发布到共享队列中,则可以为微服务设置读取/同步过程,该过程依赖于来自其他服务的数据来读取所述事件并将数据镜像到私有数据库中。在您的示例中,这意味着Catalog服务将能够返回API网关返回的完全填充的模型,而无需调用其他服务。

资料来源:关于微服务的最困难部分:您的数据

2.由内向外翻数据库

另一个日益普遍的策略甚至更难以为继,但它为不断发展的微服务架构提供了许多长期价值。不要将服务的数据库视为持久性存储,而应将它们视为视图。所有写入都可以转到中央源,而服务定义了如何将中央数据映射到用于其读取服务的持久性视图中。让我们的服务定义视图,该视图包含其他服务编写的数据-再次,不限制服务创建者的自治权。

资料来源:使用Apache Samza彻底颠覆数据库

3.合并服务

根据您对增长的期望,可能不值得实施上述两种解决方案。考虑到数据的关系性质,您可能只想将服务合并到一个可以使用联接进行查询和自身构建模型的服务中。

注意:以上所有选项都具有一个主要相似点-不必依赖自定义网关来深入了解每种服务并建立模型关系。确保每个服务都有足够的信息和上下文来独自执行有意义的任务。


推荐阅读
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 作为一名新手,您可能会在初次尝试使用Eclipse进行Struts开发时遇到一些挑战。本文将为您提供详细的指导和解决方案,帮助您克服常见的配置和操作难题。 ... [详细]
  • 如何在PHPCMS V9中实现多站点功能并配置独立域名与动态URL
    本文介绍如何在PHPCMS V9中创建和管理多个站点,包括配置独立域名、设置动态URL,并确保各子站能够正常运行。我们将详细讲解从新建站点到最终配置路由的每一步骤。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.qpid.server.model.VirtualHost 类的 closeAsync() 方法,提供了具体的代码示例和应用场景。通过这些示例,读者可以更好地理解和使用该方法。 ... [详细]
  • LeetCode: 实现队列与栈的高级应用
    本文介绍如何使用队列和栈实现特定功能,包括动态维护队列元素并计算其平均值,以及栈操作中的优化技巧。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
author-avatar
mobiledu2502875393
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有