漳州网站建设点击博大选,搜索关键词优化排名,wordpress 查死链接,湛江模板建站定制网站Spring Cloud核心知识总结
springCloud是一个服务治理平台#xff0c;若干个框架的集合#xff0c;提供了全套的分布式系统的解决方案。包含#xff1a;服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息、分布式事务等等。
SpringC…Spring Cloud核心知识总结
springCloud是一个服务治理平台若干个框架的集合提供了全套的分布式系统的解决方案。包含服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息、分布式事务等等。
SpringCloud 正常讲的是Spring Cloud Netflix 生态2020年正常进入维护阶段。不会添加新的功能现在基本上构建新的微服务都是用springCloudAlibaba为基准。
截止2022年最新版springcloud为H版本所以当我们再说springcloudH版是即指的就是springcloud
SpringCloudAlibaba是阿里开发的一套微服务架构目前已经纳入spring中同Spring Cloud 一样Spring Cloud Alibaba 也是一套微服务解决方案包含开发分布式应用微服务的必需组件方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。主要是顺带使用阿里的产品。
下面是一张Spring Cloud核心组件关系图 springCloudAlibaba架构图如下 先看看SpringCloud
1、 什么是SpringCloud? Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
2、什么是微服务 微服务架构是一种架构模式或者说是一种架构风格它提倡将单一应用程序划分为一组小的服务每个服务运行在其独立的自己的进程中服务之间相互协调、互相配合为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通通常是基于HTTP的RESTful API,每个服务都围绕着具体的业务进行构建并且能够被独立的构建在生产环境、类生产环境等。另外应避免统一的、集中式的服务管理机制对具体的一个服务而言应根据业务上下文选择合适的语言、工具对其进行构建可以有一个非常轻量级的集中式管理来协调这些服务可以使用不同的语言来编写服务也可以使用不同的数据存储。
通俗地来讲 微服务就是一个独立的职责单一的服务应用程序。在 intellij idea 工具里面就是用maven开发的一个个独立的module具体就是使用springboot 开发的一个小的模块处理单一专业的业务逻辑一个模块只做一个事情。 微服务强调的是服务大小关注的是某一个点具体解决某一个问题/落地对应的一个服务应用可以看做是idea 里面一个 module。 单个服务支持横向扩展业务提升单一服务的性能和并发从而不影响别的服务。
3、微服务之间如何独立通讯的?
同步通信dubbo通过 RPC 远程过程调用、springcloud通过 REST 接口json调用等。
异步消息队列如RabbitMq、ActiveM、Kafka等消息队列。
RPC基于TCP协议Rest接口基于Http协议
TCP是传输层协议定义数据传输和连接方式的规范 HTTP是应用层协议定义传输数据的内容的规范 HTTP协议基于TCP协议所以支持HTTP也就一定支持TCP
4、 什么是服务熔断什么是服务降级 熔断机制是应对雪崩效应的一种微服务链路保护机制。当某个微服务不可用或者响应时间太长时会进行服务降级进而熔断该节点微服务的调用快速返回“错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在Spring Cloud框架里熔断机制通过Hystrix实现Hystrix会监控微服务间调用的状况当失败的调用到一定阈值缺省是5秒内调用20次如果失败就会启动熔断机制。
服务降级一般是从整体负荷考虑。就是当某个服务熔断之后服务器将不再被调用此时客户端可以自己准备一个本地的fallback回调返回一个缺省值。这样做虽然水平下降但好歹可用比直接挂掉强。
Hystrix相关注解EnableHystrix开启熔断 HystrixCommand(fallbackMethod”XXX”)声明一个失败回滚处理函数XXX当被注解的方法执行超时默认是1000毫秒就会执行fallback函数返回错误提示。
5、 请说说Eureka和zookeeper 的区别
Zookeeper保证了CPEureka保证了AP。
A高可用 这个比较好理解就是说只要我对服务器发送请求服务器必须对我进行相应保证服务器一直是可用的。
C一致性一致性就是说我们读写数据必须是一摸一样的。 比如一条数据分别存在两个服务器中server1和server2。 我们此时将数据a通过server1修改为数据b。此时如果我们访问server1访问的应该是b。 当我们访问server2的时候如果返回的还是未修改的a那么则不符合一致性如果返回的是b则符合数据的一致性。
P分区容错性 大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区partition。分区容错的意思是区间通信可能失败。比如一台服务器放在中国另一台服务器放在美国这就是两个区它们之间可能无法通信。
1、当向注册中心查询服务列表时我们可以容忍注册中心返回的是几分钟以前的信息但不能容忍直接down掉不可用。也就是说服务注册功能对高可用性要求比较高但zk会出现这样一种情况当master节点因为网络故障与其他节点失去联系时剩余节点会重新选leader。问题在于选取leader时间过长30 ~ 120s且选取期间zk集群都不可用这样就会导致选取期间注册服务瘫痪。在云部署的环境下因网络问题使得zk集群失去master节点是较大概率会发生的事虽然服务能够恢复但是漫长的选取时间导致的注册长期不可用是不能容忍的。
2、Eureka保证了可用性Eureka各个节点是平等的几个节点挂掉不会影响正常节点的工作剩余的节点仍然可以提供注册和查询服务。而Eureka的客户端向某个Eureka注册或发现时发生连接失败则会自动切换到其他节点只要有一台Eureka还在就能保证注册服务可用只是查到的信息可能不是最新的。
3. Nacos是支持CP 也 可以支持AP 可切换
6、SpringBoot和SpringCloud的区别
SpringBoot专注于快速方便得开发单个个体微服务。
SpringCloud是关注全局的微服务协调整理治理框架它将SpringBoot开发的一个个单体微服务整合并管理起来
为各个微服务之间提供配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
SpringBoot可以离开SpringCloud独立使用开发项目 但是SpringCloud离不开SpringBoot 属于依赖的关系.
SpringBoot专注于快速、方便得开发单个微服务个体SpringCloud关注全局的服务治理框架。
我的理解是一个偏开发一个偏运维。
7、负载平衡的意义什么 在计算中负载平衡可以改善跨计算机计算机集群网络链接中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用最大化吞吐量最小化响应时间并避免任何单一资源 的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件例如多层交换机或域名系统服务器进程。
8、说说 RPC 的实现原理 首先需要有处理网络连接通讯的模块负责连接建立、管理和消息的传输。其次需要有编 解码的模块因为网络通讯都是传输的字节码需要将我们使用的对象序列化和反序列化。剩下的就是客户端和服务器端的部分服务器端暴露要开放的服务接口客户调用服 务接口的一个代理实现这个代理实现负责收集数据、编码并传输给服务器然后等待结果返回。
9、什么是Ribbon ribbon是一个负载均衡客户端可以很好地控制htt和tcp的一些行为。feign默认集成了ribbon。
10、Spring Cloud 的核心组件有哪些 Eureka服务注册于发现。 Feign基于动态代理机制根据注解和选择的机器拼接请求 url 地址发起请求。 Ribbon实现负载均衡从一个服务的多台机器中选择一台。 Hystrix提供线程池不同的服务走不同的线程池实现了不同服务调用的隔离避免了服务雪崩的问题。 Zuul网关管理由 Zuul 网关转发请求给对应的服务。
11、Spring Cloud如何实现服务的注册?
服务发布时指定对应的服务名将服务注册到 注册中心(Eureka 、Zookeeper)。
springCloudAlibaba使用的是Nacos
12、了解Spring Cloud Config 吗?
在分布式系统中由于服务数量巨多为了方便服务配置文件统一管理实时更新所以需要分布式配置中心组件。在Spring Cloud中有分布式配置中心组件Spring Cloud Config它支持配置服务放在配置服务的内存中即本地也支持放在远程Git仓库中。
在Spring Cloud Config 组件中分两个角色一是config server二是config client。
使用方式 添加pom依赖 配置文件添加相关配置 启动类添加注解EnableConfigServer springCloudAlibaba使用的是Nacos
13、说说你对Spring Cloud Gateway的理解
Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架取代Zuul网关。网关作为流量的在微服务系统中有着非常作用网关常见的功能有路由转发、权限校验、限流控制等作用。
使用了一个RouteLocatorBuilder的bean去创建路由除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filterspredicates断言的意思顾名思义就是根据具体的请求的规则由具体的route去处理filters是各种过滤器用来对请求做各种判断和修改。
- id: xxxuri: lb://xxxpredicates:- Path/xxx/**filters:- StripPrefix1 14、 下面我们把 Spring Cloud 官方、Netflix、Alibaba 三者整理成如下表格
SpringCloud 官方NetflixAlibaba配置中心Spring Cloud ConfigArchaiusNacos注册中心EurekaNacos服务调用Spring Cloud OpenFeign、RestTemleteDubbo负载均衡Spring Cloud Load BalancerRibbonDubbo服务容错HystrixSentinelAPI网关Spring Cloud GatewayZuul消息驱动Spring Cloud Stream RabbiltMQ/KafkaSpring Cloud Stream RecketMQ事件总线Spring Cloud BusSpring Cloud Bus RecketMQ链路跟踪Spring Cloud Sleuth分布式事物Seate分布式调度SchedulerX
15 目前架构使用
正常一个服务的架构可以参照一个博客蘑菇博客的架构 服务入口Nginx负责跳转到Gateway
Gateway跳转对应注册到Nacos的服务;
Nacos支持在线修改配置参数;
服务之前通行通过Rest ful的feign调用(也可以使用dubbo)
服务异步通信可采用Kafka/RocketMQ/RbaaitMQ;
服务的负载均衡交由Ribbondubbo;
服务容错/限流 可以采用Sentinel;
服务链路追踪使用Zipkin;
分布式事务使用Seate;
分布式调度使用XXL-job;
缓存数据库使用Redis;
持久化数据库使用Mysql;
索引引擎库使用Es,日志收集系统使用ELK
接口文档使用Swagger;
项目管理采用MavenGitGitLab;
项目部署采用Docker Docker Compose Jenkins GitLab自动化部署
部署Docker 可视化管理 Portainer
服务监控采用promethus auctuator grafana alertManager cadviser 数据量大业务存储采用Hbase基于Hadoop的Hdfs; 实时数据分析采用Flink - 存储RedisEsHbase;离线数据存Hive; 后端开发 Springboot mybatis-Plus Java
开发常用工具包common/guava/Hutool/Lombok/fastjson/OkHttp工具包
前端 网页Vue Echarts 小程序 / APP安卓/苹果/H5 uniapp