spring cloud eurekacloud我在服务提供者提供的是数据流,服务消费者怎么接受

spring cloud 微服务
spring cloud 微服务
编辑:www.fx114.net
本篇文章主要介绍了"spring cloud 微服务",主要涉及到spring cloud 微服务方面的内容,对于spring cloud 微服务感兴趣的同学可以参考一下。
项目服务化,最近非常流行;Spring Clound 和Dubbo
(Double读法) RpC 只是实现了服务治理(注册 发现等),而Spring Cloud下面有很多个子项目覆盖了微服务架构下的方方面面
---百度文库
1:开发相对简单&
2:技术栈灵活 (微服务:技术栈很灵活,不同的功能用不同的语言实现;)
3:服务独立解耦&
4:可以性高
缺点、挑战:
1:维护和部署复杂度的增加 2:服务间通信成本 3:数据一致性(分布式事物)4:系统集成测试
微服务注册逻辑:服务中心、服务提供者、服务消费者 & (服务消费去服务中心订阅服务,服务提供这去服务中心注册服务,服务中心负责管理消费这和提供者)
服务注册使用组件:Eureka &【ureka】尤锐卡
负载均衡实现1:服务端负责均衡,使用ngxin反向代理 &2:使用ribbon客户端实现负载均衡,会从多个客户端使用轮询、、、方法
feign &分客户端
zookeeper : &动物园管理者
我决定先从Spring Cloud Netflix看起,它提供了如下的功能特性:
服务发现:Eureka-server实例作为服务提供者,可以注册到服务注册中心,Eureka客户端可以通过Spring管理的bean发现实例;
服务发现:嵌套式的Eureka服务可以通过声明式的Java配置文件创建;
断路器:利用注解,可以创建一个简单的Hystrix客户端;
断路器:通过Java配置文件可以创建内嵌的Hystrix控制面板;
声明式REST客户端:使用Feign可以创建声明式、模板化的HTTP客户端;
客户端负载均衡器:Ribbon
路由器和过滤器:Zuul可以在微服务架构中提供路由功能、身份验证、服务迁移、金丝雀发布等功能。
本文计划利用Eureka实现一个简答的服务注册于发现的例子,需要创建三个角色:服务注册中心、服务提供者、服务消费者。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:利用Spring Cloud实现微服务(七)- 内部调用
利用Spring Cloud实现微服务(七)- 内部调用
在系列三业务领域驱动微服务设计的文章中,我们初步划分了三个领域:身份认证限界上下文、打车管理限界上下文、运营报表限界上下文。其中运营报表限界上下文是打车管理上下文的下游。这意味着在落地中,运营报表微服务要调用打车管理微服务提供的接口,来统计业务数据,生成运营报表,运营报表微服务是打车管理微服务的内部消费者。在微服务的开发中,我们还会碰到很多微服务之间内部相互调用的情况,特别是对数据服务的调用。在Spring Cloud中,有两种方式可以,一种是使用RestTemplate,另一种是使用Feign框架。RestTemplate调用另一个微服务的接口我们在系列五负载均衡的文章中已经讲过具体的实现,本章不再累述。Feign是声明式Web服务客户端,所谓声明式,指的是在代码中,将要调用的其它内部微服务提供的Restful API声明为自己的接口,该接口使用FeignClient注解。声明后,在本微服务中就可以通过接口注入的方式消费其它微服务的提供的Restful API了。Feign也内置有负载均衡Ribbon,会采用轮训式的负载均衡方式。本次代码实现模拟两个场景:通过Feign实现内部调用;通过Feign实现负载均衡的内部调用;在start.spring.io里新建一个名为“reports”的项目,在依赖项里额外增加对feign的依赖,下载并将该项目导入到NetBeans里。1) 在主程序除添加@EnableEurekaClient注解外,同时添加@EnableFeignClients注解。@EnableFeignClients注解用于开启Feign的功能2)
配置Feign Clients项目的属性,端口设为2266,微服务的名称为reporting-service,reporting-service和其它微服务一样注册在端口号为1111的Eureka Server上。具体配置如下所示:3) 在BOOKINGCAR-SERVICE微服务的OrderController包里,新建一个数据服务的接口getOrderName,该接口通过Order ID来获取订单名称4) 在REPORTING-SERVICE项目下新建一个package,名为&com.accenture.j2c.bookingcar.reports.clientinterface&,在该package下新建一个OrderClient接口,在该接口里会将BOOKINGCAR-SERVICE提供的getOrderName的restful API声明为REPORTING-SERVICE里的OrderClient接口里的一个方法。具体实现可以分为两步:第一步:通过FeignClient注解,首先到Eureka Server找到名字为“BOOKINGCAR-SERVICE&的微服务;第二步:使用RequestMapping注解声明BOOKINGCAR-SERVICE微服务提供的getOrderName的Restful API的入口, getOrderName的入口为”{BOOKINGCAR-SERVICE}/v1/order/name/{id}&。代码如下:5) 在REPORTING-SERVICE项目下新建一个Rest Controller的package,名字为“com.accenture.j2c.bookingcar.reports.controller”,在该包下新建一个OrderController类,注入REPORTING-SERVICE下的OrderClient接口,新建一个feign_getOrderName接口,在该接口里通过调用OrderClient接口中的getOrderName的方法实现对BOOKINGCAR-SERVICE微服务中getOrderName的Restful API接口的调用,代码如下:6) 验证启动Eureka Server, BOOKINGCAR-SERVICE, REPORTING-SERVICE,打开Eureka注册中心,显示如下:BOOKINGCAR-SERVICE和REPORTINGCAR-SERVICE这两个微服务都已经启动,其中BOOKINGCAR-SERVICE的接口为2227,REPORTING-SERVICE微服务的端口为2266。点击BOOKIGNCAR-SERVICE后提供的链接,输入请求参数“v1/order/name/1&,获得id为1的订单名称点击REPORTING-SERVICE后的提供的链接,输入请求参数“v1/order/1&,结果为:我们发现REPORTING-SERVICE里的结果同BOOKINGCAR-SERVICE里的结果保持一致,这说明了REPORTING-SERVICE已经能调用另一微服务BOOKINGCAR-SERVICE里开放的接口。1) 在REPORTING-SERVICE的&com.accenture.j2c.bookingcar.reports.clientinterface&包下,新建一个接口LBTestClient,在该接口里会将BOOKINGCAR-SERVICE提供的findServicePort的restful API声明为REPORTING-SERVICE里的LBTestClient接口里的一个方法。BOOKINGCAR-SERVICE里的findServiceReport接口在之前已经定义好,本次示例继续使用该接口:REPORTING-SERVICE里的LBTestClient接口声明如下:2) 在REPORTING-SERVICE里的“com.accenture.j2c.bookingcar.reports.controller“包下,新建一个类LBTestController,在该控制器类中注入LBTestClient接口,新建一个feign_getPort接口,在该接口里通过调用LBTestClient接口中的方法实现对BOOKINGCAR-SERVICE微服务中findServicePort的Restful API接口的调用,代码如下:3) 验证:重新启动一个端口号为2228的BOOKINGCAR-SERVICE微服务实例,启动后,在EUREKA注册中心可以看到BOOKINGCAR-SERVICE有两个实例在运行,端口号分别为,见下图:点击REPORTING-SERVICE后提供的链接,输入负载均衡验证的参数&v1/port&,运行后显示结果如下:再次运行,结果如下:
在Spring Cloud里 微服务之间的相互调用可以通过RestTemplate和Feign两种方式实现。Feign同时内置了Ribbon负载均衡,代码更加清晰,推荐使用Feign来实现微服务间的相互调用。代码:/shuxingliu/microservices利用Spring Cloud实现微服务(六)- 服务网关利用Spring Cloud实现微服务(五)- 负载均衡利用Spring Cloud实现微服务(四)- 微服务实现与注册利用Spring Cloud实现微服务(三)- 业务领域驱动微服务设计利用Spring Cloud实现微服务(二)--领域驱动设计利用Spring Cloud实现微服务(一):Eureka服务器
产品建议及投诉请联系:Spring Cloud Eureka 入门 (二)服务提供者详解 - aikudemn的博客 - CSDN博客
Spring Cloud Eureka 入门 (二)服务提供者详解
摘要:&摘要: 原创出处: 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!& “优秀不是过去是一种心态” &「Spring Cloud Eureka 入门系列」Spring Cloud Eureka 入门 (一)服务注册中心详解Spring Cloud Eur
“优秀不是过去是一种心态”
「Spring Cloud Eureka 入门系列」
Spring Cloud Eureka 入门 (三)服务消费者详解
1.&springcloud-eureka-sample 工程结构
2. 运行&springcloud-eureka-client-provider 服务提供者工程
3. 详解&springcloud-eureka-client-provider 服务提供者工程
一、springcloud-eureka-sample 工程结构
接着上一小节《》,我们成功运行了 Spring Cloud Eureka Server 工程作为服务注册中心工程。这小节,我们写一个作为客户端的服务提供者工程,服务提供者向服务中心注册或者下线服务实例。即图中的右侧
1 ,2 流程:
springcloud-eureka-sample 工程结构
├── springcloud-eureka-client-customer
├── springcloud-eureka-client-provider
└── springcloud-eureka-server
上面依次是&服务消费者工程、服务提供者工程和服务注册中心工程。
二、运行&springcloud-eureka-client-provider 服务提供者工程
运行环境:JDK 7 或 8,Maven 3.0+
技术栈:Spring Cloud&Dalston.SR1、&spring-cloud-netflix 1.3.1、Spring Boot 1.5.4
自然,我们先得去上一小节《》 ,把注册中心工程启动完毕。
1.&git clone 下载工程&springcloud-learning-example
项目地址见 GitHub -&:
2. Maven 编译安装这个工程:
cd springcloud-learning-example
mvn clean install
3. 运行 Eureka 工程 springcloud-eureka-client-provider
启动 springcloud-eureka-client-provider 工程启动类 ProviderApplication,启动服务注册中心工程。
EurekaServerApplication 类路径:/springcloud-learning-example/springcloud-eureka-sample/springcloud-eureka-client-provider/src/main/java/org/spring/springcloud/ProviderApplication.java
控制台 Console 看到这类信息,代表启动成功:
2017-07-10 16:03:15.075
INFO 11020 --- [
main] o.s.c.n.e.s.EurekaServiceRegistry
: Registering application provider-service with eureka with status UP
2017-07-10 16:03:15.075
INFO 11020 --- [
main] com.netflix.discovery.DiscoveryClient
: Saw local status change event StatusChangeEvent [timestamp=5, current=UP, previous=STARTING]
2017-07-10 16:03:15.079
INFO 11020 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient
: DiscoveryClient_PROVIDER-SERVICE/10.18.29.31:provider-service:8080: registering service...
2017-07-10 16:03:15.126
INFO 11020 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient
: DiscoveryClient_PROVIDER-SERVICE/10.18.29.31:provider-service:8080 - registration status: 204
2017-07-10 16:03:15.183
INFO 11020 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-07-10 16:03:15.185
INFO 11020 --- [
main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8080
2017-07-10 16:03:15.191
INFO 11020 --- [
main] o.s.springcloud.ProviderApplication
: Started ProviderApplication in 9.809 seconds (JVM running for 10.981)
可以看出,注册了应用名为 provider-service 的应用,该服务提供者的工程端口为 8080
4. 访问&Eureka 注册中心可视化界面
打开浏览器,访问&&,如图所示:
可以看到,服务提供者向服务注册中心注册自己的实例,展示了应用名和端口信息等。
三、详解&springcloud-eureka-client-provider 服务提供者工程
1.springcloud-eureka-server &工程目录结构
├── .xml
└── .yml
ProviderApplication.java&Eureka Client 启动类,启动服务提供者工程
ProviderApplication.java Provider HelloWorld 案例
application.yml 配置文件
2. pom.xml 配置
&?xml version=&1.0& encoding=&UTF-8&?&
&project xmlns=& xmlns:xsi=&
xsi:schemaLocation=&
&modelVersion&4.0.0&/modelVersion&
&groupId&springcloud&/groupId&
&artifactId&springcloud-eureka-client-provider&/artifactId&
&version&0.0.1-SNAPSHOT&/version&
&name&springcloud-eureka-client-provider :: 服务提供者&/name&
&!-- Spring Boot 启动父依赖 --&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-parent&/artifactId&
&version&1.5.4.RELEASE&/version&
&dependencies&
&!-- Spring Cloud Netflix Eureka Client 依赖 --&
&dependency&
&groupId&org.springframework.cloud&/groupId&
&artifactId&spring-cloud-starter-eureka&/artifactId&
&/dependency&
&!-- Spring Boot Test 依赖 --&
&dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-test&/artifactId&
&scope&test&/scope&
&/dependency&
&/dependencies&
&dependencyManagement&
&dependencies&
&!-- Spring Cloud Netflix 依赖 --&
&dependency&
&groupId&org.springframework.cloud&/groupId&
&artifactId&spring-cloud-netflix&/artifactId&
&version&1.3.1.RELEASE&/version&
&type&pom&/type&
&scope&import&/scope&
&/dependency&
&/dependencies&
&/dependencyManagement&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-compiler-plugin&/artifactId&
&configuration&
&source&1.8&/source&
&target&1.8&/target&
&/configuration&
&/plugins&
&/project&
使用的依赖是
- spring-cloud-netflix 1.3.1 是 Spring Cloud&Dalston.SR1 版本。
-&spring-cloud-starter-eureka Eureka Client 模块依赖,包含了客户端 client 的依赖,还有 Ribbon 的依赖,如:org.springframework.cloud:spring-cloud-netflix-eureka-client:1.3.1.RELEASE
org.springframework.cloud:spring-cloud-starter-ribbon:1.3.1.RELEASE
3. application.yml 配置
port: 8080
service-url:
defaultZone:
application:
name: provider-service
- server.port 设置工程服务端口
-&eureka.client.service-url.defaultZone 设置服务注册中心地址
4.注册中心应用启动类
@EnableEurekaClient
@SpringBootApplication
public class ProviderApplication {
public static void main(String args) {
SpringApplication.run(ProviderApplication.class,args);
@EnableEurekaClient 标志该应用作为&Eureka Client ,并会自动化读取 Eureka 相关配置。
6.服务提供者 Hello World 案例
@RestController
public class ProviderController {
private static final Logger LOGGER = LoggerFactory.getLogger(ProviderController.class);
@Autowired
private Regis
@Autowired
private DiscoveryClient discoveryC
@RequestMapping(&/provider&)
public String provider() {
ServiceInstance instance = serviceInstance();
(&provider service, host = & + instance.getHost()
+ &, service_id = & + instance.getServiceId());
return &Hello,Provider!&;
ServiceInstance
public ServiceInstance serviceInstance() {
List&ServiceInstance& list = discoveryClient.getInstances(registration.getServiceId());
if (list != null && list.size() & 0) {
return list.get(0);
return null;
可以看到注入了&Registration 和&DiscoveryClient 两个对象:
-&Registration 服务注册接口,包含了获取服务 ID 的方法。
-&DiscoveryClient 服务发现客户端,具有以下方法:
& & &- String description(); 获取描述
& & &- ServiceInstance getLocalServiceInstance(); @Deprecated 方法被删除,推荐不要使用。获取本地服务实例
& & &- List&ServiceInstance& getInstances(String serviceId); &通过服务 ID,获取当前服务的服务实例
& & &- List&String& getServices(); 获取所有服务 ID 列表
此小章节介绍了如何 Eureka 作为服务提供者,并向服务注册中心注册自己实例。 下一小结讲下&服务消费者详解 具体是如何向服务注册中心注册自己,发现其他服务,并调用其他服务的。系列目录如下:
Spring Cloud Eureka 入门 (三)服务消费者详解
1.《Spring Cloud微服务实战》
我的热门文章
即使是一小步也想与你分享5785 人学习
第一章 微服务架构概述
第二章 开始使用Spring Cloud实战微服务
第三章 服务提供者与服务消费者
第四章 服务发现与服务注册
第五章 使用Hystrix保护应用
第六章 使用Zuul构建API Gateway
第七章 Spring Cloud Config
点击获取更多
没有更多了
加入学习后,就可以记笔记了
同学的问题
点击获取更多
没有更多了
加入学习后,就可以提问题了
Loading...只需一步,快速开始
Spring Cloud微服务实战教程
==================课程目录=====================
1.jpg (7.48 KB, 下载次数: 0)
22:28 上传
2 1.1 微服务架构概述
3.开始使用Spring Cloud实战微服务
4 服务提供者与服务消费者
5 4.1服务发现与服务注册
6 4.2Eureka简介与Eureka Server上
7 4.3将微服务注册到Eureka Server上
8 4.4 Ribbon-1 Ribbon的基本使用
9 4.5 Ribbon-2通过代码自定义配置ribbon
10 4.6 Ribbon-3使用配置文件自定义Ribbon Client
11 4.7 Ribbon-4 Ribbon脱离Eureka使用
12 4.8 Feign-1 Feign的简介及基础使用
13 4.9 Feign-2覆写Feign的默认配置
14 4.10 Fegion-3覆写Fegion的默认配置及Fegion的日志
15 4.11 Fegion-4解决Fegion第一次请求timeout的问题
16 4.12 Eureka深入理解
17 4.13 Eureka常用配置详解
18 4.14 Eurek Ribbon Feign常见问题及解决
19 5.1超时机制,断路器模式简介
20 5.2 Hystrix简介及简单代码示例
20 5.2Hystrix简介及简单代码事例
21 Hystrix Health Indicator及Metrics Stream
22 5.4 Hystrix Health Indicator及Metrics Stream支持
23 5.5 Fegion的Hystrix支持
24 5.6如何禁用单个FegionClient的Hystrix的支持
25 5.7 Feign使用fallbackFactory属性打印fallback异常
26 5.8 Hystrix Dashboard的使用与常见问题总结
27 5.9 Turbine-上
28 5.9 Turbine-下
29 6.1 API Gateway简介
30 6.2 Zuul简介及代码示例
31 6.3 Zuul指定path+serviceid
32 6.4 Zuul指定Path+url以及指定可用的服务节点时如何负载均衡
33 6.5 Zuul使用正则表达式指定路由规则
34 6.6 Zuul路由的strip-prefix与order
35 6.7 Zuul的各种姿势
36 6.8通过Zuul上传文件,禁用Zuul的Filters
37 6.9 Zuul的回退
38 6.10 使用Sidecar支持异构平台的微服务
39 6.10 Sidecar补充
40 6.11-1 Zuul过滤器
41 6.11-2禁用Zuul的过滤器
42 7.1 Spring Cloud Config简介
43 7.2 编写Config Server
44 7.3 编写Config Client
45 7.4 Git仓库配置详解
46 7.5配置属性加解密之对称加密
47 7.6配置属性加解密之非对称加密
48 7.7 Spring Cloud Config与Eureka
49 7.8 Spring Cloud Config 与Eureka配合使用
50 7.9 Spring Cloud Config配置属性刷新之手动刷新
51 7.10 Spring Cloud Config配置属性刷新之自动刷新
52 7.11 Spring Cloud Config配置属性刷新之自动刷新补充
53 7.12 Config Server的高可用
已有 38 人下载过&
需支付 5 金币
width:100%">
谢谢你的分享
width:100%">
这个真的不错,谢谢分享
width:100%">
感谢分享,好好学习
width:100%">
感谢分享,好好学习
谢谢分享,百度网盘不给力
width:100%">
谢谢分享,百度网盘不给力
下载太慢了
width:100%">
好像很不错的资源额
width:100%">
s什么时候能存够下载的金币呀
width:100%">
正好开始学Springboot
width:100%">
正好开始学Springboot
width:100%">
Powered by Discuz, All rights reserved. 版权所有免责声明:站内所有资源均来自于互联网,如果有伤害到您的利益,请联系我们,我们立即删除!}

我要回帖

更多关于 spring cloud中文文档 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信