前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >原创 | Eureka搭建分布式SpringCloud项目

原创 | Eureka搭建分布式SpringCloud项目

作者头像
润森
发布于 2020-01-13 09:55:46
发布于 2020-01-13 09:55:46
1.2K00
代码可运行
举报
文章被收录于专栏:毛利学Python毛利学Python
运行总次数:0
代码可运行

大家好,我是润森。期末化学已挂,谁来烧纸,挂得又有动力学习了?

SpringCloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

服务注册与发现根据功能可划分为服务注册中心、服务提供者、服务消费者三个角色

原理图

服务启动时,会以map的形式注入到服务注册中心,map的key为该服务的别名,value是list集合,list下的value是由ip地址与端口号组成的字符串,value为list集合是因为服务可能是集群的

启动服务消费者,服务消费者调用哪个服务,就会以哪个服务的别名作为key到注册中心获取value值,获取到服务的调用地址List,将其缓存到服务器当中,默认情况下,每隔30秒更新一次服务调用地址,即每隔30秒一次去服务注册中心获取最新的调用地址

当消费者实际调用服务接口时,若list集合大于1,即服务做了集群,则在本地进行负载均衡,决定要调用哪个地址,最后根据调用地址在本地使用httpclient技术实现接口调用

Eureka

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

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

  • Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
  • Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器

Eureka实战

开启eureka-server

踩坑之一:在Windows系统开启eureka-server,路径:C:\Windows\System32\drivers\etc\host

C:\Windows\System32\drivers\etc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1	eureka-server

至于Github的SSH应该使用的Github的SSH开启配置的

创建项目

创建空的IDEA项目,以及三个consumer-user,eureka-server和provide-ticket SpringBOOT的模块

eureka-server

eureka-server的服务注册功能,创建SpringBOOT需要选用eureka-server

consumer-user和provide-ticket

consumer-user和provide-ticket是实现服务发现功能,需要选用eureka-DisCovery-Clien

目录如下

provide-ticket

provide-ticket中的application.yml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server:
  port: 8001
spring:
  application:
    name: provider-ticket
eureka:
  instance:
    hostname: eureka-server  # eureka实例的主机名
  client:
    register-with-eureka: true # 注册服务的时候使用服务的ip地址
    fetch-registry: false #不从eureka上来获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/

service中的TicketService

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Service
public class TicketService {

    @Autowired
    public String getTicket() {
        System.out.println("8001");
        return "《厉害了,我的国》";
    }
}
Controller中的TickerController
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RestController
public class TickerController {

    @Autowired
    TicketService ticketService;

    @GetMapping("/ticket")
    public String getTicket() {
        return ticketService.getTicket();
    }
}

provide-ticket具体目录

访问:http://127.0.0.1:8001/ticket

同时将provide-ticket工程通过打出jar

在provide-ticket换端口,分别打出运行在8001和8002不同端口的两个jar包

eureka-server

eureka-server中的application.yml配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server  # eureka实例的主机名
  client:
    register-with-eureka: false #不把自己注册到eureka上
    fetch-registry: false #不从eureka上来获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/

运行访问:http://localhost:8761

打开Eureka的WEB页面

consumer-user

consumer-user中的application.yml配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  application:
    name: consumer-user
server:
  port: 8200
eureka:
  instance:
    prefer-ip-address: true # 注册服务的时候使用服务的ip地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

controller中的UserController

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RestController
public class UserController {
    @Autowired
    RestTemplate restTemplate;
    @GetMapping("/buy")
    public String buyTicket(String name) {
        String s = restTemplate.getForObject("http://PROVIDER-TICKET/ticket", String.class);

        return name + "购买了" + s;
    }
}

consumer-user启动类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerUserApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerUserApplication.class, args);
    }
    @LoadBalanced //使用负载均衡机制
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

consumer-user目录如下:

consumer-user项目目录

测试运行

通过java -jar命令运行两个provide-ticket的jar包

启动eureka-server和eureka-server,访问http://localhost:8761/

点击- localhost:consumer-user:8200 访问buy去买票

总结

本文使用Eureka搭建服务注册和服务发现的分布式SpringCloud项目

