`
白马探
  • 浏览: 14646 次
社区版块
存档分类
最新评论

微服务理论与实践----微服务之间的交互

 
阅读更多

Microservice架构模式中的“开”是各个服务的内部实现,而其中的“闭”则是各个服务之间相互沟通的方式

 

 微服务必须使用进程间通信机制来交互。微服务架构有两类IPC机制可选,异步消息机制和同步请求/响应机制。当设计服务的通信模式时,需要考虑几个问题:服务如何交互,每个服务如何标识API,如何升级API,以及如何处理部分失败。

 

1. API GateWay 模式

 

1.1 背景

 

 当决定将应用当作成一组微服务时,需要决定应用客户端如何与服务端交互。方式有两种:

 

(1)客户端与服务端直接通讯

 

(2)采用API Gateway,客户端与API Gateway交互,API Gateway封装具体的服务细节,并提供API给各个客户端。

 

了解源码可+求求: 1791743380

 

1.2客户端与服务端直接通讯

 

   一个客户端可以直接给多个微服务中的任何一个发起请求。每一个微服务都会有一个对外服务端。这个URL可能会映射到微服务的负载均衡上,它再转发请求道具体的节点上。

 

  缺点:

 

l  客户端的需求量与微服务暴露的细粒度的API数量不匹配,客户端需要发起多个请求才能获取需与的完整数据。

 

l  客户端请求的微服务的协议可能不是web友好型的,例如微服务是RPC或AMQP协议的,他们都不是web友好型的

 

l  很难重构微服务

 

2APIGateway.API GatewayAPIGateway

 

1.3 API Gateway  

 

APIGateway是一个服务器,也是进入系统的唯一节点。API Gateway封装系统内部的架构,对每个客户端提供API。

 

1.3.1 API Gateway的目标

 

 支持API接口动态发布及运营,包括但不限于:

 

(1)安全认证

 

a. 应用申请审核通过后生成公钥,开放平台需提供支持分布式系统的密钥管理

 

服务可设置为两个安全等级:需授权访问和无需授权访问(后者即任意客户端都可以发起调用),默认所有API都需授权访问。

 

 b. 非正常状态(禁用、停用、黑名单等)的应用直接抛异常不允许访问——熔断机制

 

 c. 调用次数、调用频率、并发数可运行时控制,避免某请求量过大影响其他应用的调用。

 

 d. 可对某个应用某个API设置强制熔断,所有请求无视阀值直接抛出异常。

 

(2)API管理

 

所有API可后台查询管理,包括动态发布、参数映射配置、后端服务接口配置、API禁用、启用,多版本、分组、分级别等。

 

(3)应用管理

 

 后台管理开放平台接入的应用(第三方应用),包括查询、禁用、启用、审核。

 

(4)计费收费

 

a. API的调用统计,每笔请求时间,响应时间,响应状态。

 

b. API的计费计算,按照请求量和请求资源计费,实现多种计费模型。(预付费,后收费。按量,按时间周期。)

 

(5)       熔断

 

(6)       流量统计及限流

 

l  支持现有子系统RPC协议的API动态发布及运营,外部请求透传。

 

l  支持json、xml响应报文,可以请求时选取所需报文格式。

 

l  支持动态直接将后端SOA服务暴露为API。

 

l  支持动态将普通Web接口暴露为API。

 

l  支持动态将MQ服务暴露为API。

 

l  支持多个服务组合编排后暴露为API。

 

l  请求的转发、合成和协议转换

 

l  给客户端提供一个定制化的API

 

1.3.2 API Gateway模式的优缺点

 

(1)优点:

 

 l  特定的API。使客户端只需跟Gateway打交道,减少客户端与服务端的通讯次数,也简化了客户端的代码。

 

l  去报客户端不需要受服实例位置的影响

 

l  为每套客户端提供最优的API

 

l  降低请求/往返次数

 

 (2)缺点

 

l  API Gateway是一个高可用的组件,必须要开发、部署和管理。开发者必须要更新API Gateway来提供新服务提供点来支持新暴露的微服务。

 

l  API Gateway会造成多余的网络跳转

 

2.3 API 版本管理

 

分享到:
评论

相关推荐

    微服务理论和实践

    本书“微服务理论与实践”通过展示如何在IBM Bluemix平台上创建应用程序,系统性地介绍了微服务的理论和实践知识。对于架构师和应用开发者来说,这是一本理解微服务并将其应用于实践的重要读物。通过本书,读者不仅...

    微服务架构设计与实践-内训方案.pdf

    - **微服务架构理论与实践**: - 讨论了如何从单体应用过渡到微服务架构,包括技术选型、服务边界划分等。 - 实践案例展示了实际项目中的具体应用。 - **多维度的可用性**: - 涉及到网络、存储、计算等多个层面...

    DotNET 微服务、容器 - 体系结构电子书

    5. **API网关模式**:客户端直接与微服务通信可能导致复杂的交互,因此采用API网关模式可以作为统一入口点,处理多种协议转换、认证、路由和聚合来自多个微服务的响应。 6. **基于消息的异步通信**:微服务间的通信...

    微服务架构从理论认识到实践落地

    同时,微服务架构对服务的拆分、服务的管理和维护提出了新的挑战,例如服务之间的通信、数据一致性、服务监控和故障处理等。 总的来说,微服务架构是一种将复杂系统分解为易于管理和维护的多个服务的架构方式。它...

    SpringCloud微服务架构笔记-共四部分四个PDF文件

    本套笔记全面覆盖了SpringCloud微服务架构的关键知识点,从理论到实践,帮助读者深入了解并掌握微服务设计原则和SpringCloud的实现方式,对于想要在微服务领域深化学习的Java开发者来说是一份宝贵的资料。

    微服务拆分的理论和原则及案例详细说明

    实践中,微服务通常涉及到以下步骤: 1. **识别服务**:分析业务领域,确定服务边界。 2. **服务设计**:定义服务接口,考虑数据模型和服务交互。 3. **服务实现**:编写服务代码,实现业务逻辑。 4. **部署与监控*...

    实操培训环节:Kubernetes 与微服务监控

    通过理论讲解与实践操作相结合的方式,参与者不仅能够掌握Kubernetes的基本原理,还能学会如何在实际工作中利用Kubernetes进行高效的应用部署与监控。 #### 二、关于Monoliths & Microservices ##### 单体应用简介...

    微服务学习微服务学习微服务学习微服务学习3

    微服务是一种现代软件开发的方法论,它提倡将单一应用程序拆分为一组小的服务,每个服务运行在其独立的进程中,服务之间通过轻量级通信机制(通常是HTTP/RESTful API)进行交互。这种架构允许团队独立地开发、部署和...

    经典Java微服务架构教程 微服务从开发到部署.pdf

    书中首先介绍了构建单体应用模型,展示了如何从零开始开发一个模块化的应用,比如一个打车应用,该应用的核心由业务逻辑模块组成,周围环绕着与外部交互的适配器,如数据库访问、消息组件和Web组件。 单体应用在...

    SpringCloud微服务架构技术分享.pptx

    它的出现标志着微服务架构从理论走向实践的关键一步。 - **SpringCloud的核心组件**: - **服务发现**:Eureka提供了一个基于REST的服务,用于定位服务实例的位置,从而使客户端能够在不知道确切位置的情况下与...

    知乎的微服务架构实践.pdf

    【知乎的微服务架构实践】 在互联网行业中,知乎作为一个知名的知识分享平台,其背后的架构设计是支撑其稳定运行的关键。微服务架构作为一种现代化的软件开发和部署方式,已经被广泛应用于大型互联网公司,包括知乎...

    DDD促进传统架构微服务转型(42页).pdf

    《DDD促进传统架构微服务转型》是一份深入探讨领域...总之,《DDD促进传统架构微服务转型》这份报告深入探讨了如何利用DDD的理论指导微服务的实践,为软件架构师和开发人员提供了一条通往更高效率、更灵活架构的道路。

    基于Spring-Cloud的微服务架构.zip

    本资料《基于Spring-Cloud的微服务架构》将通过实际案例,详细讲解如何搭建Spring-Cloud微服务架构,包括服务的创建、注册、调用、监控等方面,帮助开发者从理论到实践,全面掌握Spring-Cloud在微服务中的应用。...

    微服务研究资料

    微服务是一种现代软件...这些文件涵盖了微服务领域的多个方面,从理论到实践,从系统设计到具体的技术实现,为微服务的研究和实施提供了丰富的资源。对于希望深入了解和应用微服务的读者来说,这是一个宝贵的资料库。

    架构解密-从分布式到微服务

    总之,《架构解密-从分布式到微服务》全面介绍了IT系统架构的演进过程,从理论基础到实践应用,对于理解并掌握分布式系统和微服务架构有着极大的帮助。通过学习,开发者可以更好地应对复杂业务场景,构建更加健壮、...

    微服务面试

    面试中,除了理论知识,面试官还会关注候选人的实践经验,例如如何解决实际项目中遇到的问题,如何优化服务性能,以及对新趋势和技术的了解程度,如Serverless、Service Mesh等。准备微服务面试,不仅要深入理解上述...

    如鹏网个人微服务demo

    这个Demo项目不仅包含了理论知识,还提供了实际的代码示例,对于想要深入理解和实践微服务架构的开发者来说是一份宝贵的资源。通过学习和研究这个项目,你可以掌握如何利用Consul进行服务发现,如何设计和实现熔断和...

Global site tag (gtag.js) - Google Analytics