SpringCloud入门总结

SpringCloud基于Springboot构建,是为了简化分布式在微服务中的应用:

一、SpringCloud采用Eureka注册中心,Eureka分为服务端和客户端,应用注册在服务端,使用hostname或者ip识别相同的应用,客户端通过服务端调用其他客户端,类似于Zookeeper。

二、服务的调用有两种常见的方式,分别通过两个组件完成:

  1. Ribbon:通过手动添加@LoadBalanced注解,将Ribbon封装到RestTemplate bean中,在使用RestTemplate API访问远程应用时自动实现了服务端负载均衡,这种方式相当于RestTemplate+负载均衡,这种方式不够优雅。
  2. Feign:Feign通过创建被调用者的代理对象,通过对象调用方法的方式进行调用,就好像在本地调用一样,这种方式更加优雅,当然需要额外创建一个被调用者的接口及抽象方法,这样Feign才会创建出代理对象。Feign底层还是通过Ribbon实现负载均衡。
  • 服务端负载均衡:Ribbon实现的是客户端负载均衡,不需要额外的负载均衡的服务,Ribbon将Eureka服务端中的地址列表拷贝到本地,每次调用时从本地直接查找并选择一个地址进行调用,最简单的方式就是轮询,挨个调用。

三、高可用的Eureka服务端,

  即Eureka服务端集群。Eureke注册中心搭建集群很便利,只需要将服务端像客户端一样注册到其他服务端即可,这种服务端和客户端一致的方式也是一种简化的体现。

  • 服务发现:Eureka会主动的去发现服务,已经有两个节点的服务端,需要增加一个服务端,只需要配置任意一个服务端地址,就会被另外一个所发现。这一点和ElasticSearch的集群很相似,对于横向扩展来说很方便,只需要配置一个节点即可。对于客户端扩展也是相同的道理。

以上就是SpringCloud的最基础的三个组件,本质上就是给Http调用+负载均衡,通过简单的配置和注解就可以完成分布式。对比Dubbo+Zookeeper的方式,Eureka注册中心不需要下载和配置第三方的应用,就像部署Springboot应用一样部署实现Eureka集群,从这个角度来说也是简化了开发成本。

原文地址:https://www.cnblogs.com/lishaojun/p/11484697.html