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,一经查实,立即删除!

相关文章

二进制文件更新程序_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 …

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

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

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;这项功能也很快得到开发者…

计算机基础,你知道蓝屏的原因吗

2019独角兽企业重金招聘Python工程师标准>>> 电脑蓝屏的现象是经常见到的一件家常便饭了&#xff0c;它是属于突发事件&#xff0c;电脑蓝屏让我们猝手不及&#xff0c;很多时候是很让人心烦。电脑蓝屏首先要找到原因&#xff0c;然后进行维修。那么电脑蓝屏到底是怎…

2个字节能存多少个16进制_Java语言中最大的整数再加1等于多少?看完秒懂

短文涨姿势&#xff0c;看了不白看&#xff0c;不关注等啥&#xff1f;已知Java语言中int类型所能表示的最大整数为2147483647,请问以下代码执行结果是什么&#xff1f;一部分人都会认为这段程序压根就无法通过编译&#xff0c;也有人认为&#xff0c;这段程序能够通过编译&…

极乐科技CEO应邀出席2017微信小程序生态课

2019独角兽企业重金招聘Python工程师标准>>> 1月9日凌晨小程序正式上线。张小龙第一时间在其朋友圈写下一个日期—2007.1.9&#xff0c;并配上iPhone发布会的图片&#xff0c;微信小程序如约而至。在兴奋之际&#xff0c;极乐科技的大咖们也在思考&#xff1a;专注于…

IOS13图标尺寸_更新iOS13后,我的5台iPhone都废了

苹果就是自带热搜体质&#xff0c;特别是在九月。机哥大概数了一下&#xff0c;光是线下发售后的这四天&#xff0c;iPhone 11 前前后后就上了 7 次热搜。今天这一次热搜&#xff0c;是因为库克之前发了一条微博&#xff0c;夸自家 iPhone 11 是有史以来最出色的一款。在这条微…

数据库收缩

1.选中数据库-任务-收缩-数据库 2.全部压缩 3.右键数据库&#xff0c;属性 4.找到自动收缩&#xff0c;设置为true 转载于:https://www.cnblogs.com/RogerLu/p/10469819.html

flink sql udf jar包_Flink 生态:一个案例快速上手 PyFlink

简介&#xff1a; Flink 从 1.9.0 版本开始增加了对 Python 的支持&#xff08;PyFlink&#xff09;&#xff0c;在刚刚发布的 Flink 1.10 中&#xff0c;PyFlink 添加了对 Python UDFs 的支持&#xff0c;现在可以在 Table API/SQL 中注册并使用自定义函数。PyFlink 的架构如何…

编程软件python是什么意思_程序员Python编程必备5大工具,你用过几个?

Python是编程入门不错的选择&#xff0c;现在也有不少的程序员业余时间会研究这门编程语言。 学习Python有时候没有第一时间找到好工具&#xff0c;会吃不少的苦头。毕竟好的工具能将工作效率多倍速提升。下面W3Cschool给小伙伴们推荐Python编程必备的5大工具&#xff1a; 0、I…

Linux ReviewBoard安装与配置

目录 0. 引言1. 安装步骤2. 配置站点 2.1 创建数据库2.2 开始安装2.3 修改文件访问权限2.4 Web服务器配置2.5 修改django相关配置正文 回到顶部0. 引言 环境&#xff1a;Ubuntu 14.04 Server&#xff08;虚拟机&#xff09; 这篇文章里说的是review board官方的安装方式&#x…

又拍云 php5月18号那,又拍云文档中心

移动流量平台概述又拍云手机流量营销平台&#xff0c;整合移动、电信、联通三大运营商流量资源&#xff0c;将强大的流量营销服务&#xff0c;通过接口等形式提供给商家合作伙伴&#xff0c;帮助商家开展品牌宣传、APP/游戏/微信公众号/网站的拉新与促活等多种营销活动。通过接…

SQL SERVER2000将多行查询结果拼接到一行数据及函数的创建

处理前的查询结果如上图&#xff1a; 通过借助SQL变量的定义 DECLARE Scope varchar(1000) DECLARE Num int SET Scope SET Num 1 SELECT ScopeScopeconvert(varchar(8),Num)、DescScope DescOper;, Num Num1 From fuel_contractQualityNew Where ContractID0120090001…

windows nginx c++读取请求数据_轻松应对百万并发的Nginx,搞懂LinuxC/C++这些技术栈升职加薪...

在深入了解 Nginx 各种原理及在极端场景下的一些错误场景处理时&#xff0c;需要首先理解什么是网络事件。Nginx 是一个事件驱动的框架&#xff0c;所谓事件主要指的是网络事件&#xff0c;Nginx 每个网络连接会对应两个网络事件&#xff0c;一个读事件一个写事件。在深入了解 …

如何成为一位牛逼的高手

郑昀 演讲稿 创建于2016/9/15 最后更新于2016/9/21 很多人都在思考一个问题&#xff1a; 怎样才能想出来一个牛逼的 idea&#xff1f; 有一位喜欢抽烟喝酒烫头的大师 给出了答案&#xff1a; 这事儿吧&#xff0c;简单&#xff0c;一共分两步。 第一步先让自己成为一个牛逼的人…