Java高频面试题(十一):SpringCloud微服务核心技术全解析
Spring Cloud技术框架(动态路由、灰度发布、流量控制、熔断降级、链路追踪等)微服务概念每一个微服务的开发其实跟我们Spring boot的单体项目开发是一样的只是开发的时候我们就需要考虑单体的项目多了我们如何来管控于是就可以使用nacos注册中心把每一个单体项目都注册到注册中心上面这样我们就能够知道我们的每一个应用都是怎么部署的。但是服务会根据我们的需求会进行不同程度的拆分拆分完了之后服务与服务之间又会存在调用关系Ribbon就可以解决这个问题但是Ribbon在编码层面不是很友好我们可以使用OpenFeginOpenFegin对Ribbon进行了封装而且还提供了对Spring MVC注解支持。每一个微服务都有自己的配置文件部署多了配置文件也会不方便管理我们就可以使用nacos管理配置文件的配置中心。微服务形成的集群对于用户来说都是一个整体的服务但是用户不可能记住我们每一台服务器地址为了统一一个对外访问的服务器地址我们就可以使用网关Gateway。至于灰度发布我们可以将服务注册到注册中心并提供gateway网关的Weight策略或Version标签来实现流量分配。服务与服务之间进行调用的时候还可能设计到数据的一致性问题由于每一个微服务都是独立的进程数据一致性保证就需要使用seata框架来完成分布式事务。为了追踪服务之间调用问题我们就可以使用链路追踪Sleuth(zipkin)、Shywalking。在高并发的情况下我们的服务可能会出现问题为了减少我们微服务出现的问题以及预防出现的问题我们就可以使用Sentinel流控框架可以对访问的流量进行控制同时还提供了服务熔断和降级的功能Spring Cloud面试题Nacos与Eureka的区别如何实现服务健康检测Nacos支持AP(最终一致性)/CP(强一致性)模式切换提供DNS-F和临时实例两种注册模式通过心跳机制默认5秒和主动探测实现健康检查。对比Eureka仅支持AP模式Nacos还集成了配置管理功能Ribbon与OpenFeign如何协作轮询策略有哪些Ribbon提供IRule接口实现轮询、随机等算法OpenFeign通过FeignClient注解(注解中写需要调用的注册的服务名称和请求路径在Client接口中声明调用的方法)封装HTTP调用支持熔断降级需整合Hystrix或SentinelSentinel流量控制使用注解SentinelResource注解在控制层方法上value设置流控名称使用blockHandlerClass指定流控处理的控制层的类blockHandler是处理流控时处理BlockException异常的方法http://ip:port/zipkin访问Sentinel可视化流控的配置界面。Nacos配置变更如何实时生效与Spring Cloud Config对比优劣通过RefreshScope注解在控制层类上注解可能会导致控制层定时器失效需要监听RefreshScopeRefrshedEvent事件在监听方法中调用一次定时方法这样bean就会被创建或Nacos监听机制实现对比Config需依赖Git WebhookNacso还支持多环境配置和版本回滚。Gateway如何实现灰度发布过滤器执行顺序利用Weight路由权重或Header版本标签进行分流流量自定义GlobalFilter需实现Ordered接口控制优先级Seata的AT模式工作流程Seluth如何整合ZipkinAT模式通过UNDO_LOG回滚日志实现二阶段回滚Seluth生成TraceID串联调用链(请求到达分布式入口端点Seluth为该请求创建一个唯一TraceID请求在分布式系统流转时框架始终保持传递该唯一值直到请求返回通过TraceID将所有请求串联起来就形成了一条完整的链路SpanID同理得到调用时间事件名称请求信息的元数据)Zipkin可视化展示耗时和拓扑(将所有模块yml中加入zipkin配置注不要让nacos把zipkin注册进去)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2422728.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!