SpringCloud-Eureka Ribbon

目录

一、Springcloud

1.1 springcloud简介

二、Eureka

2.1 Eureka简介

2.1.1 Eureka介绍

2.1.2 Eureka基本原理 

 2.1.3 Eureka 官方文档地址

2.2Eureka代码编写

2.2.1 总体说明

2.2.2 新建SpringCloud父项目

2.2.3 新建Eureka服务中心模块

2.2.4 创建三个微服务子模块并注册为Eureka客户端

2.2.5 结果验证

三、Ribbon

3.1 Ribbon简介

3.2 Ribbon代码编写

3.2.1总体说明

3.2.2新建ServiceOneCopy子项目

3.2.3修改ServiceThree子项目

3.2.4结果验证


一、Springcloud

1.1 springcloud简介

        SpringCloud(Spring Cloud),基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。

        SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,它们都可以用SpringBoot的开发风格做到一键启动和部署。

        SpringCloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

二、Eureka

2.1 Eureka简介

2.1.1 Eureka介绍

        Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。Zooleeper nacos.

        Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

        Eureka包含两个组件:Eureka Server和Eureka Client

        Eureka Server提供服务注册服务
        各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到EurekaClient是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

2.1.2 Eureka基本原理 

 基本原理
上图是来自eureka的官方架构图,这是基于集群配置的eureka; 
- 处于不同节点的eureka通过Replicate进行数据同步 
- Application Service为服务提供者 
- Application Client为服务消费者 
- Make Remote Call完成一次服务调用

        服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

        当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。

        服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。

 2.1.3 Eureka 官方文档地址

https://spring.io/projects/spring-cloud-netflix

2.2Eureka代码编写

2.2.1 总体说明

        本项目总体上为一个分步骤编写完成SpringCloud微服务开发项目的示例程序,使用了Eureka服务注册(第一步)、Ribbon请求负载均衡(第二步)和SpringCloud Gateway微服务网关(第三步)、Feign完成统一服务接口调用(第四步)。

        本案例说明为第一步:搭建SpringCloud项目,完成Eureka服务器、客户端子项目注册并提供各自的服务。

        本案例在idea中创建了一个父项目和四个子项目,父项目为微服务项目的总体管理模块,在其中统一引入SpringBoot、SpringCloud所需要的依赖包,并统一设置打包插件。

 四个子项目作用如下:

        ①EurekaService:Eureka服务中心子项目,作用是作为Eureka服务程序,管理其他微服务的状态。其他Eureka客户端子项目运行时需在此模块进行注册。
        ②ServiceOne:Eureka客户端-微服务1,提供了一个业务接口“serviceOne”。
        ③ServiceTwo:Eureka客户端-微服务2,提供了一个业务接口“serviceTwo”。
        ④ServiceThree:Eureka客户端-微服务3,提供了两个业务接口:

                 “serviceThree_toOne”:内部调用ServiceOne的“serviceOne接口”
                 “serviceThree_toTwo”:内部调用ServiceTwo的“serviceTwo接口”

2.2.2 新建SpringCloud父项目

1.新建基于Maven的项目

作为SpringCloud其他子模块的父项目,new->Project,选择基于Maven的项目,填入GroupId和AtrifactId(项目名称)然后创建。

2.父项目不需要写源码,所以删除项目的src文件夹。

3.配置父项目pom.xml中需增加的内容:

<!--指定版本属性,下面引用-->
<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>2021.0.3</spring-cloud.version>
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值