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

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

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

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

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

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

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

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



1> 小智..:

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

1.复制

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

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

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

2.由内向外翻数据库

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

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

3.合并服务

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

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


推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 模块化区块链生态系统的优势概述及其应用案例
    本文介绍了相较于单体区块链,模块化区块链生态系统的优势,并以Celestia、Dymension和Fuel等模块化区块链项目为例,探讨了它们解决可扩展性和部署问题的方案。模块化区块链架构提高了区块链的可扩展性和吞吐量,并提供了跨链互操作性和主权可扩展性。开发人员可以根据需要选择执行环境,并获得奖学金支持。该文对模块化区块链的应用案例进行了介绍,展示了其在区块链领域的潜力和前景。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
  • BZOJ1233 干草堆单调队列优化DP
    本文介绍了一个关于干草堆摆放的问题,通过使用单调队列来优化DP算法,求解最多可以叠几层干草堆。具体的解题思路和转移方程在文章中进行了详细说明,并给出了相应的代码示例。 ... [详细]
  • crontab 自动执行定时任务时,命令无法执行的解决方案
    为什么80%的码农都做不了架构师?最近在工作中需要使用crontab执行定时任务,处理memcacheq消息队列里的数据,但是发现在 ... [详细]
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社区 版权所有