Spring Cloud Eureka 入门 (二)服务提供者详解

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!
 


“优秀不是过去是一种心态”


 
「Spring Cloud Eureka 入门系列」
Spring Cloud Eureka 入门 (一)服务注册中心详解
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 入门 (一)服务注册中心详解》,我们成功运行了 Spring Cloud Eureka Server 工程作为服务注册中心工程。这小节,我们写一个作为客户端的服务提供者工程,服务提供者向服务中心注册或者下线服务实例。即图中的右侧 1 ,2 流程:
 

Eureka集群.jpeg



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

自然,我们先得去上一小节《Spring Cloud Eureka 入门 (一)服务注册中心详解》 ,把注册中心工程启动完毕。

1. git clone 下载工程 springcloud-learning-example
项目地址见 GitHub - https://github.com/JeffLi1993/ ... ample:

git clone https://github.com/JeffLi1993/ ... e.git


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=1499673795075, 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 注册中心可视化界面
打开浏览器,访问 http://localhost:8888/ ,如图所示:
 

WechatIMG442.jpeg


可以看到,服务提供者向服务注册中心注册自己的实例,展示了应用名和端口信息等。

三、详解 springcloud-eureka-client-provider 服务提供者工程
1.springcloud-eureka-server  工程目录结构

├── pom.xml
└── src└── main├── java│   └── org│       └── spring│           ├── springcloud│           │    └──  ProviderApplication.java│           └── web│                └──  ProviderController.java└── resources└── application.yml


ProviderApplication.java Eureka Client 启动类,启动服务提供者工程
ProviderApplication.java Provider HelloWorld 案例
application.yml 配置文件

2. pom.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma ... gt%3B<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 启动父依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.4.RELEASE</version></parent><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><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>
</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 配置

server:port: 8080 # 服务端口
eureka:client:service-url:defaultZone: http://localhost:8888/eureka/ # 服务注册中心地址
spring:application:name: provider-service # 服务名称

- server.port 设置工程服务端口
- eureka.client.service-url.defaultZone 设置服务注册中心地址
 
4.注册中心应用启动类

