什么是SpringCloud
SpringCloud是微服务的一种解决方案,依赖SpringBoot实现。包含注册中心(eureka)、客户端负载均衡(Ribbon)、网关(zuul)、分布式锁、分布式会话等。
为什么要使用SpringCloud
SpringCloud是一套非常完整的微服务解决方案,俗称“微服务全家桶”,几乎内置了微服务所使用的各种技术,可以不必集成第三方依赖。
SpringCloud服务注册发现原理
每个SpringCloud服务器启动后向注册中心注册本服务器信息,如服务别名、服务器IP、端口号等,其他服务进行请求时先根据服务别名从注册中心获取到目标服务器IP和端口号,并将获取到的信息缓存到本地,然后通过本地使用HttpClient等技术进行远程调用。
SpringCloud 支持那些注册中心
Eureka、Consul、Zookeeper
现在Eureka闭源了,可以通过什么注册中心替代Eureka呢?
Consul或Zookeeper
Eureka如何实现高可用
启动多台Eureka服务器,然后作为SpringCloud服务互相注册,客户端从Eureka集群获取信息时,按照注册的Eureka顺序对第一个Eureka进行访问。
@LoadBalanced注解的作用
开启客户端负载均衡。
Nginx与Ribbon的区别
Nginx是反向代理同时可以实现负载均衡,nginx拦截客户端请求采用负载均衡策略根据upstream配置进行转发,相当于请求通过nginx服务器进行转发。Ribbon是客户端负载均衡,从注册中心读取目标服务器信息,然后客户端采用轮询策略对服务直接访问,全程在客户端操作。
Ribbon底层实现原理
Ribbon使用discoveryClient从注册中心读取目标服务信息,对同一接口请求进行计数,使用%取余算法获取目标服务集群索引,返回获取到的目标服务信息。
SpringCloud有几种调用接口方式
使用Feign和RestTemplate
DiscoveryClient的作用
可以从注册中心中根据服务别名获取注册的服务器信息。