SpringCloud,Eureka,服务注册,微服务之间的项目调用
文章目录
- 前言
- 一、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,服务注册,微服务之间的项目调用相关推荐
- springboot2 springcloud Greenwich.SR3 构建微服务--1.eureka注册中心搭建
本一系列springcloud的文章主主要讲应用, 也会涉及到一些原理的讲解. 写了几句自己这段时间看书,总结的微服务的东西送给你们 : 道为源,源分多支为术,如龙生九子,九子各不同,然皆为龙也. 凡 ...
- 【SpringCloud复习巩固】微服务+Eureka+Ribbon
文章中需要用到的代码和sql 链接:https://pan.baidu.com/s/1_1Qqro7wR5zi7Ds8Bgmf-g 提取码:vxzg 目录 一.微服务 1.1单体架构 1.2分布式架构 ...
- springcloud全局过滤_微服务技术SpringCloud 互联网网站架构演变过程
网站架构演变过程 传统架构 传统的SSH架构,分为三层架构 web控制层.业务逻辑层.数据库访问层. 传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务没 ...
- docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...
编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...
- SpringCLoud实战微服务之——微服务简介以及入门使用
微服务概述 微服务是什么?微服务解决了什么问题?微服务有什么特点? 单体架构是什么? 一个归档包包含了应用所有功能的应用程序,我们通常称之为单体应用.架构单体应用的架构风格,我们称之为单体架构,这是一 ...
- SpringCloud一、前提概述、相关微服务和微服务架构理论知识、微服务技术栈有哪些、
①前提概述.微服务架构springcloud的相关学习. 前提知识+相关说明 1.目前,我们学习到最后的微服务架构SpringCloud,基本上需要熟悉以前的学习内容和知识:springmvc.spr ...
- 01 微服务和微服务框架 —— SpringCloud
一.微服务介绍 1. 什么是微服务 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微".什么是"服务", 微 狭义来讲就 ...
- 使用feign调用注解在eureka上的微服务,简单学会微服务
使用feign调用注解在eureka上的微服务. 首先,确保所有服务(调用方与被调用方)都被注册在同一个eureka服务上. 1. 在调用方添加依赖(万事第一步,加依赖) <dependency ...
- SpringCloud(5)— 微服务部署(Docker)
SpringCloud(5)- 微服务部署(Docker) 一 初识Docker 1.项目部署问题 大型项目组件较多,运行环境较为复杂,部署和维护困难 依赖关系复杂,容易出现兼容性问题 开发,测试,生 ...
- PDF分享-SpringCloud+高并发+中间件+微服务架构从零开始学微服务架构
什么是微服务? 如何快速上手SpringCloud微服务系统架构+常用中间件服务 1.SOA.Webservice.Dubbo.SpringCloud究竟什么是微服务? 2.单体应用向微服务异构平台架 ...
最新文章
- 人脸识别未来发展如何更有“面子”?
- SCons — 程序构建工具
- c++ 编译添加dll_linux下编写C/C++代码须知———串讲
- 对称振子天线matlab程序,对称振子天线详解.ppt
- 写给准备找工作的同志们!!!!(转载)
- nodejs + ts 配置
- Taro+react开发(82):设置默认属性
- 常用并发工具类(并发集合类)
- numpy+pandas+matplotlib画箱形图
- java md5 utf-8_Jquery与java MD5加密不同
- python3 global_Python3基础 global 在函数内部对全局变量进行修改
- 楼对面的男士夏天就光膀子,请问大家,男士真的都爱光膀子吗?
- 在着手开发一款移动应用之前,我们需要考虑哪些因素?
- 2021.9.11周六PAT甲级考试复盘与总结
- B00003 C++标准库 std::bitset
- 计算机网络重点知识总结 谢希仁版,计算机网络谢希仁版网络层知识点总结
- 利用K8S技术栈打造个人私有云(连载之:K8S环境理解和练手)
- 微信小程序实现用户登录(详)
- java pem 读取_PEM_密钥对生成与读取方法
- 抖音的服务器到底啥配置?