文章目录

  • 前言
  • 一、Eureka是什么?
  • 二、项目实现步骤
    • 1.项目外壳的搭建
    • 2.Eureka注册中心服务搭建
    • 3.Provider(提供者)服务搭建
    • 4.Consumer(消费者)服务搭建
  • 总结

前言

本篇blog将进行SpringCloud的Eureka注册中心的搭建与简单使用的介绍,主要分为以下几个方面展开介绍:
1.项目整体架构;
2.每个服务的搭建过程与详细解释;
3.Eureka服务之间的简单调用;


一、Eureka是什么?

Eureka为SpringCloud的注册与配置中心,与Zookeeper和nacos的作用大致相同,在Eureka里面,可以进行项目中服务的注册与监听,实时把控项目各个服务的运转情况;另外Eureka是AP原则的(著名的CAP原则),A为服务可用性,P为服务对网络分区故障的容错性。

二、项目实现步骤

1.项目外壳的搭建

项目外壳采用的是maven项目搭建的,创建好maven项目之后,删除maven项目的src等无用的部分,只保留空壳作为各个服务的整体外壳。

其效果图下图所示:

2.Eureka注册中心服务搭建

Eureka注册中心搭建,仍然是建立在maven项目之上的,但是后来经过手动的修改,让其成为了SpringBoot项目;

其项目结构如下图所示:

其中启动类EurekaApplication的代码为:

@SpringBootApplication  //SpringBoot启动类核心注解
@EnableEurekaServer  //Eureka服务端
@EnableDiscoveryClient  //服务发现
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class,args);}
}

其对应的properties配置文件如下:

# 出现错误时,直接抛出异常
spring.mvc.throw-exception-if-no-handler-found=true
# 不要为我们工程中的资源文件建立映射
spring.resources.add-mappings=true
#获取端口号
#server.port=${server.port}spring.application.name=eureka-server
server.port=8761
#由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己
eureka.client.register-with-eureka=false
# 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
eureka.client.fetch-registry=false
#关闭自我保护模式
eureka.server.enable-self-preservation=false
#扫描失效服务的间隔时间
#eureka.server.eviction-interval-timer-in-ms=1000
eureka.instance.hostname=localhost

经过上面的配置,正常情况下已经可以正常启动,正常启动页面如下所示:


可以正常显示端口号(8761端口为Eureka专用端口,不可更改,否则报错)即表明加载成功,此时在本地浏览器访问:http://localhost:8761/,可以看到Eureka的页面,至此,恭喜你完成了注册中心的配置。如下图所示:

3.Provider(提供者)服务搭建

有了注册中心之后,我们开始创建提供者,并在Eureka注册中心中进行注册,在本地先进行测试接口是否可用:

提供者仍然选用maven项目进行搭建,后面仍然是经过修改使其成为SpriingBoot项目,其项目结构下图所示:


其中controller为测试接口,其接口的功能返回一个字符串Hello World,其主要目的是测试项目是否可以正常运转。Hello的内容为:

@RestController  //@Response和@Controller注解的合体注解
public class Hello {@RequestMapping("/user/hello")public String SayHello(){return "Hello World!";}
}

在服务的启动类注解中,要特别注意@EnableEurekaClient ,这个表示的服务的客户端,和Eureka中的不一样。启动类代码如下:

@SpringBootApplication
@EnableEurekaClient  //服务客户端
public class ProvideeApplication {public static void main(String[] args) {SpringApplication.run(ProvideeApplication.class,args);}
}

其配置文件如下:

#服务名
spring.application.name=eureka-client-user-service
#端口号
server.port=8081
#注册中心URL
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
# 采用IP注册
eureka.instance.preferIpAddress=true
# 定义实例ID格式
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

启动Prodiver之后,可以在Eureka注册中心页面上看到该服务的注册信息,根据你配置的端口号找到具体的服务。如下图所示:

测试Provider的测试接口是否可用,根据你设置的接口名称,在浏览器中进行访问即可,我的地址是:http://localhost:8081/user/hello,正常访问页面如下所示:
至此,恭喜你完成Provider(提供者)服务的配置。

4.Consumer(消费者)服务搭建

有了Provider之后,接下来我们创建消费者Consumer,去调用Provider里面的接口,实现简单的服务之间的相互调用。
Consumer的结构如下图所示:

从上到下文件依次为:
1.BeanConfiguration类为RestTemplate的实例化类;
2.ArticleController类为正常的接口调用类;
3.ServiceApplication类为该服务的启动类;
4.properties类为该服务的配置类。

BeanConfiguration类代码如下:

@Configuration
public class BeanConfiguration {@Bean@LoadBalanced  //会自动构造LoadBalancerClient接口的实现类并注册到Spring容器中public RestTemplate getRestTemplate(){return new RestTemplate();}
}

ArticleController类代码如下:

@RestController
public class ArticleController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/sayHello")public String SayHello(){//这里的地址填写Provider的服务名与接口地址(即被调用服务的服务名和要访问的接口地址)return restTemplate.getForObject("http://eureka-client-user-service/user/hello",String.class);}
}

ServiceApplication启动类代码如下:

@SpringBootApplication  //启动类
@EnableEurekaClient  //服务客户端
public class ServiceApplication {public static void main(String[] args) {SpringApplication.run(ServiceApplication.class,args);}
}

properties配置类代码如下:

