暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Spring Cloud微服务-Eureka+Ribbon

小胡的博客 2019-01-08
258
  1. Spring Cloud是什么?

(1)云计算?不是

  (2) 依赖于Spring Boot

  (3)快速构建分布式系统的工具集-全集桶

2.关于Spring Cloud的版本?

(1)大部分spring软件的版本是以:主版本.次版本.增量版本.里程碑版本的形式命名

3.Spring Cloud特点

(1)约定优于配置

(2)开箱即用、快速启动

(3)适用于各种环境 --PC Serve ---云环境--容器(Docker)

(4)轻量级的组件-Eureka-服务发现

  (5) 组件的支持很丰富,功能很齐全-配置中心--注册中心--智能路由

  (6) 选型中立--服务发现--Eureka-Zookeeper-Consul

4. 需要的技术储备 

  (1)Java/Scala/Groovy...

  (2)构建工具--Maven--Gradle

  (3)Spring Boot

服务提供者与服务消费者:

 

服务发现组件:Eureka

1:什么事Eureka?

(1)Eureka来自生产环境

(2)Spring Cloud对Eureka支持很好

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。Spring Cloud将它集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。    

1:Eureka 原理

上图是来自Eureka官方的架构图,大致描述了Eureka集群的工作过程。由于图比较复杂,可能比较难看懂,这边用通俗易懂的语言翻译一下:

 

- Application Service 就相当于本书中的服务提供者(用户微服务),Application Client就相当于本书中的服务消费者(电影微服务);

- Make Remote Call,可以简单理解为调用RESTful的接口;

- us-east-1c、us-east-1d等是zone,它们都属于us-east-1这个region;

 

由图可知,Eureka包含两个组件:Eureka Server 和 Eureka Client。

 

Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

 

Eureka Client是一个Java客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

 

在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。

 

Eureka Server之间将会通过复制的方式完成数据的同步。(详见Eureka高可用章节)

 

Eureka还提供了客户端缓存的机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。

 

综上,Eureka通过心跳检测、健康检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。


实现Euraka Server和Client: 相关关代码已经放到GitHub上:

https://github.com/huran111

可以看到 2个服务提供者一个消费者。

学习可参考官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.1.0.RC3/single/spring-cloud-netflix.html#netflix-eureka-client-starter 其余百度都扯淡

如下我们开启4个微服务,服务名称分别为:user-producter:8900,user-producter:8901,user-producter-2:7900,user-producter-2:7901

一个消费端:user-consumer-ribbon

注意请看官方文档这句话:

大致意思就是,配置RibbonClient的时候不能放在和启动类同一个包下。否则会覆盖所有RibbonClient其他配置策略。

解决方法是自定义在注解,进行排除。

启动服务:

启动消费者:

请求如下:

Eureka默认是xml,可在方法是声明为JSON格式,可以看到接口分别请求了四个服务。这里我们其请求了8次:结果如下:

可以看到调用的服务是随机的。下篇文档讲解 Ribbon如何脱离Eureka单独使用!!!敬请期待

文章转载自小胡的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论