SpringCloud实战之初级入门(二)— 服务注册与服务调用
1.环境介绍
接上一篇(SpringCloud实战之初级入门(一)— eureka注册中心),我们讲到了注册中心的高可用,集群,这篇我们讲如何服务如何注册在eureka上,如何使用Feign调用服务。
- 继续使用上一篇的文章中的mirco-service-eureka工程,为了节约演示环境,我们去掉集群部署,只启动一台eureka实例。
- 修改eureka-server-node-1-test.yml中的defaultZone为http://localhost:9001/eureka/。
- 通过修改的“eureka-server-node-1”名称,debug启动本实例。
2.服务提供
2.1 创建工程
为了照顾不同段位朋友的感受,像这种简单的创建工程过程就不再贴图了,如有不清楚的地方,请看上篇文章。创建一个名为"mirco-service-provider"的工程,可以勾选“eureka discovery”,或者在项目的pom.xml文件中加入如下代码
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.2 修改配置文件
- 老规矩,将applicaiton.properties修改为application.yml。
- 加入如下代码
server:
port: 8001
spring:
application:
name: service-provider
eureka:
client:
serviceUrl:
defaultZone: http://localhost:9001/eureka/
2.3 修改启动文件
- 在启动文件中加上"@EnableDiscoveryClient"注解,然后启动工程。
- 打开浏览器访问http://localhost:9001/,可以看到如下图所示,说明服务已经注册成功。

2.4 创建第一个微服务
怎么建一个类就不说了,直接上代码:
@RestController
public class MyFristServiceController {
/**
* 我的第一个微服务程序
* @param name
* @return
*/
@RequestMapping(value="/helloWorld" , method= RequestMethod.GET)
public String helloWorld(String name) {
return "Hello," + name + ", this is your world!" ;
}
}
重启服务,访问http://localhost:8001/helloWorld?name=jack,出现如下图,说明我们第一个微服务创建成功:

2.5 亲测注意事项
- 加入spring-cloud-starter-netflix-eureka-client依赖后启动工程,会在控制台中显示在注册中,然后服务器就停止了,这是因为没有加入web方面的依赖,导致工程以为你这就是一个普通的验证过程,这里并没有去监听端口,依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.服务调用
3.1 创建工程
我们用同样的方式来创建一个名为"mirco-service-consumer"的工程
3.2 修改配置文件
- 老规矩,将applicaiton.properties修改为application.yml。
- 加入如下代码
server:
port: 8002
spring:
application:
name: service-consumer
eureka:
client:
serviceUrl:
defaultZone: http://localhost:9001/eureka/
3.3 修改启动文件
在启动文件中加上"@EnableDiscoveryClient"和"@EnableFeignClients"注解
3.4 创建第一个微服务调用
- 创建一个名为“MyFristConsumer”的Feign远程调用接口:
@FeignClient(name = "service-provider")
public interface MyFristConsumer {
/**
* 远程调用helloWorld的接口
* @param name
* @return
*/
@RequestMapping(value="/helloWorld" , method= RequestMethod.GET)
public String helloWorld(@RequestParam("name") String name) ;
}
这里面@FeignClient(name = "xxx"),xxx表示要调用的应用服务名称一定不能弄错了,然后是下面helloWorld方法,这里面要注意的问题是如果我们的被调用服务是用@PathVariable的方法获取参数,这里参数获取方法务必与被调用服务对应,如果不对应是访问不到服务的。
- 创建一个controller类来测试我们的调用是否成功
@RestController
public class MyFristConsumerController {
@Autowired
private MyFristConsumer myFristConsumer ;
/**
* 我的第一个微服务调用程序
* @param name
* @return
*/
@RequestMapping(value="/consumerHelloWorld" , method= RequestMethod.GET)
public String helloWorld(String name) {
return myFristConsumer.helloWorld(name) ;
}
}
启动服务,访问http://localhost:8002/consumerHelloWorld?name=rose,出现如下图,说明我们第一个微服务调用成功:

4.结语
- 涉及了三个工程,分别是:mirco-service-eureka、mirco-service-provider以及mirco-service-consumer。
- 虽然我们这里看到了一个简单的服务调用,并模拟了一个类RPC似的调用,但是大家要知道实际在使用的过程中肯定不是一个提供服务,一个来进行调用这么简单,服务与服务之间都是穿插调用的。以后我会提供公司级的项目结构,并辅以实际例子来为大家讲解。
- mirco-service-consumer工程中,我们没有看写入被调用的服务地址,而是连上了eureka注册中心,并实现调用,这样就可以让我们方便在服务集群的情况下做动态上、下线。
- 限于篇幅,有兴趣的朋友们可以参照我第一篇,一个工程配置多个服务节点的方法试一下,看能不能启动多个服务提供调用。
5.一点点重要的事情
- 文章对应的源代码地址:github- SpringCloud实战之初级入门(二)— 服务注册与服务调用
- 文章对应的视频地址:爱奇艺- SpringCloud实战之初级入门(二)— 服务注册与服务调用
SpringCloud实战之初级入门(二)— 服务注册与服务调用的更多相关文章
- SpringCloud实战之初级入门(三)— spring cloud config搭建git配置中心
目录 1.环境介绍 2.配置中心 2.1 创建工程 2.2 修改配置文件 2.3 在github中加入配置文件 2.3 修改启动文件 3. 访问配置中心 1.环境介绍 上一篇文章中,我们介绍了如何利用 ...
- SpringCloud实战之初级入门(一)— eureka注册中心
目录 写在前面 1.资料目录 2.环境介绍 3.eureka注册中心 3.1 创建工程 3.2 启动工程 5.eureka注册中心集群高可用 6.结语 7.一点点重要的事情 写在前面 我在软件行业浸泡 ...
- Spring Cloud实战之初级入门(四)— 利用Hystrix实现服务熔断与服务监控
目录 1.环境介绍 2.服务监控 2.1 加入依赖 2.2 修改配置文件 2.3 修改启动文件 2.4 监控服务 2.5 小结 3. 利用hystrix实现消费服务熔断 3.1 加入服务熔断 3.2 ...
- Spring Cloud实战之初级入门(六)— 服务网关zuul
目录 1.环境介绍 2.api网关服务 2.1 创建工程 2.3 api网关中使用token机制 2.4 测试 2.5 小结 3.一点点重要的事情 1.环境介绍 好了,不知不觉中我们已经来到了最后一篇 ...
- Spring Cloud实战之初级入门(五)— 配置中心服务化与配置实时刷新
目录 1.环境介绍 2.配置中心服务化 2.1 改造mirco-service-spring-config 2.2 改造mirco-service-provider.mirco-service-con ...
- SpringCloud+Consul 服务注册与服务发现
SpringCloud+Consul 服务注册与服务发现 1. 服务注册: 在Spring.factories有一段: # Discovery Client Configuration org.spr ...
- SpringCloud之eureka服务注册和服务发现
服务注册中心 :eureka-server 作用:服务注册中心提供服务注册功能 服务提供方:eureka-client 作用:注册服务到服务注册中心 服务注册中心 :eureka-server 创建 ...
- SpringCloud系列(一):Eureka 服务注册与服务发现
上一篇,我们介绍了服务注册中心,光有服务注册中心没有用,我们得发服务注册上去,得从它那边获取服务.下面我们注册一个服务到服务注册中心上去. 我们创建一个 hello-service 的 spring ...
- Go微服务框架go-kratos实战04:kratos中服务注册和服务发现的使用
一.简介 关于服务注册和服务发现介绍,我前面的文章有介绍过 - 服务注册和发现的文章. 作为服务中心的软件有很多,比如 etcd,consul,nacos,zookeeper 等都可以作为服务中心. ...
随机推荐
- [CTSC2010]星际旅行
https://www.luogu.org/problemnew/show/P4189 题解 模拟费用流. 首先有一个非常好的条件,每个点的限制次数都大于等于这个点的度数. 然后我们可以从\(0\)开 ...
- acedSSGet使用自定义提示字符:$模式
ads_name ss; struct resbuf *pRbList=NULL; pRbList=acutBuildList(RTDXF0,_T("lwpolyline,ins ...
- [转] 以普通用户启动的Vim如何保存需要root权限的文件
[转] 以普通用户启动的Vim如何保存需要root权限的文件 在Linux上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误: E45: 'rea ...
- 小记一次shellscript的麻烦
小记一次shellscript的麻烦 一.起因: 之前写过篇文章 文本分析实例 ,大致的内容就是对 "nginx的web服务器进行日志分析,删除不被访问的截图". 点我打开哔哩哔哩 ...
- 提高 iOS App 通知功能启用率的三个策略
我们都知道推送通知在 App 运营中的作用巨大.但是,很多用户却并不买帐,App 第一次启动提示是否「启用推送通知」时,他们直接选择了「否」. 是的,最近我本人就转变成了这样的人 - 认真地评估每个应 ...
- NVIDIA TX1/TX2 对比
处理器方面,TX2由TX1的Tegra X1升至Tegra Parker处理器,该处理器由16nm工艺制造,6核心设计,CPU部分由2个丹佛+4个A57核心共同组成. GPU则采用Pascal架构,拥 ...
- The model backing the 'XXX' context has changed 错误
https://blog.csdn.net/hit_why/article/details/72778785 https://blog.csdn.net/hit_why/article/details ...
- 接口自动化 之 unittest+ddt+openpyxl 综合
前面写过python 之 unittest初探 和 python 之 unittest+ddt 两篇文章.在之前的文章中,写过可以再次优化.今天写第三篇的目的,就是在原有基础上,基于 openpyxl ...
- python之类与对象(1)
面向对象编程是最有效的软件编写方法之一.编写类时,定义一群对象都有的通用行为.基于类创建对象时,每个对象都自动具备这种通用行为,然后可以根据需要赋予每个对象的独特的个性. 1. 类与对象的语法规范 关 ...
- CF1063F. String Journey(后缀数组+线段树)
题目链接 https://codeforces.com/contest/1063/problem/F 题解 虽然本题有时间复杂度较高但非常好写的做法...... 首先,若答案为 \(k\),则一定存在 ...