搭建SpringCloud-Eureka 注册中心以及服务提供与调用
纸上得来终觉浅,绝知此事要躬行啊~果然看着很easy,自己搞起来就是各种坑~各位看官,容我慢慢道来~
关于springcloud是什么我就不废话了~
Eureka
Eureka(原来以为是缩写,原来就是一个单词,翻译为:我发现了,我找到了!0.0)是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重要最核心的组件之一。
这个东西通俗的理解就像是一个淘宝,你是卖家也好,还是买家也好,你要交易,你得在我这先注册一个账号。
1,先新建一个maven工程
2,在pom文件中引入相关jar包
学习大佬的教程,结果用大佬的demo直接报错,启动程序一直提示:
Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.core.DefaultResourceConfig
郁闷,查看spring-cloud-starter-eureka-server jar包

发现其中引入的jersey的jar是1.19.1,然后自己研究,发现1.19可以使用,遂在pom文件中引入,按照我的理解1.19.1肯定比1.19版本高的,怎么反而不行了?
再启动,然后这个错误是消失了,结果后面又报错,又出来一个servo 包下的类找不到,mmp~又是版本问题,再引入 servo包,ok了~
最终形成如下的pom配置文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
</parent> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.19</version>
</dependency> <dependency>
<groupId>com.netflix.servo</groupId>
<artifactId>servo-core</artifactId>
<version>0.12.7</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
3,编写启动类代码
@SpringBootApplication
@EnableEurekaServer
public class App { public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
注意添加EnableEurekaServer注解
4,添加配置文件
对于这个配置文件的添加有2种格式,一种是application.properties 另外一种是 application.yaml。对于2种格式的区别,我们不做比较。但是对于这个文件的位置,我还是纳闷了一会,最后经过尝试,如图所示位置

并且需要注意文件名称一个字母都不能少0.0,我就是由于没注意少写个字母,也报错了。。。。
application.properties 格式,文件内容如下:
spring.application.name=spring-cloud-eureka
server.port=8000
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
注意第3 行默认是true也就是如果你不加上这个false,启动就会报错,因为他会想把自己注册到自己上面!!!第4行默认也是true,意思是他要不要获取注册到服务中心的信息
5,启动注册中心
在浏览器输入 localhost:8000,查看注册中心是否正常启动,出现如下截图,说明已经ok

有了注册中心,我们在接着搞一个服务提供者,和服务消费者。
服务提供者
1,新建maven工程
2,在pom文件中引入和注册中心服务一样的jar包。
3,编写application.properties
内容如下:
spring.application.name=spring-cloud-producer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
第一行是给自己的服务命名,第二行设置自己的访问端口,第三行设置自己要注册到那个注册中心,因为我们在上面设置了eureka注册中心是本地的8000端口,所以就写这个地址
4,编写启动类代码
@SpringBootApplication
@EnableDiscoveryClient
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
}
}
注意添加 EnableDiscoveryClient 注解
5,编写服务控制器类代码
@RestController
public class HelloController { @RequestMapping("/hello")
public String hello(@RequestParam String name) {
return "hello "+name+",nice to meet you!";
}
}
到这里 服务提供者完成,启动程序,无报错即可,刷新注册中心的页面,会看到Application中当前注册的服务。
服务调用者
1,新建maven工程
2,同样在pom文件中引入和之前一样的内容。
3,编写application.properties
spring.application.name=spring-cloud-consumer
server.port=9001
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
第一行也是给当前服务起名字,第二行设置端口,第三行设置注册中心url。
4,编写启动类代码
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
}
}
注意这个启动类,比服务提供者多了一个EnableFeignClients注解,这个注解的作用就是启用feign进行远程调用。
5,编写feign调用实现
@FeignClient(name= "spring-cloud-producer")
public interface HelloRemote {
@RequestMapping(value = "/hello")
public String hello(@RequestParam(value = "name") String name);
}
注意这是一个接口,上面的注解参数name,就是指定你当前要调用的服务提供者名称。另外还要注意方法中的参数name 和服务提供者中的参数保持一致
6,编写服务调用者控制器类
@RestController
public class ConsumerController { @Autowired
HelloRemote HelloRemote; @RequestMapping("/hello/{name}")
public String hello(@PathVariable("name") String name) {
return HelloRemote.hello(name);
} }
在当前类中引入HelloRemote 接口,通过调用本地hello方法,然后再调用HelloRemote 接口中的方法
启动程序,无报错即可。
刷新注册中心这个时候应该可以看到2个服务已经注册

测试验证
打开浏览器输入 : http://localhost:9001/hello/JJ