再自我介绍一下吧。我叫润森,是一个的学习者,分享自己的所学所得。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
springboot分布式之springcloud-Eureka注册中心
1、新建一个空项目,新建一个module,命名eureka-server,选中eureka server。新建一个Module,命名provider-ticket,选中eureka discovery client。新建一个Module,命名consumer-user,选中eureka discovery client。
西西嘛呦
2020/08/26
4020
springboot分布式之springcloud-Eureka注册中心
SpringBoot和Spring Cloud
​ Spring Cloud 是一个分布式的整体解决方案。 Spring Cloud 为开发者提供了在分布式系统(配 置管理,服务发现,熔断,路由,微代理,控制总线,一次性 token,全局琐, leader 选举,分 布式 session,集群状态)中快速构建的工具,使用 Spring Cloud 的开发者可以快速的启动服务 或构建应用、同时能够快速和云平台资源进行对接。
OY
2022/03/17
1980
SpringBoot和Spring Cloud
微服务架构Day14-SpringBoot之分布式
分布式应用 在分布式系统中,常用zookeeper+dubbo组合 SpringBoot推荐使用全栈的Spring,SpringBoot+SpringCloud Zookeeper+Dubbo Zookeeper Zookeeper:(注册中心) 是一个分布式,开源的分布式应用程序协调服务 为分布式应用提供一致性服务的软件: 配置维护 域名服务 分布式同步 组服务 Dubbo Dubbo是Alibaba开源分布式框架 最大的特点是按照分层的方式架构,使用这种方式使各层之间解耦合(最大限度地松耦合) 从
攻城狮Chova
2022/01/22
2230
SpringCloud之eureka
随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?
roydonGuo
2023/02/03
3300
SpringCloud-生产者和消费者
本文介绍SpringCloud微服务架构中常用的两个基本角色——生产者和消费者。生产者是提供具体服务或功能的模块。它将业务逻辑封装成服务,供其他模块调用。生产者向服务注册中心注册自己提供的服务,使其他模块可以通过服务注册中心发现并调用这些服务。
Damon小智
2024/02/15
4370
SpringCloud-生产者和消费者
springcloud之Eureka
Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,就可以访问到服务,而不需要修改调用的配置文件。
Java微观世界
2025/01/20
730
springcloud之Eureka
SpringCloud---Eureka
Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理
大忽悠爱学习
2021/11/15
3350
SpringCloud之Eureka
Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。
shaoshaossm
2022/12/27
2620
SpringCloud之Eureka
springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin
springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin 相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展。会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新建的项目都是用springboot,附源码下载,推荐使用coding地址下载,因为可以切换分支,后期可以及时更新。 coding仓库地址(推荐
用户2235302
2018/06/13
2.1K0
Springcloud:Eureka服务注册与发现
@EnableEurekaServer加上个注解就是Eureka的服务端了,我们并不需要写什么业务员,启动之后访问
冷环渊
2021/10/19
5060
【愚公系列】2023年11月 Java教学课程 184-SpringCloud(Eureka注册中心)
微服务注册中心是一个管理微服务的工具,可以帮助微服务在分布式系统中发现、注册和协调服务之间的交互。它是微服务架构的核心组件之一,负责维护服务注册表,提供服务发现、负载均衡、故障恢复等功能,使得微服务能够更好地运行和协作。常见的微服务注册中心有Consul、Eureka、Zookeeper等。
愚公搬代码
2025/06/02
780
【愚公系列】2023年11月 Java教学课程 184-SpringCloud(Eureka注册中心)
微服务架构下的服务治理:在 SpringCloud 框架中实现服务的注册与发现
服务治理 RPC远程过程调用协议的核心设计思想: 在于注册中心, 因为注册中心:管理每个服务与服务之间的一个依赖关系 服务治理: 在传统的RPC远程过程调用协议中,管理每个服务与服务之间的依赖关系非常复杂.可以使用服务治理技术,管理每个服务与服务之间的一个依赖关系.可以实现本地负载均衡,服务发现与注册,容错等 服务注册与发现 注册中心 在RPC远程过程调用协议中,有一个注册中心 SpringCloud支持三种组册中心: Consul(go语言) Eureka Zookeeper Dubbo支持两种注册中心:
攻城狮Chova
2021/08/17
8500
微服务架构下的服务治理:在 SpringCloud 框架中实现服务的注册与发现
springboot2新版springcloud微服务全家桶实战
本篇文章是springboot2.x升级后的升级springcloud专贴,因为之前版本更新已经好久了,好多人评论可不可以出个新版本,大家一定要注意,这是springboot2.x版本的,springboot1.x的请参考 点击查看文章,基本组件都不变就是升级jar包版本,主要就是hystrix-dashboard使用有点变化。还有一点要注意的是<font color="#dd0000">eureka已经宣布闭源</font>,目前使用的版本是稳定版,不影响使用,新项目建议大家使用consul或者zookeeper。
用户2235302
2018/08/10
7.3K0
springboot2新版springcloud微服务全家桶实战
SpringCloud微服务技术栈的注册中心Eureka
在微服务架构中,服务的数量庞大,而且每个服务可能会有多个实例。此时,需要一个中心化的地方来管理和维护各个服务的相关信息,这就是微服务治理中很重要的一环:服务注册与发现。其中,服务注册是指将提供服务的应用实例注册到注册中心,而服务发现则是指从注册中心中获取服务实例列表并调用服务。本文将介绍SpringCloud微服务技术栈中的注册中心Eureka。
青山师
2023/05/05
1730
Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)初级篇 ---- 服务注册与发现
步骤i同 将EurekaClient端8001注册进EurekaServer成为服务提供者provider !!!
百思不得小赵
2022/12/01
3660
Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)初级篇 ---- 服务注册与发现
SpringCloud 微服务分布式 笔记(二)
微服务在消费远程API时总是使用本地缓存中的数据。 因此一般来说,即使Eureka Server发生宕机,也不会影响到服务之间的调用。
Java_慈祥
2024/08/06
1820
SpringCloud 微服务分布式 笔记(二)
06-SpringCloud Eureka
Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理
彼岸舞
2021/08/24
4100
11SpringCloud Sleuth分布式请求链路跟踪
运行 java -jar zipkin-server-2.12.9-exec.jar
Remember_Ray
2020/11/04
4680
11SpringCloud Sleuth分布式请求链路跟踪
(3)搭建Eureka注册中心
这些问题都需要利用SpringCloud中的注册中心来解决,其中最广为人知的注册中心就是Eureka,其结构如下:
用户7630333
2023/12/07
4820
(3)搭建Eureka注册中心
SpringCloud入门(2)Ribbon
Ribbon是客户端的「负载均衡器」,消费者可以通过服务别名调用服务时,需要Ribbon做负载均衡来以「某种机制」访问实际的服务调用地址。
用户8902830
2021/08/12
4100
SpringCloud入门(2)Ribbon
相关推荐
springboot分布式之springcloud-Eureka注册中心
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验