作者:duanxz
来源:cnblogs.com/duanxz/p/3514895.html

大家好,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许我休息一下哈)。今天跟大家分享微服务架构的常用设计模式的知识。

1 聚合器微服务设计模式

这是一种最常用也最简单的设计模式,如下图所示:

聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的Web页面,将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务,对检索到的数据增加业务逻辑后进一步发布成一个新的微服务,这符合DRY原则。另外,每个服务都有自己的缓存和数据库。如果聚合器是一个组合服务,那么它也有自己的缓存和数据库。聚合器可以沿X轴和Z轴独立扩展。

2 链式微服务设计模式

这种模式在接收到请求后会产生一个经过合并的响应,如下图所示:

在这种情况下,服务A接收到请求后会与服务B进行通信,类似地,服务B会同服务C进行通信。所有服务都使用同步消息传递。在整个链式调用完成之前,客户端会一直阻塞。因此,服务调用链不宜过长,以免客户端长时间等待。

3 分支微服务设计模式

这种模式是聚合器模式的扩展,允许同时调用两个微服务链,如下图所示:

4 代理微服务设计模式

这是聚合器模式的一个变种,如下图所示:

在这种情况下,客户端并不聚合数据,但会根据业务需求的差别调用不同的微服务。代理可以仅仅委派请求,也可以进行数据转换工作。

5 异步消息传递微服务设计模式

虽然REST设计模式非常流行,但它是同步的,会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替REST请求/响应,如下图所示:

6 数据共享微服务设计模式

自治是微服务的设计原则之一,就是说微服务是全栈式服务。但在重构现有的“单体应用(monolithic application)”时,SQL数据库反规范化可能会导致数据重复和不一致。因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式,如下图所示:

在这种情况下,部分微服务可能会共享缓存和数据库存储。不过,这只有在两个服务之间存在强耦合关系时才可以。对于基于微服务的新建应用程序而言,这是一种反模式。

打死都要记住!微服务架构的常用设计模式!相关推荐

  1. 技术圈都在吹的微服务架构,这一篇再讲不明白的话,我就不服了!

    这几天,技术圈讨论微服务特别火热,尤其是在618这种流量暴涨的时候,很多电商公司都几乎使用了微服务. 几年前,小皮和朋友创业做网上超市,小皮负责程序开发,那时候客流量不大,程序需求都很简单,小皮左手右 ...

  2. 微服务架构科普及设计模式

    -     微服务架构介绍    - 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在架构 ...

  3. 看了阿里P8架构师的工资单,我决定死磕“微服务”架构!

    前段时间一位阿里p8架构师朋友来做技术交流,我不小心看到他手机里的工资单,我当时沉默了很久.他是微服务架构方面的专家,技术钻研得很深,当生产上出现微服务的问题,他都要第一时间去解决. 很多企业常常面临 ...

  4. 支撑日均百万订单的微服务架构应该这么搞

    最近几年微服务很火,大家都在建设微服务,如果不懂点微服务相关的技术,都不好意思跟同行打招呼了. 我也见过身边很多人在微服务踩过很多坑,我从 2016 年开始接触微服务,有多家大型企业的微服务分布式系统 ...

  5. 微服务学习笔记(一):什么是微服务架构

    一.分享MarkDown小技巧 最初只需要记住 #标题一.## 标题二.1. 第一点.* 这一点,用这几个写写日志.需求文档.小文章,排版上足够了: 逐渐你会发现有些文字需要重点指出,那么还可以使用* ...

  6. 云原生架构下微服务最佳实践-如何拆分微服务架构

    转自: https://mp.weixin.qq.com/s?__biz=MzI3MzEzMDI1OQ==&mid=2651821066&idx=1&sn=8475f813a8 ...

  7. 微服务架构的基础框架选择:Spring Cloud还是Dubbo?

    最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构.近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spr ...

  8. 从0开始的微服务架构:(一)重识微服务架构

    2019独角兽企业重金招聘Python工程师标准>>> 导语 虽然已经红了很久,但是"微服务架构"正变得越来越重要,也将继续火下去. 各个公司与技术人员都在分享微 ...

  9. 利用Java上手微服务架构

    2019独角兽企业重金招聘Python工程师标准>>> 作者: Alexsandro Souza​ 几乎每个人都在关注微服务架构,我们也不例外.作为一个与时俱进的程序员,我一直在努力 ...

最新文章

  1. Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
  2. querySelector用法改进
  3. 小程序执行运行过程原理_PLC的基础小知识!不用把PLC想的太难
  4. 计算机启动过程-阮一峰
  5. c语言中listnode是什么意思,怎么理解typedef Node * List
  6. 【Matplotlib】【Python】如何使用matplotlib绘制折现图
  7. as的Enter_Frame与Timer
  8. 【操作系统】线程的实现-思维导图
  9. 【元胞自动机】基于matlab元胞自动机人流疏散【含Matlab源码 665期】
  10. r语言列表添加元素_技术贴 | R语言:geom_smooth在散点图中添加多条回归直线
  11. 批量下载wsdl文件
  12. 臭氧9母带处理工具:iZotope Ozone 9 Advanced for Mac
  13. 我的世界服务器雪球菜单无限雪球,我的世界:雪球玩法?关于指令的高端玩法,操作简单老玩家都在用...
  14. uClinux移植与分析(3)
  15. windows电脑打开jnlp文件设置
  16. 系统进程启动流程分析(一)
  17. 【12月原创】RT-thread - 柿饼UI ——范进中举
  18. 高德地图自定义点标记大小_高德地图实现自定义小蓝点 自定义点标记 绘制多边形/圆形区域 根据地图的移动显示或者隐藏自定义点标记的相关实现...
  19. 小程序创业会有哪些坑
  20. 极光会客厅:大型H5游戏如何登陆微信小游戏及游戏性能优化分享

热门文章

  1. OpenCV提取图像颜色直方图
  2. 虚拟现实大会ChinaVR2015报告之-电子试衣和三维人体建模
  3. 【OpenCV3】如何给图像添加(不)透明度通道
  4. iOS一个灵活可扩展的开源Log库
  5. 专访阿里云萧少聪、曹龙:一家云厂商对入局数据库做了哪些思考?
  6. Mac zsh切换bash bash切换zsh
  7. ADB设置连接android真机
  8. 安全测试的目的,发现哪些问题
  9. POPSpring动画参数详解
  10. Flask实战2问答平台-发布问答功能完成