如上图正常返回结果,说明整个服务调用和提供者ok!!!
搭建SpringCloud-Eureka 注册中心以及服务提供与调用的更多相关文章
- 搭建SpringCloud-Eureka 注册中心以及服务提供与调用 快速了解 SpringCloud-Eureka
原文地址: 搭建SpringCloud-Eureka 注册中心以及服务提供与调用 纸上得来终觉浅,绝知此事要躬行啊~果然看着很easy,自己搞起来就是各种坑~各位看官,容我慢慢道来~ 关于spr ...
- spring cloud 专题一 (spring cloud 入门搭建 之 Eureka注册中心搭建)
一.前言 本文为spring cloud 微服务框架专题的第一篇,主要讲解如何快速搭建spring cloud微服务及Eureka 注册中心 以及常用开发方式等. 本文理论不多,主要是傻瓜式的环境搭建 ...
- SpringCloud Eureka(注册中心集群)
多个注册中心,其实用不同的配置对应 不同的端口号注册就行了. 注册中心自己也是个服务,看看之前的单个注册中心是怎么样的呢? server: port: 8888 # 服务端口eureka: insta ...
- springcloud eureka注册中心 高可复用。
1:新建两个注册中心项目(名称都为:spring-cloud-eureka,只是端口分别为8000.8001 ).两个注册中心相互注册对方. 2:两个注册中心都启动后,则对方服务列表都有对方的服务. ...
- springcloud eureka注册中心分布式配置
最近在学习springcloud,做下笔记以及记下遇到的坑. 1.建立maven工程,结构很简单,一个启动类和一个配置文件,结构如下图所示 2.启动类代码如下,需要添加注册中心注解:EnableEur ...
- springcloud eureka注册中心搭建
环境描述 ① jdk1.8 ② idea ③ springcloud版本 Finchley.SR2 ④ maven3.0+ 导入jar包 <properties> <project. ...
- Spring Cloud(Dalston.SR5)--Eureka 注册中心高可用-服务提供和消费
由于 Eureka 注册中心只是在内存中保存服务注册实例,并且没有将服务注册实例进行同步,因此我们需要对服务提供和消费进行调整,需要指定服务提供和消费的注册.服务发现的具体Eureka 注册中心配置, ...
- Spring Cloud(Dalston.SR5)--Eureka 注册中心搭建
基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能,服务治理可以说是微服务架构中最为核心和基础的模块,他主要用来实现各个微服务实例的自动化注册与发现 服务注册:在 ...
- Spring Cloud Eureka注册中心(快速搭建)
Spring Cloud 详解Eureka注册中心@(微服务)[java|spring-cloud|eureka] Eureka 注册中心是入门Spring Cloud微服务架构的必学组件,是学习所有 ...
随机推荐
- 使用Rapidxml读取xml文件
现有xml文件如上,写在一个string中.需要获取节点上元素的类别和属性信息,并存储到结构体表中. 结构体如下: 得到的结果如下:
- MVC-AOP思想-Filter 三种注册方式
在ASP.NET MVC框架中,为我们提供了四种类型的Filter类型包括:IAuthorizationFilter.IActionFilter.IResultFilter.IExceptionFil ...
- Redis实际开发中常见问题
首先redis作为缓存,一般作为缓存有2个用途,快速访问和减少IO频率,所谓减少IO频率就是等缓存积累到一定大小然后一次刷入磁盘进行持久化. 一般的设计就是客户端往数据库里更新或者读写数据,redis ...
- Windows下的OpenCVSharp配置
OPenCvSharp是OpenCV的Net Warpper,应用最新的OpenCV库开发,目前放在github.. 本人认为OpenCvSharp比EmguCV使用起来更为方便,因为函数更接近于原生 ...
- OpenCASCADE Texture Mapping
OpenCASCADE Texture Mapping eryar@163.com Abstract. 纹理贴图技术的出现和流行是图形显示技术的一个非常重要的里程碑,直接影响3D技术从工业进入娱乐领域 ...
- RabbitMQ windows安装(一 )
RabbitMQ 简单介绍: 是可以实现应用程序的解耦和异步,也可用作消息缓冲和消息分发的消息队列(MQ): 安装: 1.安装RabbitMQ前先安装Erlang语言开发包,下载地址:http://w ...
- 数据准备<3>:数据预处理
数据预处理是指因为算法或者分析需要,对经过数据质量检查后的数据进行转换.衍生.规约等操作的过程.整个数据预处理工作主要包括五个方面内容:简单函数变换.标准化.衍生虚拟变量.离散化.降维.本文将作展开介 ...
- python爬虫入门(六) Scrapy框架之原理介绍
Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...
- Spring使用 --- 基本概念(二):AOP,面向方面编程
Table of Contents 什么是面向方面编程 怎样使用 什么时候使用 好处 本文讲述sprint的第二个基本概念: AOP,即面向方面编程 什么是面向方面编程 软件项目中,日志系统等服务系统 ...
- 读《图解HTTP》有感-(了解web及网络基础)
写在前面 <图解HTTP>是由上野宣先生著,于均良先生译 闲暇之余!写写博文甚是高兴.如有不准确,望各位斧正.共同学习! 正文 HTTP协议是什么?能做什么? HTTP(超文本传输协议)实 ...