Java面试题(9)

模拟一下在SpringCloud中服务和服务之间调用的过程

客户端向服务中心注册,比如Eurkanacos注册中心

服务端向服务中心拉取,负载均衡到一个客户端(根据服务名称到服务中心获取IP和端口)

根据IP和端口开始远程调用

服务与服务之间用的协议是什么 FeignClient底层用的是什么协议

SpringCloud中主要使用两种,HttpRPC

Http:基于请求和响应的协议,例如RestTemplateFeign

  • 优点:耦合度低,可以使用测试工具postman对请求进行测试
  • 缺点:速度慢

RPC:remote procedure call 远程过程调用,调用远程函数像调用本地函数一样,开发者无需关心网络传输细节,例如gRPCDubbo

  • 优点:使用socket通信,双向通信,网络传输速度快,实时性好
  • 缺点:耦合度高

redis的哨兵模式

redis的高可用解决方案,通过sentinel(哨兵)进程监控redis情况,sentinel不断给主节点发送ping命令,如果主节点没有回复,被该sentinel判定为主观下线,因为有可能是网络原因,所以不能判断真的宕机,如果超过多个sentinel判定是主观下线,这就认定为客观下线,那么就会选举slave作为新的master,实现自动故障转移和主从切换

CAP的原理

C:consistency,一致性,节点数据发生变化,其他节点必须在第一时间内获得新数据

A:available,可用性,任何时刻都需要响应客户端的请求

P:partition tolerance,分区容错,一定会出现,发生网络故障导致通信失败,接受在其他分区运行,因为其他分区有故障节点数据

BASE理论

CP:强一致,同时提交、同时回滚

AP:最终一致,会出现软状态,临时不一致,软状态结束后,数据一致,例如秒杀某个商品的时候,前一秒显示还有库存,等提交订单支付失败,因为高可用,所以页面数据和数据库数据出现暂时不一致,但是服务是一直在,库存没了自然不能支付成功

注意:没有CA,违背了分布式系统设计的初衷,因为放弃了分区,没部署子节点

数据库主从复制的原理

主库进行修改、增加、删除,从库进行查询,主库把修改的数据记录到二进制文件binary log ,从库I/O线程把binary log 写到中继日志relay log ,然后由从库SQL线程解析relay log日志生成SQL脚本,最后执行SQL脚本达到数据一致

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值