打死都要记住!微服务架构的常用设计模式!
作者: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数据库反规范化可能会导致数据重复和不一致。因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式,如下图所示:
在这种情况下,部分微服务可能会共享缓存和数据库存储。不过,这只有在两个服务之间存在强耦合关系时才可以。对于基于微服务的新建应用程序而言,这是一种反模式。
打死都要记住!微服务架构的常用设计模式!相关推荐
- 技术圈都在吹的微服务架构,这一篇再讲不明白的话,我就不服了!
这几天,技术圈讨论微服务特别火热,尤其是在618这种流量暴涨的时候,很多电商公司都几乎使用了微服务. 几年前,小皮和朋友创业做网上超市,小皮负责程序开发,那时候客流量不大,程序需求都很简单,小皮左手右 ...
- 微服务架构科普及设计模式
- 微服务架构介绍 - 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在架构 ...
- 看了阿里P8架构师的工资单,我决定死磕“微服务”架构!
前段时间一位阿里p8架构师朋友来做技术交流,我不小心看到他手机里的工资单,我当时沉默了很久.他是微服务架构方面的专家,技术钻研得很深,当生产上出现微服务的问题,他都要第一时间去解决. 很多企业常常面临 ...
- 支撑日均百万订单的微服务架构应该这么搞
最近几年微服务很火,大家都在建设微服务,如果不懂点微服务相关的技术,都不好意思跟同行打招呼了. 我也见过身边很多人在微服务踩过很多坑,我从 2016 年开始接触微服务,有多家大型企业的微服务分布式系统 ...
- 微服务学习笔记(一):什么是微服务架构
一.分享MarkDown小技巧 最初只需要记住 #标题一.## 标题二.1. 第一点.* 这一点,用这几个写写日志.需求文档.小文章,排版上足够了: 逐渐你会发现有些文字需要重点指出,那么还可以使用* ...
- 云原生架构下微服务最佳实践-如何拆分微服务架构
转自: https://mp.weixin.qq.com/s?__biz=MzI3MzEzMDI1OQ==&mid=2651821066&idx=1&sn=8475f813a8 ...
- 微服务架构的基础框架选择:Spring Cloud还是Dubbo?
最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构.近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spr ...
- 从0开始的微服务架构:(一)重识微服务架构
2019独角兽企业重金招聘Python工程师标准>>> 导语 虽然已经红了很久,但是"微服务架构"正变得越来越重要,也将继续火下去. 各个公司与技术人员都在分享微 ...
- 利用Java上手微服务架构
2019独角兽企业重金招聘Python工程师标准>>> 作者: Alexsandro Souza 几乎每个人都在关注微服务架构,我们也不例外.作为一个与时俱进的程序员,我一直在努力 ...
最新文章
- Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
- querySelector用法改进
- 小程序执行运行过程原理_PLC的基础小知识!不用把PLC想的太难
- 计算机启动过程-阮一峰
- c语言中listnode是什么意思,怎么理解typedef Node * List
- 【Matplotlib】【Python】如何使用matplotlib绘制折现图
- as的Enter_Frame与Timer
- 【操作系统】线程的实现-思维导图
- 【元胞自动机】基于matlab元胞自动机人流疏散【含Matlab源码 665期】
- r语言列表添加元素_技术贴 | R语言:geom_smooth在散点图中添加多条回归直线
- 批量下载wsdl文件
- 臭氧9母带处理工具:iZotope Ozone 9 Advanced for Mac
- 我的世界服务器雪球菜单无限雪球,我的世界:雪球玩法?关于指令的高端玩法,操作简单老玩家都在用...
- uClinux移植与分析(3)
- windows电脑打开jnlp文件设置
- 系统进程启动流程分析(一)
- 【12月原创】RT-thread - 柿饼UI ——范进中举
- 高德地图自定义点标记大小_高德地图实现自定义小蓝点 自定义点标记 绘制多边形/圆形区域 根据地图的移动显示或者隐藏自定义点标记的相关实现...
- 小程序创业会有哪些坑
- 极光会客厅:大型H5游戏如何登陆微信小游戏及游戏性能优化分享