微服务的好处与弊端_《微服务架构设计模式》-学习总结07

3246f6501cc6d686b02c2829c1940700.png

本篇主要总结第七章:在微服务架构中实现查询

  • 在微服务架构中查询数据的挑战
  • 何时以及如何使用API组合模式实现查询
  • 何时以及如何使用CQRS模式实现查询

微服务架构中,查询通常需要检索分散在多个服务所拥有的数据库中的数据,跨服务数据查询的两种模式:

  • API组合模式
    • 简单,应尽可能使用
  • CQRS:命令查询职责隔离模式
    • 强大但复杂
    • 维护一个或多个视图数据库

API组合模式

API组合模式:由API组合器和两个或多个服务提供方组成,API组合器通过查询每个服务的API并组合结果,实现从多个服务检索数据的查询。

  • API组合器:调用数据提供方API并组合查询结果
  • 数据提供方服务

6e95b43703fc68fb1b2cc4a399533023.png

API组合模式需要解决的两个设计问题:

  • 由谁来担任API组合器的角色
    • 客户端
    • API Gateway
    • API组合器独立为服务
  • 如何编写有效的聚合逻辑
    • 尽可能并行查询,使用响应式编程模型

API组合模式的好处和弊端

  • 好处
    • 简单
  • 弊端
    • 增加了额外的开销
      • 将一个查询变成了N个查询
    • 带来可用性降低的风险
      • 依赖于每个服务提供方都可用,总体可用性是各服务提供方可用性的乘积。
      • 需要专门的策略来提高可用性
        • 缓存数据
        • 返回不完整数据
    • 缺乏事务数据一致性
      • 查询操作可能返回不一致的数据

CQRS模式(命令查询职责隔离)

CQRS模式:使用事件来维护从多个服务复制数据的只读视图,借此实现对来自多个服务的数据的查询。它将持久化数据模型和使用数据的模块分为命令端和查询端,他们拥有各自的独立数据库。

  • 命令端
    • 增、删和改操作CUD
    • 不需要join,仅基于主键的查询操作
    • 发布领域事件
  • 查询端
    • 查询操作R
    • 数据库视图
    • 订阅并处理领域事件并更新数据库

c1c193556f15236b302d671af75e412d.png

CQRS模式的好处和弊端

  • 好处
    • 在微服务架构中高效地实现查询
    • 高效地实现多种不同的查询类型
    • 在基于事件溯源技术的应用程序中实现查询
    • 更进一步地实现问题隔离
  • 弊端
    • 更加复杂的架构
    • 处理数据复制导致的延迟
      • 在命令端发布事件和在查询端处理事件并更新视图之间存在延迟。
        • 命令端和查询端API提供数据的版本信息,使其能够判断查询端是否过时,查询API调用端可以轮询查询直到获得最新版本的数据。

设计CQRS视图

CQRS视图模型包括视图数据库和三个子模块:

  • 查询API
  • 事件处理程序
  • 数据访问模块
  • 视图数据库

5cd60eaba358bb85d00b2abd99274a20.png

设计CQRS视图需要考虑:

  • 选择视图数据库
  • 设计数据库访问模块
    • 并发处理:乐观锁
    • 幂等事件处理程序
  • 添加和更新CQRS视图
  • 使用归档事件构建CQRS视图
    • 增量式构建CQRS视图
      • 快照+后续事件

学习总结

本章主要讲跨服务查询的问题。主要是两个解决方案:

第一,使用一个API查询组合器,分别调用各个服务提供的API查询数据,再将结果组合起来。第二,使用CQRS,设计单独的命令端和查询端,命令端通过事件通知查询端更新数据视图,需要跨服查询时直接查数据视图。

在项目的初期或者在比较简单查询的情况下,可以多使用API查询组合器。在项目后期或者对于一些较复杂的查询,需要使用CQRS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ECS主动运维2.0,体验升级,事半功倍

摘要: 阿里云致力于提供更好用的运维体验,让您使用ECS的过程更透明、高效,并实现更加标准化、自动化的运维方式。基于主动运维2.0,您使用ECS云服务器的体验更加流畅,而且利用系统事件,不再依赖于工单联系客…

mysql bench如何下载_MySQLWorkbench下载与使用教程详解

一、MySQL Workbench的下载Workbench是MySql图形化的管理工具,可以在Workbench里输入MySql的语句,这可能更适合大多数人的视觉,有些操作更能更简单化首先我们下载workbench然后选择download选择no thanks,just download下载后点击…

为什么说边缘计算的发展比5G更重要?

戳蓝字“CSDN云计算”关注我们哦!由TechSugar编辑部翻译自medium文︱Pavel Konecny本篇文章转自公众号TechSugar(ID:techsugar)边缘计算相对于5G都有哪些优势?犹记2016年,我在汉诺威参加德国汉诺威消费电子、信息及通信…

ICDE:POLARDB定义云原生数据库

摘要: 4月17日(巴黎时间)阿里云POLARDB走出国门,亮相ICDE2018,并同步举办阿里云自有的POLARDB技术专场。在会上,阿里云进行了学术成果展示,从而推动Cloud Native DataBase成为行业标准。4月17日…

PLSQL连接ORACLE

