免费个人网站+上传,温州专业微网站制作价格,烟台seo网站诊断,江门网站建设多少钱微服务重点解析 1. Spring Cloud 组件有哪些#xff1f; 2. 服务注册和发现是什么意思#xff1f;Spring Cloud 如何实现服务注册和发现的#xff1f;
如果写过微服务项目#xff0c;可以说做过的哪个微服务项目#xff0c;使用了哪个注册中心#xff0c;常见的有 eurek…微服务重点解析 1. Spring Cloud 组件有哪些 2. 服务注册和发现是什么意思Spring Cloud 如何实现服务注册和发现的
如果写过微服务项目可以说做过的哪个微服务项目使用了哪个注册中心常见的有 eureka、nacos
对于 eureka 服务注册服务提供者需要把自己的信息注册到 eureka 中由 eureka 来保存这些信息比如服务名称、ip、端口等等服务发现消费者向 eureka 拉取指定的服务列表信息如果服务提供者有集群则消费者会利用负载均衡算法选择一个进行调用服务监控服务提供者会每隔 30 秒向 eureka 发送心跳报告健康状态如果 eureka 服务 90 秒没接受到心跳从 eureka 中剔除
对于 nacos与 eureka 的区别 服务注册和服务发现跟 eureka 差不多主要是服务监控上有区别服务分为两大类临时实例与非临时实例两种服务收到的待遇还不一样 nacos 服务端支持主动检测服务提供者的状态临时实例采用心跳模式与 eureka 一致非临时实例采用主动检测心跳模式临时实例心跳不正常会被剔除非临时实例则不会被剔除nacos 支持服务列表变更的消息推送模式服务列表更新更加及时nacos 集群默认采用 AP高可用当集群中存在非临时实例的时候采用 CP强一致Eureka 采用 AP nacos 还支持配置中心eureka 只支持注册中心这也是选择使用 nacos 的一个重要原因
3. 你们项目负载均衡是如何实现的
结合实际情况回答负载均衡用的是 Ribbon在发起远程调用的时候RestTemplate 或者 Feign会使用到 Ribbon 选取服务 3.1 Ribbon 负载均衡策略有哪些
RoundRobinRule简单轮询服务列表来选择服务器WeightedResponseTimeRule按照权重来选择服务器响应时间越长权重越小RandomRule随机选择一个可用的服务器BestAvailableRule忽略那些短路的服务器并选择并发数较低的服务器RetryRule重试机制的选择逻辑AvailabilityFilteringRule可用性敏感策略先过滤非健康的再选择连接数较小的实例ZoneAvoidanceRule以区域可用的服务器为基础进行服务器的选择。使用 Zone 对服务器进行分类这个 Zone 可以理解为一个机房/机架等。而后再对 Zone 内的多个服务做轮询
3.2 如果想自定义负载均衡策略如何实现
如何配置负载均衡策略 Bean 注入容器法全局配置文件指定法局部 自己创建类实现 IRule自定义 IRule 实现 自定义负载均衡规则然后配置一下即可
4. 什么是服务雪崩怎么解决这个问题 例如图中表示的
服务 D 宕机服务 A 无法建立连接仍然进行额外的尝试服务 D 宕机服务 A 建立了连接消耗了连接池的连接数阻塞等待服务 D 的响应/心跳检测服务 D 的活性甚至请求会重传服务 A 很可能撑不住就也故障了而越往上层的服务调用者阻塞的时间几何增长也压根支持不了多少并发量也会雪崩式的崩溃
这样服务 D 宕机可能会导致依赖于它的其他服务出现连锁反应式的故障最终导致整个系统崩溃
服务故障但是没拒绝或直接响应异常导致的
服务限流也是不错的处理方法可以用 nginx网关sentinel 限流…
非本章重点之后会讲
4.1 服务降级解决
服务降级是服务自我保护的一种方式或者保护下游服务雪崩下面的服务消费者的一种方式用于确保服务不会受请求突增影响变得不可用确保服务不会崩溃
当访问失败、响应时间过长、资源不足之类的就会触发服务降级
其做法就是换另一个服务也就是一个 Plan B
返回“稍后尝试”执行其他的业务… 一般在实际开发中与 Feign 接口整合编写降级逻辑 4.2 服务熔断预防
服务熔断是通过监控对特定服务的调用响应时间和错误率等指标当达到设定的阈值时触发的机制即停止对该服务的调用并且在一段时间内拒绝对该服务的调用从而避免故障的扩散。
这里主要说说 Hystrix 熔断机制用于监控微服务调用情况
默认是关闭的如果需要开启需要在引导类上添加注解EnableCircuitBreaker启动后如果检测到 10 秒内请求的失败率超过 50%这里可以理解为请求走“降级”逻辑的比率就触发熔断机制之后每隔5秒重新尝试请求微服务如果微服务不能响应继续走熔断机制。如果微服务可达则关闭熔断机制恢复正常请求 5. 你们微服务是怎么进行监控的 为什么需要监控
服务与服务之间的远程调用链太过于复杂并且来自各个地方的不同的请求可能会通过网关、服务 A、…、服务 B、使用中间件/使用数据库…就可能出现以下几个问题 问题定位性能分析服务关系服务告警
常见的服务监控工具
或者说是分布式系统应用程序性能监控工具APMApplication Performance Management
SpringBoot-admin 简单局限性大 prometheus Grafana 企业常用很不错搭建困难 zipkin链路追踪工具 与业务代码耦合 skywalking链路追踪工具 搭建容易可以很好地解决刚才提到的问题
5.1 skywalking
skywalking 是一个分布式系统的 APM 工具提供了完善的链路追踪能力是 apache 的顶级项目
如何搭建可以自己去网上搜开源的看看就会 监控的对象
服务service业务资源应用系统微服务端点endpoint应用系统对外暴露的功能接口实例instance服务所在的物理机
5.2 微服务监控
对服务、端点、物理实例的访问时长与健康程度的监控并排名 链路追踪服务到服务、服务内部的 MySQL 访问等等 可见也可以用一些APM工具来发现 SQL 慢查询和定位慢查询例如 skywalking
还可以用调试工具Arthas运维工具Prometheus
服务关系 服务告警 当然可以设置自己的告警规则也可以设置发现问题发送短信/邮件给指定负责人的
5.3 回答
采用的是 skywalking 进行监控
skywalking 主要可以监控接口、服务、物理实例的一些状态。特别是在压测的时候可以看到众多服务中的哪些服务和接口比较慢例如慢查询之类的我们可以针对性的分析与优化我们还在 skywalking 设置了告警规则特别是在项目上线后我们分别给微服务设置了给相关负责人如果出错可以给 TA 发送短信/邮件第一时间知道项目的 bug 情况并尽可能快的去修复