博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再谈微服务
阅读量:3927 次
发布时间:2019-05-23

本文共 1178 字,大约阅读时间需要 3 分钟。

微服务的概念

微服务架构是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦,他的主要作用是将功能分散到离散的各个服务中间,从而降低系统的耦合,并提供更加灵活的服务支持

概念
把一个大型的应用程序和服务拆分为数十个,或者数个的支持微服务,他可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议
定义
围绕业务领域组件来创建应用,这些应用可独立的进行开发,管理和迭代,在分散的组件中使用云架构和平台式部署,管理和服务功能,使产品交付变得更加简单
ps:2011年为互联网元年 2012年为微服务元年

系统架构需要遵循三个标准:

提高敏捷性,及时响应业务需求,促进企业发展
提高用户体验,减少用户流失
降低成本
传统的开发模式
单体开发 即所有的功能都打包在一个war包,基本没有外部依赖
优点:开发简单,基本不会重互开发,集中式管理,没有分布式的调用消耗
缺点: 效率低,维护难,不灵活,稳定性差,扩展性不够

微服务架构设计模式

需要考虑的问题
API geteway
服务间的调用
服务发现
服务容错
服务部署
数据调用
在这里插入图片描述

聚合器微服务设计模式

在这里插入图片描述
聚合器调用多个服务实现应用程序所需的功能。它可以是一个简单的 WEB 页面,将检索到的数据进行处理展示。它也可以是一个更高层次的组合微服务,对检索到的数据增加业务逻辑后进一步发布成一个新的微服务,这符合DRY(编程过程中不写重复代码,将能够公共的部分抽象出来,封装成工具类或者用“abstraction”类来抽象公有的东西,降低代码的耦合性,这样不仅提高代码的灵活性、健壮性以及可读性,也方便后期的维护或者修改)原则。另外,每个服务都有自己的缓存和数据库。如果聚合器是一个组合服务,那么它也有自己的缓存和数据库。聚合器可以沿X轴和Z轴独立扩展。
代理微服务设计模式
在这里插入图片描述
在这种情况下,客户端并不聚合数据,但会根据业务需求的差别调用不同的微服务。代理可以仅仅委派请求,也可以进行数据转换工作
链式微服务设计模式

在这里插入图片描述

在这种情况下,服务A接收到请求后会与服务B进行通信,类似地,服务B会同服务C进行通信。所有服务都使用同步消息传递。在整个链式调用完成之前,客户端会一直阻塞。因此,服务调用链不宜过长,以免客户端长时间等待。
分支微服务设计模式
在这里插入图片描述
数据共享微服务设计模式
自治是微服务的设计原则之一,就是说微服务是全栈式服务。但在重构现有的“单体应用(Monolithic Application)”时,SQL 数据库反规范化可能会导致数据重复和不一致。因此,在单体应用到微服务架构的过渡阶段,可以使用这种设计模式,如下图所示
在这里插入图片描述
异步消息传递微服务设计模式
虽然 REST 设计模式非常流行,但它是同步的,会造成阻塞。因此部分基于微服务的架构可能会选择使用消息队列代替 REST 请求/响应,如下图所示
在这里插入图片描述

转载地址:http://fikgn.baihongyu.com/

你可能感兴趣的文章
glib 中 IO Channels 理解
查看>>
C++中extern “C”含义深层探索
查看>>
extern用法详解(转)
查看>>
如何在Linux下用C/C++语言操作数据库sqlite3
查看>>
SQLite的数据类型
查看>>
使用sqlite3与C接口开发数据库程序 - [编程]
查看>>
Sqlite日期和时间函数不求人
查看>>
在SQLite中使用索引优化查询速度
查看>>
标准C处理类似INI配置文件的键值型文档
查看>>
配置文件的读取,纯C代码
查看>>
UML用例图中包含(include)、扩展(extend)和泛化(generalization)三种关系详解
查看>>
基于蓝牙设备的移植
查看>>
linux中的时间函数
查看>>
Linux系统中的计时机制及相关时间函数
查看>>
strftime函数
查看>>
linux下的时间函数使用
查看>>
C语言问题集-- 把 struct tm 或一个字符串转换成 time_t
查看>>
hp unix下strptime的使用
查看>>
C语言中如何求任意一个int型数组的长度?
查看>>
蓝牙基带数据传输机理分析
查看>>