文章目录① 安装oracle服务端②安装plsql③配置监听④配置2个⑤重启plsql① 安装oracle服务端 ②安装plsql ③配置监听 ④配置2个 【打开客户端】-【取消】-【工具】-【首选项】-【连接】 配置截图2个配置 【Tools】-【Preferences】-【Connection】 根据自己的oracle安装路…

新功能:阿里云负载均衡SLB支持HTTP访问强制跳转HTTPS

摘要: 很高兴的告诉大家,阿里云负载均衡SLB已经在澳大利亚(悉尼)、日本(东京)、阿联酋(迪拜)、美国 (弗吉尼亚)、美国(硅谷)、马来西亚…

算法一看就懂之「 堆栈 」

戳蓝字“CSDN云计算”关注我们哦!今天咱们再来继续看看「 堆栈 」吧,我写技术文章很少 show code,所以经常有人吐槽。好吧,这个算法系列的文章我打算每一篇的结尾处都找一道算法题写出代码示例,这总可以了吧。一、「 堆…

Centos/Red Hat7.9 源码和在线yum 安装 vsftpd

文章目录一、版本简述1. 环境介绍2. 常用命令二、源码下载2.1. 官网链接2.2. 下载方式2.3. 检查2.4. 源码安装2.5. 异常处理2.6. 检查是否安装成功一、版本简述 1. 环境介绍 软件系统版本Red Hat Enterprise Linux Server7.9 (Maipo)CentOS Linux release 7.9(Core)jdk1.8.0_…

阿里云黄海宇:窄带高清2.0——让直播更惊艳的魔术

摘要: 2018年4月11-12日,2018亚太CDN峰会在北京隆重召开,大会由亚太CDN领袖论坛、电视云论坛、短视频论坛、视频云论坛、新技术论坛、运营商论坛、国际云论坛等7大部分组成。在视频云论坛上,阿里云视频云高级算法专家黄海宇作了题…

vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法

原vsftpd服务器的系统从centos6.8升级到centos7.2。vsftpd使用yum方式安装,用户采用系统用户登录。由于系统升级到centos7,yum安装的vsftpd版本改变。因此按centos6的设置,登录时报错。配置文件未修改,主要是修改了ftp的主目录权限…

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作?笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势…

基于PCDN技术的无延时直播方案

摘要: 2018亚太CDN峰会在北京隆重召开,在4月12日上午的运营商论坛中,阿里云边缘计算团队高级技术专家张士波进行了《基于PCDN技术的无延时直播方案》的主题演讲。本文为演讲内容。当大家谈到直播,一般很惊讶于直播近几年来发展的规…

VSFTPD Centos 7.6 _配置篇

接上一篇:企业内部)Centos7.6 源码安装vsftpd https://gblfy.blog.csdn.net/article/details/103491052 文章目录一、常用命令二、 需求案例三、思路分析3.1. 创建用户3.2. 配置3.3. 限制用户活动范围四、coding实战4.1. 家目录调整4.2. 为test设置密码4…

阿里云弹性计算负责人蒋林泉:亿级场景驱动的技术自研之路

戳蓝字“CSDN云计算”关注我们哦!作者 | 刘丹出品 | CSDN云计算(ID:CSDNcloud)近年来随着云计算如火如荼的发展,上云已经成为当前企业的必经路径。但在国内良莠不齐的云服务市场下,云服务器的选型评估长期困…

阿里云容器Kubernetes监控(一) - 资源监控

摘要: 容器通过集装箱式的编译、打包、部署,大大提高了应用的迭代速度。对于架构师而言,容器带来的是分钟级的部署、秒级的伸缩与恢复、一个量级的迭代速度提升、50%左右的基础成本节省。简介容器通过集装箱式的编译、打包、部署&#xff0c…

Kubernetes之路 3 - 解决服务依赖

摘要: 在容器服务的客户群中,一个经常被问起的问题就是如何处理服务间依赖。本文介绍了常见的解决方法来实现服务的依赖检查,还进一步用示例展示了如何利用init container, liveness/readiness探针等技术实现服务健康检查&#xf…

Logtail从入门到精通(一):日志采集杂谈

摘要: 目前logtail已承载阿里云全站、所有云产品服务、全球各Region部署、阿里巴巴集团(淘宝、天猫、菜鸟等)上重要服务的数据采集。每天采集接近百万服务器上数PB的实时数据,对接数千个应用与消费者。什么是日志提到日志&#xf…

互联网大佬马老师于昨日教师节正式卸任,让位现任CEO张勇;华为发布新一代CloudLink视讯解决方案,普惠4K+AI;联通……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go OPPO Reno2正式发布&#xf…

Logtail从入门到精通(二):开启日志采集之旅

摘要: 为了更好的了解日志采集,这里我们首先对日志采集中遇到的基本概念进行简要的介绍。Logtail相关概念为了更好的了解日志采集,这里我们首先对日志采集中遇到的基本概念进行简要的介绍。概念介绍项目: 项目(Project…

关于SDN的未来,Linux基金会专访阿里云网络大神

摘要: 近日,大家熟知的国际开源组织Linux基金会与阿里云进行了一次访谈。专访了阿里云网络团队掌门人江鹤。江鹤执掌阿里云网络产品线,并负责阿里集团网络虚拟化产品的研发管理工作。在软件定义网络(SDN)和网络功能虚拟…