搭建SpringCloud-Eureka 注册中心以及服务提供与调用 快速了解 SpringCloud-Eureka
原文地址: 搭建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配置文件

1 <parent>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-parent</artifactId>
4 <version>1.5.8.RELEASE</version>
5 </parent>
6
7 <dependencies>
8 <dependency>
9 <groupId>org.springframework.cloud</groupId>
10 <artifactId>spring-cloud-starter</artifactId>
11 </dependency>
12 <dependency>
13 <groupId>com.sun.jersey</groupId>
14 <artifactId>jersey-bundle</artifactId>
15 <version>1.19</version>
16 </dependency>
17
18 <dependency>
19 <groupId>com.netflix.servo</groupId>
20 <artifactId>servo-core</artifactId>
21 <version>0.12.7</version>
22 </dependency>
23 <dependency>
24 <groupId>org.springframework.cloud</groupId>
25 <artifactId>spring-cloud-starter-eureka-server</artifactId>
26 </dependency>
27 </dependencies>
28 <dependencyManagement>
29 <dependencies>
30 <dependency>
31 <groupId>org.springframework.cloud</groupId>
32 <artifactId>spring-cloud-dependencies</artifactId>
33 <version>Dalston.RC1</version>
34 <type>pom</type>
35 <scope>import</scope>
36 </dependency>
37 </dependencies>
38 </dependencyManagement>
39 <repositories>
40 <repository>
41 <id>spring-milestones</id>
42 <name>Spring Milestones</name>
43 <url>https://repo.spring.io/milestone</url>
44 <snapshots>
45 <enabled>false</enabled>
46 </snapshots>
47 </repository>
48 </repositories>

3,编写启动类代码

1 @SpringBootApplication
2 @EnableEurekaServer
3 public class App {
4
5 public static void main(String[] args) {
6 SpringApplication.run(App.class, args);
7 }
8 }

注意添加EnableEurekaServer注解
4,添加配置文件
对于这个配置文件的添加有2种格式,一种是application.properties 另外一种是 application.yaml。对于2种格式的区别,我们不做比较。但是对于这个文件的位置,我还是纳闷了一会,最后经过尝试,如图所示位置

并且需要注意文件名称一个字母都不能少0.0,我就是由于没注意少写个字母,也报错了。。。。
application.properties 格式,文件内容如下:
1 spring.application.name=spring-cloud-eureka
2 server.port=8000
3 eureka.client.register-with-eureka=false
4 eureka.client.fetch-registry=false
5 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
内容如下:
1 spring.application.name=spring-cloud-producer
2 server.port=9000
3 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
第一行是给自己的服务命名,第二行设置自己的访问端口,第三行设置自己要注册到那个注册中心,因为我们在上面设置了eureka注册中心是本地的8000端口,所以就写这个地址
4,编写启动类代码

1 @SpringBootApplication
2 @EnableDiscoveryClient
3 public class App
4 {
5 public static void main( String[] args )
6 {
7 SpringApplication.run(App.class, args);
8 }
9 }

注意添加 EnableDiscoveryClient 注解
5,编写服务控制器类代码

1 @RestController
2 public class HelloController {
3
4 @RequestMapping("/hello")
5 public String hello(@RequestParam String name) {
6 return "hello "+name+",nice to meet you!";
7 }
8 }

到这里 服务提供者完成,启动程序,无报错即可,刷新注册中心的页面,会看到Application中当前注册的服务。
服务调用者
1,新建maven工程
2,同样在pom文件中引入和之前一样的内容。
3,编写application.properties
1 spring.application.name=spring-cloud-consumer
2 server.port=9001
3 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
第一行也是给当前服务起名字,第二行设置端口,第三行设置注册中心url。
4,编写启动类代码

1 @SpringBootApplication
2 @EnableDiscoveryClient
3 @EnableFeignClients
4 public class App
5 {
6 public static void main( String[] args )
7 {
8 SpringApplication.run(App.class, args);
9 }
10 }

注意这个启动类,比服务提供者多了一个EnableFeignClients注解,这个注解的作用就是启用feign进行远程调用。
5,编写feign调用实现
1 @FeignClient(name= "spring-cloud-producer")
2 public interface HelloRemote {
3 @RequestMapping(value = "/hello")
4 public String hello(@RequestParam(value = "name") String name);
5 }
注意这是一个接口,上面的注解参数name,就是指定你当前要调用的服务提供者名称。另外还要注意方法中的参数name 和服务提供者中的参数保持一致
6,编写服务调用者控制器类

1 @RestController
2 public class ConsumerController {
3
4 @Autowired
5 HelloRemote HelloRemote;
6
7 @RequestMapping("/hello/{name}")
8 public String hello(@PathVariable("name") String name) {
9 return HelloRemote.hello(name);
10 }
11
12 }

