微服务架构的原理
注册中心的原理
- 服务注册表:服务注册表示注册中心的核心,它用来记录各个微服务的信息,例如微服务的名称,ip,端口,服务注册提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于服务的注册与注销。
- 服务注册与发现:服务启动后,向注册中心注册自己的信息。服务发现,查找注册中心中可用的微服务列表。
- 服务检查:注册中心使用一定的机制定时检测已注册的服务,如发现某实例长时间无法访问,就会从服务注册表移除该实例。
配置中心的原理
在服务运行之前,将所需的配置信息从配置仓库中拉去到本地服务,达到配置管理的目的
配置中心如何实现自动刷新的
- 配置中心Server端承担起刷新的职责。
- 提交配置出发post请求给server端的bus/refresh接口
- server端接收到请求并发送给spring cloud bus总线
- spring cloud bus接到消息并通过其他连接道总线的客户端
- 其他客户端收到通知,请求server获取最新配置
- 全部客户端获取到最新配置
用Zookeeper和Eureka做注册中心有什么区别
ZK保证的是CP(一致性,容错性),而Eureka则是AP(可用性,容错性)
Springcloud 和 Dubbo有哪些区别
- dubbo是二进制传输,对象直接转成二进制,使用RPC通信。springcloud是http通信,同时使用http协议一般会使用json报文,json再转二进制,消耗会更大。
- Dubbo只是实现了服务治理,而springcloud 下面几十个子项目分别覆盖了微服务架构的方方面面,服务治理只是其中一个方面,一定程度上来说,dubbo只是springcloud netfilx中一个子集
Ribbon负载均衡的原理是什么?
- Ribbon通过LoadBalancer接口对外提供统一的服务器(server)功能,此接口会根据不同的负载均衡策略选择合适的server返回给使用者。
- IRule是负载均衡策略的抽象,ILoadBalancer通过Rule的Choose方法返回给server
- IPing用来检测server是否可用,ILoadBalancer的实现类维护一个Timer每隔10s检测一次Server可用状态。
- IClinetConfig主要用户初始化各种客户端和负载均衡的配置薪资,实现类为DefalutConfigImpl
什么是Hystrix?实现的原理是什么?
Hystrix是一个延迟容错库,旨在隔离对远程系统,服务,第三方库的访问点,停止级联故障,并在不可避免发生故障的复杂分布式系统中实现快速恢复,主要靠spring aop实现