微服务知识小结

1. SOA、分布式、微服务之间有什么关系和区别?

1.分布式架构指将单体架构中的各个部分拆分,然后部署到不同的机器或进程中去,SOA和微服务基本上都是分布式架构的
2. SOA是一种面向服务的架构,系统的所有服务都注册在总线上,当调用服务时,从总线上查找服务信息,然后调用
3.微服务是一种更彻底的面向服务的架构,将系统中各个功能个体抽成一个个小的应用程序,基本保持一个应用对应的一个服务的架构
SpringCloudAlibaba架构
在这里插入图片描述

2.微服务间的通信方式

1.同步通信:微服务之间通过请求-响应的方式进行通信,例如RESTful API和RPC。通信过程中,请求方需要等待响应方的返回结果,因此可靠性较高,但可能会出现请求排队、线程阻塞等问题,从而影响系统的响应速度和并发性能。
2.异步通信:微服务之间通过消息队列进行异步通信,例如Kafka和RabbitMQ。通信过程中,发送方向消息队列发送消息,接收方从消息队列中消费消息,消息传输以异步的方式进行,不需要等待接收方的响应。由于解耦性高,消息队列还可以支持发布-订阅模式,消息得以广播到多个服务中,助于构建高可伸缩的系统。不过异步通信也可能导致延迟较高,以及可靠性和容错性较差等问题。
3.事件驱动架构(EDA):微服务之间通过发布-订阅模式进行通信,例如Apache Kafka和AWS SNS/SQS。通信过程中,发布者发布事件,订阅者订阅事件,事件传递以异步的方式进行。通过EDA,不同服务之间可以实现松耦合通信,提高系统的可伸缩性和弹性,但需要谨慎处理网络分区等极端情况,以避免出现一致性等问题。

3.微服务架构常用组件

在这里插入图片描述
在这里插入图片描述

Spring Cloud常用组件及其简要介绍:

Eureka:服务注册与发现组件,可以通过RESTFUL接口来实现服务注册与发现,并提供心跳检测机制来保证服务可用性。

Ribbon:客户端的负载均衡组件,可以集成到RestTemplate、Feign等HTTP客户端中使用。

Feign:基于Ribbon和Hystrix的声明式服务调用组件,可以让我们更方便地实现服务之间的调用。

Hystrix:熔断器组件,可以在服务出现故障或异常时进行自动熔断,避免服务雪崩问题。

Zuul:API网关组件,可以对外部请求进行统一的路由、过滤和转发。

Config:分布式配置中心组件,可以将应用程序的配置信息集中管理,并支持动态刷新配置。

Bus:消息总线组件,可以用于在分布式系统中传递事件消息,如配置更新事件、状态变更事件等。

Stream:数据流处理组件,可以帮助我们从消息中间件中读取、处理和发送消息。

Sleuth:分布式跟踪组件,可以追踪请求在微服务架构中的传递过程,帮助我们快速定位问题根源。

Zipkin:分布式跟踪系统,可以用于聚合、可视化和分析分布式系统中的调用链路信息。

以上是Spring Cloud的一些常用组件,每个组件都有其独特的特点和功能,可以根据具体业务场景选择使用。

Spring Cloud Alibaba常用组件及其简要介绍:

Nacos:服务注册与发现、配置管理、流量管理平台,可以替代Eureka、Config、Ribbon等组件。

Sentinel:流量控制、熔断降级、系统负载保护等组件,可以替代Hystrix。

Dubbo:高性能Java RPC框架,可以用于实现微服务之间的远程调用。

RocketMQ:分布式消息中间件,支持消息的广播、点对点传输、顺序传输等模式。

Seata:分布式事务解决方案,可以保证跨多个数据库或跨多个服务的操作的一致性和完整性。

Alibaba Cloud SDK:阿里云服务API的封装,包括云服务器、对象存储、关系型数据库等。

Alibaba Cloud OSS:阿里云对象存储服务,可以用于存储静态资源文件。

Alibaba Cloud RDS:阿里云关系型数据库服务,可以提供MySQL、SQL Server、PostgreSQL等数据库实例。

Alibaba Cloud ACM:阿里云配置管理服务,可以实现应用程序的动态配置。

以上是Spring Cloud Alibaba的一些常用组件,每个组件都有其独特的特点和功能,可以根据具体业务场景选择使用。同时,Spring Cloud Alibaba也与Spring Cloud组件进行了无缝集成,提供了更加完备的微服务解决方案。

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

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