在当前类中引入HelloRemote 接口,通过调用本地hello方法,然后再调用HelloRemote 接口中的方法
启动程序,无报错即可。
刷新注册中心这个时候应该可以看到2个服务已经注册

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

如上图正常返回结果,说明整个服务调用和提供者ok!!!
搭建SpringCloud-Eureka 注册中心以及服务提供与调用 快速了解 SpringCloud-Eureka的更多相关文章
- 搭建SpringCloud-Eureka 注册中心以及服务提供与调用
纸上得来终觉浅,绝知此事要躬行啊~果然看着很easy,自己搞起来就是各种坑~各位看官,容我慢慢道来~ 关于springcloud是什么我就不废话了~ Eureka Eureka(原来以为是缩写,原来 ...
- Spring Cloud(Dalston.SR5)--Eureka 注册中心高可用-服务提供和消费
由于 Eureka 注册中心只是在内存中保存服务注册实例,并且没有将服务注册实例进行同步,因此我们需要对服务提供和消费进行调整,需要指定服务提供和消费的注册.服务发现的具体Eureka 注册中心配置, ...
- Spring Cloud(Dalston.SR5)--Eureka 注册中心搭建
基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能,服务治理可以说是微服务架构中最为核心和基础的模块,他主要用来实现各个微服务实例的自动化注册与发现 服务注册:在 ...
- SpringCloud的入门学习之深入理解Eureka注册中心
1.Eureka 注册中心三种角色. 答:a.Eureka Server,注册中心,通过 Register.Get.Renew 等接口提供服务的注册和发现. b.Application Service ...
- Spring Cloud Eureka注册中心(快速搭建)
Spring Cloud 详解Eureka注册中心@(微服务)[java|spring-cloud|eureka] Eureka 注册中心是入门Spring Cloud微服务架构的必学组件,是学习所有 ...
- (转)微服务_创建一个简单的Eureka注册中心
原文地址:https://www.cnblogs.com/lplshermie/p/9105329.html 微服务和分布式已经成了一种极其普遍的技术,为了跟上时代的步伐,最近开始着手学习Spring ...
- Spring-cloud微服务实战【二】:eureka注册中心(上)
## 前言 本系列教程旨在为大家演示如何一步一步构建一整套微服务系统,至于其中的数据库用什么,订单ID如何保持唯一,分布式相关问题等等不在我们讨论范围内,本教程为了方便大家后续下载代码运行测试,不 ...
- 这个注册的 IP 网络都不通了,Eureka 注册中心竟然无法踢掉它!
本文导读: 微服务技术架构选型介绍 k8s 容器化部署架构方案 Eureka 注册中心问题场景 问题解决手段及原理剖析 阅读本文建议先了解: 注册中心基本原理 K8s(Kuberneters)基本概念 ...
- 创建一个简单的Eureka注册中心
微服务和分布式已经成了一种极其普遍的技术,为了跟上时代的步伐,最近开始着手学习SpringCloud,就从Eureka开始.他们俩就不做介绍了,网上的说明一堆,随便打开一个搜索引擎输入关键字都足够了解 ...
随机推荐
- Codeforces 911F Tree Destruction
Tree Destruction 先把直径扣出来, 然后每个点都和直径的其中一端组合, 这样可以保证是最优的. #include<bits/stdc++.h> #define LL lon ...
- bitset里面一些函数的用法
- P1233 木棍加工 dp LIS
题目描述 一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的.棍子可以被一台机器一个接一个地加工.机器处理一根棍子之前需要准备时间.准备时间是这样定义的: 第一根棍子的准备时间为1分钟: 如果刚处理 ...
- 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票. 示例 ...
- 041 SparkSql的回顾与复习
在前面学完了SparkCore后,又学了SparkSQL,在继续加深学习之前,一定的复习还是很重要的.这里大体写一下,加深自己对SparlSQL的理解. 1.SparkSQL 首先是SaprkSQL与 ...
- utf-8和utf8的区别
utf-8 和 utf8 的区别与使用: "UTF-8" 是标准写法,php 在 Windows 系统里的英文不区分大小写,所以也可以写成 "utf-8".&q ...
- java定时任务以及Spring使用Quartz调度器执行定时任务
java下的java.util.Timer中类可以实现定时执行任务的执行: 如:让任务立即执行,每隔1s循环执行一次 public class TimerClass { public static v ...
- php防攻击
客户端脚本植入 XSS跨站脚本攻击(跨站脚本攻击,输入(传入)自动执行恶意的HTML代码,如盗取用户Cookie.破坏页面结构.重定向到其它网站):过滤<,>&,"等特殊 ...
- Java实现简单计算器、抽票程序
计算器: import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt. ...
- Lua + win 10 + vs2017的运行环境和创建cocos2dx 3.17的lua项目(亲测)
转:https://blog.csdn.net/maoye198602102339/article/details/82047920 不管用什么引擎写游戏,脚本语言是少不了要接触的! 首先,我说的 ...