/*** Spring Boot Eureka Server 应用启动类** Created by bysocket on 21/06/17.*/
@EnableEurekaClient     // Eureka Client 标识
@SpringBootApplication  // Spring Boot 应用标识
public class ProviderApplication {public static void main(String args) {// 程序启动入口// 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件SpringApplication.run(ProviderApplication.class,args);}
}

@EnableEurekaClient 标志该应用作为 Eureka Client ,并会自动化读取 Eureka 相关配置。

6.服务提供者 Hello World 案例

/*** Provider HelloWorld 案例* <p>* Created by bysocket on 06/22/17.*/
@RestController
public class ProviderController {private static final Logger LOGGER = LoggerFactory.getLogger(ProviderController.class);@Autowiredprivate Registration registration;       // 服务注册@Autowiredprivate DiscoveryClient discoveryClient; // 服务发现客户端@RequestMapping("/provider")public String provider() {ServiceInstance instance = serviceInstance();LOGGER.info("provider service, host = " + instance.getHost()+ ", service_id = " + instance.getServiceId());return "Hello,Provider!";}/*** 获取当前服务的服务实例** @return 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 入门 (一)服务注册中心详解
Spring Cloud Eureka 入门 (二)服务提供者详解
Spring Cloud Eureka 入门 (三)服务消费者详解

资料:
1.《Spring Cloud微服务实战》
 

481AEC9F-3FE5-44C3-A61C-28D518CB9217.png



2. 官方文档
http://cloud.spring.io/spring- ... EASE/


by 泥瓦匠博客
— http://www.bysocket.com/
— https://github.com/JeffLi1993
 

qrcode_for_gh_cd421e7eb7d6_430.jpg

转载于:https://my.oschina.net/jeffli1993/blog/1305440

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题解 CF682C 【Alyona and the Tree】

简单搜索题&#xff0c;我们每找到一组不满足题目给出条件的点和边就将其整个子树删除&#xff0c;然后最终答案加上该子树的大小即可。注意&#xff0c;搜索的时候如果当前的边权和sum已经为负了&#xff0c;应该将其改为0&#xff08;可以想想为什么&#xff09; 注&#xff…

现在mfc的现状如何_天玑云客:微信代运营现在什么现状?如何挑选合适的代运营公司?...

来源&#xff1a;天玑云客综合整理团队成员均来自“中国房地产策划代理百强企业”TOP10以及”中国企业500强“TOP20企业并担任重要职位。和你一起聊运营、产品、技术研发、房地产以及各种新兴行业有哪些有趣的营销玩法。由于微信公众号/小程序的影响力日益增强&#xff0c;以及…

第五百一十八天 how can I 坚持

闲是真能闲出病来&#xff0c;无名的焦虑啊。不想这样。 天越来越冷了。后天就放假了&#xff0c;有点小激动&#xff0c;这一天天的。 今晚没玩游戏&#xff0c;看了会《微微一笑很倾城》&#xff0c;只能是崇拜那些玩游戏好的&#xff0c;就是玩不好&#xff0c;哎。。。 睡觉…

第三方登录 人人php,人人网第三方登录接口方案

之前闲暇有空,就去了解了下人人网的第三方登录的接口,呵呵..发布想了解的都了解下.一. REST接口模式使用HTTP post 协议or HTTP get 协议发出请求.HTTP 协议同REST服务器通信.Java Struts 1.2 .do 的模式请求.代码:1.URL编码的示例代码(java)&#xff1a; value java.net.UR…

easy ui dialog 关闭之后的怪异问题

最近在工作中使用easy ui做东西,然后发现了一些不可思议的现象,笔记一下,前事不忘后事之师!事故现场:增加页面和修改页面是分离的两个jsp文件.在页面加载时会用jquery去控制一些数据加载和一些逻辑.理论上来说不希望增加页面和修改页面互相干扰.单独拿增加模块测是正常的.加载修…

node.js gbk编码_如何使用Node.js将Chrome的霸王龙编码为电报游戏

node.js gbk编码by Fernando Garca lvarez通过费尔南多加西亚阿尔瓦雷斯 如何使用Node.js将Chrome的霸王龙编码为电报游戏 (How to code Chrome’s T-Rex as a Telegram game using Node.js) Last month I was really interested in learning how the Telegram game platform …

二进制文件更新程序_APR 6.17程序文件更新

兰博基尼程序文件更新Lamborghini Huracan EURO MY2018 5.2L V10 DKBC 4T0907552L S0002 Stage 1 V1.1 [APR Mobile]奥迪程序文件更新Audi A3 / VW GTI NA MY2014 2.0TSI CNTC 5G0906259A S0001 Stage 1 V2.0.3 [2WD] [Single Program]Audi A3 / VW GTI NA MY2014 2.0TSI CNTC …

android 事件拦截 (Viewpager不可以左右滑动)

以前没有做过真正的需求&#xff0c;所以从来没有觉得事件拦截分发处理有什么好懂的。 现在做需求了&#xff0c;真的是什么需求都有&#xff0c;你作为开发都要去研究实现。比如说&#xff0c;只能点不能滑动的viewpager。其实这都可以不用viewpager了。直接用fragment的repl…

mysql安装设置数据目录下,linux下安装mysql数据+配置

《linux下安装mysql数据配置》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《linux下安装mysql数据配置(2页珍藏版)》请在人人文库网上搜索。1、Redhat下安装MySQL数据库 说明&#xff1a;安装环境&#xff1a;本地VMWare虚拟机redhat MySQL安装目录&#xff1a;/hom…

力扣——k个一组翻转链表

给出一个链表&#xff0c;每 k 个节点一组进行翻转&#xff0c;并返回翻转后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表&#xff1a;1->2->3->4…

拨盘Demo大赛,获奖公布-20170710

2019独角兽企业重金招聘Python工程师标准>>> 为了答谢微信小程序联盟的新老会员&#xff0c;极乐科技支持举办的拨盘大赛终于落幕&#xff0c;本次大赛有662人关注&#xff0c;报名参赛8位&#xff0c;获奖名单如下&#xff1a; ##一、获得1000元现金奖励的参赛者 会…

2018年编程语言排行榜_这是2018年学习的最佳编程语言

2018年编程语言排行榜by Alexander Petkov通过亚历山大佩特科夫(Alexander Petkov) 这是2018年学习的最佳编程语言 (Here are the best programming languages to learn in 2018) This is the definitive guide for anyone wanting to choose the right programming language …

ZJUTACM

描述 这回是浙江工业大学的ACM程序设计竞赛&#xff0c;欢迎你的到来!但是,请稍等!裁判Joe说了,必须正确回答他的问题,才可以看到PIPI的气球MM,KUKU的气球GG.Joe手上有7张卡片,每张卡片上有一个大写字母,分别是Z,J,U,T,A,C,M.现在他开始表演魔术,每次只交换其中的两张卡片.等表…

vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件

前言VSCode&#xff0c;是一个免费的、开源的跨平台编辑器,也是我最满意的编辑器之一。本文向大家推荐一些我喜欢的vscode插件&#xff0c;不出意外的话&#xff0c;这些插件将对你的工作效率提升有不小的帮助&#xff01;GitLensVS Code中的 Git 体验在易用性和完整性之间取得…

dedecms plus/download.php,dedecms教程:DedeCMS 5.7SP1 /plus/download.php url重定向漏

最近使用scanv网站体检发现有DedeCMS 5.7SP1 /plus/download.php url重定向漏洞(如下图)&#xff0c;对比官方网站最新下载包发现该漏洞未进行补丁&#xff0c;但官方自身网站已经补上了&#xff0c;而官方演示站点均未补上。参考了下网上给出的漏洞原因和解决思路如下&#xf…

C language day1

2019独角兽企业重金招聘Python工程师标准>>> http://www.eclipsecolorthemes.org/?viewtheme&id66设置eclispe编辑器主题 http://www.cnblogs.com/csulennon/p/4231405.html 配置黑色主题 Dogs.c 第一段代码片段 /*Name : Dogs.cAuthor : MichaelV…

Xftp远程连接出现“无法显示文件夹”的问题补充

网上有很多朋友出现相同的问题&#xff0c;各位热心网友都给出了自己的解决方案&#xff0c;其中大多数网友给出的解决方案都是&#xff1a;将Xftp更换成“被动连接模式”。但是很不幸的是&#xff0c;本人通过这种方式并没有得到有效的解决&#xff0c;网上的各大方法都尝试&a…

Bootstrap中水平排列的表单form-inline

1 <html>2 <head>3 <title>初识Bootstrap</title>4 <meta charset"utf-8">5 <meta name"viewport" content"widthdevice-width, initial-scale1.0">6 <link rel"stylesheet" href"http:/…

minio 授予永久访问权限_应对 iOS 14 权限管理 应用手把手教你打开“所有照片”权限...

DoNews 11月3日消息(记者 刘文轩)苹果在 iOS 14 中带来全新的隐私管理功能&#xff0c;其中最亮眼的就是相册权限方面&#xff0c;可以为应用程序授予单独授予某张照片的访问权限&#xff0c;无需交出整个相册。作为 iOS 14 主推新功能之一&#xff0c;这项功能也很快得到开发者…

ios pusher使用_使用.NET和Pusher构建实时评论功能

ios pusher使用by Ogundipe Samuel由Ogundipe Samuel 使用.NET和Pusher构建实时评论功能 (Build a real-time commenting feature using .NET and Pusher) Today, we will build a mini-blog engine with live commentary features using .NET and Pusher.今天&#xff0c;我们…