相关文章

python树的双亲存储结构

这种存储结构是一种顺序存储结构,采用元素形如“[结点值,双亲结点索引]”的列表表示。通常每个结点有唯一的索引(或者伪地址),根结点的索引为0,它没有双亲结点,其双亲结点的索引为-1。例如,所示的树对应的双…

qgis添加postgis数据

左侧浏览器-PostGIS-右键-新建连接 展开-双击即可呈现 可以点击编辑按钮对矢量数据编辑后是直接入库的,因此谨慎使用。

Rust语言入门教程(一) - 简介及Cargo使用

Rust编程入门 为什么学习Rust 我本人是一个DevOps工程师,并不是专职的开发人员,但需要了解各种各样的语言的基本知识和特性,以便在不同的项目中帮助开发人员设计软件架构,部署流程以及进行错误排查和调试。但是对任何新生的优秀…

聚观早报 |一加12正式开启预订;OPPO Reno11系列卖点

【聚观365】11月24日消息 一加12正式开启预订 OPPO Reno11系列卖点 小鹏第三季度营收财报 Claude 2.1 聊天机器人公布 现代汽车将与伦敦大学学院合作 一加12正式开启预订 全新的一加12系列公开亮相已有一段时间,不久前一加官方宣布,该机将于12月4日…

【JavaWeb】HTMLCSSJavaScript

HTML&CSS&JavaScript 文章目录 HTML&CSS&JavaScript一、开发工具及在线帮助文档二、 HTML2.1 HTML&CSS&JavaScript的作用2.2 HTML基础结构2.3 HTML概念词汇解释2.4 HTML的语法规则2.5 常用标签 三、CSS3.1 引入方式3.2 CSS选择器3.3 CSS浮动3.4 CSS定位…

【JavaScript】3.1 项目实践:制作一个简单的网页应用

文章目录 项目需求HTML结构JavaScript逻辑添加待办事项标记待办事项删除待办事项保存待办事项 总结 在此章节中,我们将学习如何使用JavaScript创建一个简单的网页应用。这将是一个待办事项列表应用,用户可以添加新的待办事项,标记已完成的事项…

使用Python实现银行管理系统

使用Python实现银行管理系统 题目介绍程序演示登录开户查询取款存款转账锁定解锁存盘退出 相关代码开户功能查询功能取款功能存款功能转账功能锁定功能解锁功能存盘功能加载存盘的数据登录/登出功能主程序 完整代码 在本篇博文中,我们将使用Python编写一个简单的银行…

MySQL 8 配置文件详解与最佳实践

MySQL 8 是一款强大的关系型数据库管理系统,通过适当的配置文件设置,可以充分发挥其性能潜力。在这篇博客中,我们将深入探究 MySQL 8 常用的配置文件,并提供一些建议,帮助您优化数据库性能。 配置文件概览 在 MySQL …

GPT、GPT-2、GPT-3论文精读笔记

视频:GPT,GPT-2,GPT-3 论文精读【论文精读】_哔哩哔哩_bilibili MAE论文:把bert用回计算机视觉领域 CLIP论文:打通文本和图像 GPT 论文:Improving Language Understanding by Generative Pre-Training …

机器学习笔记 - 复杂任务的CNN组合

基础CNN架构可通过多种方式进行组合和扩展,从而解决更多、更复杂的任务。 1. 分类和定位 在分类和定位任务中,你不仅需要说出在图像中找到的物体的类别,而且还需指出物体显现在图像中的边界框坐标。这类任务假设在图像中只有一个物体实例。 这个任务可通过在典型的分类网络…

Java Web 实战 21 - 用 Servlet 实现一个Hello World

用 Servlet 来写一个 Hello World~ 一 . 基本部署方式1.1 创建 Servlet 项目1.2 引入依赖1.3 创建目录1.4 编写代码继承 HttpServlet重写 doGet 方法删除 super 方法加上 WebServlet 注解写业务逻辑 1.5 打包1.6 部署1.7 验证1.8 小结 二 . 更方便的部署方式2.1 Smart Tomcat 的…

【免费】小傅哥 DDD 开发小册

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 大家好,我是技术UP主小傅哥。 如果在面试的时候,面试官问你DDD是什么,你怎么解释&#xff1…