#服务名
spring.application.name=eureka-client-article-service
#服务端口
server.port=8082
#注册中心URL
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
# 采用IP注册
eureka.instance.preferIpAddress=true
# 定义实例ID格式
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

启动Consumer消费者的启动类之后,可以在Eureka注册中心看到该服务已经被注册了。如下:
接下来我们通过访问本服务的地址来调用Provider提供者中的接口,即实现服务之间的调用,我的地址为:http://localhost:8082/sayHello,可以看到可以正常访问Provider服务的接口。

至此,恭喜你已经实现了服务之间的简单调用。


总结

以上,对SpringCloud的Eureka进行了简单的介绍,以及项目的搭建与简单使用,后面的话会持续更新,因本人也在学习中,如有不足错误之处,恳请大佬指正。

SpringCloud,Eureka,服务注册,微服务之间的项目调用相关推荐

  1. springboot2 springcloud Greenwich.SR3 构建微服务--1.eureka注册中心搭建

    本一系列springcloud的文章主主要讲应用, 也会涉及到一些原理的讲解. 写了几句自己这段时间看书,总结的微服务的东西送给你们 : 道为源,源分多支为术,如龙生九子,九子各不同,然皆为龙也. 凡 ...

  2. 【SpringCloud复习巩固】微服务+Eureka+Ribbon

    文章中需要用到的代码和sql 链接:https://pan.baidu.com/s/1_1Qqro7wR5zi7Ds8Bgmf-g 提取码:vxzg 目录 一.微服务 1.1单体架构 1.2分布式架构 ...

  3. springcloud全局过滤_微服务技术SpringCloud 互联网网站架构演变过程

    网站架构演变过程 传统架构 传统的SSH架构,分为三层架构 web控制层.业务逻辑层.数据库访问层. 传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务没 ...

  4. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...

    编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...

  5. SpringCLoud实战微服务之——微服务简介以及入门使用

    微服务概述 微服务是什么?微服务解决了什么问题?微服务有什么特点? 单体架构是什么? 一个归档包包含了应用所有功能的应用程序,我们通常称之为单体应用.架构单体应用的架构风格,我们称之为单体架构,这是一 ...

  6. SpringCloud一、前提概述、相关微服务和微服务架构理论知识、微服务技术栈有哪些、

    ①前提概述.微服务架构springcloud的相关学习. 前提知识+相关说明 1.目前,我们学习到最后的微服务架构SpringCloud,基本上需要熟悉以前的学习内容和知识:springmvc.spr ...

  7. 01 微服务和微服务框架 —— SpringCloud

    一.微服务介绍 1. 什么是微服务 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微".什么是"服务", 微 狭义来讲就 ...

  8. 使用feign调用注解在eureka上的微服务,简单学会微服务

    使用feign调用注解在eureka上的微服务. 首先,确保所有服务(调用方与被调用方)都被注册在同一个eureka服务上. 1. 在调用方添加依赖(万事第一步,加依赖) <dependency ...

  9. SpringCloud(5)— 微服务部署(Docker)

    SpringCloud(5)- 微服务部署(Docker) 一 初识Docker 1.项目部署问题 大型项目组件较多,运行环境较为复杂,部署和维护困难 依赖关系复杂,容易出现兼容性问题 开发,测试,生 ...

  10. PDF分享-SpringCloud+高并发+中间件+微服务架构从零开始学微服务架构

    什么是微服务? 如何快速上手SpringCloud微服务系统架构+常用中间件服务 1.SOA.Webservice.Dubbo.SpringCloud究竟什么是微服务? 2.单体应用向微服务异构平台架 ...

最新文章

  1. 人脸识别未来发展如何更有“面子”?
  2. SCons — 程序构建工具
  3. c++ 编译添加dll_linux下编写C/C++代码须知———串讲
  4. 对称振子天线matlab程序,对称振子天线详解.ppt
  5. 写给准备找工作的同志们!!!!(转载)
  6. nodejs + ts 配置
  7. Taro+react开发(82):设置默认属性
  8. 常用并发工具类(并发集合类)
  9. numpy+pandas+matplotlib画箱形图
  10. java md5 utf-8_Jquery与java MD5加密不同
  11. python3 global_Python3基础 global 在函数内部对全局变量进行修改
  12. 楼对面的男士夏天就光膀子,请问大家,男士真的都爱光膀子吗?
  13. 在着手开发一款移动应用之前,我们需要考虑哪些因素?
  14. 2021.9.11周六PAT甲级考试复盘与总结
  15. B00003 C++标准库 std::bitset
  16. 计算机网络重点知识总结 谢希仁版,计算机网络谢希仁版网络层知识点总结
  17. 利用K8S技术栈打造个人私有云(连载之:K8S环境理解和练手)
  18. 微信小程序实现用户登录(详)
  19. java pem 读取_PEM_密钥对生成与读取方法
  20. 抖音的服务器到底啥配置?

热门文章

  1. 湖南大学21夏训练三13.数字统计
  2. IntelliJ IDEA 详细中文教程
  3. 吉林大学计算机动画与游戏导师,吉林大学计算机导师
  4. docker inspect --format 详解
  5. offsetHeight、offsetWidth
  6. Ubuntu配置Samba服务器
  7. PPT处理控件Aspose功能演示:使用C#从PowerPoint文件中提取文本
  8. Halcon3d 点云计算平面度
  9. 夜神模拟器(安卓9版本)中脱壳
  10. 《谢谢你迟到》托马斯弗里德曼_epub+mobi+azw3