微服务:
优点:服务独立部署,更加灵活,降低服务间的耦合度;技术更加灵活;效率提高,服务启动速度变快;更容易组合各个团队。
缺点:服务间调用复杂;运维难度增加;
SpringCloud组件:提供了构建微服务系统所需的一组通用开发模式,以及一系列快速实现这些开发模式的工具。
通常指SperingColud Netfix:Eureka(服务注册,停更),Feign(发送请求,停更),Ribbon(负载均衡),Hytrix(客户端熔断),zuul(路由,停更)
SpringCloudAlibaba组件:Nacos(服务注册)、Dubbo(负载均衡)、Sentinal(客户端熔断)、Seata(分布式事物框架)
本项目:服务注册、配置中心(Nacos)、路由、网管(gateway)、负载均衡(Nginx)、发送请求(feign)
服务雪崩(解决办法:服务降级、服务熔断):由于下游服务响应慢,或者服务异常,导致请求堆积,上游服务挂掉。
服务熔断:下游服务异常,上游服务断开调用,直到下游服务恢复
服务限流:防止系统被大量访问压垮,在秒杀系统中对请求进行限流
服务降级:服务过载时,关闭某个服务,或者限流某个服务
怎么拆分微服务
尽量保证微服务的稳定,基本准则:
服务之间尽量不要有业务交叉;
微服务之间只能通过接口调用,而不能绕过接口获取对方数据(防止对方服务修改数据结构,本服务也要跟着修改,影响本服务稳定性)
高内聚低耦合
布式事务如何处理?怎么保证事务一致性
分布式事务:将不同节点上的事务操作,提供操作原子性,第一要点,在没有直接关联的事务之间建立联系
1、http连接,最大努力通知,并且事后对账补偿
2、MQ,事务消息机制
3、Redis系统1结束对Redis值+1,系统2结束对Redis值-1,整体结束后若redis值为0,则事务成功,否则事务回滚
4、Seata,通过TC在多个事务间建立联系,
a) 两阶段(操作数据库):锁资源(数据库数据),统一提交事务
b) 三阶段(操作redis):准备阶段(锁redis连接),锁资源,统一提交事物
面试题:
Dubbo、SpringCloudNetflix、SpringCloudAlibaba对比:
注册中心作用:
Eureka、Zookeeper、Nacos对比: