巧玩SpringCloud——使用Eureka搭建服务注册中心与服务发现
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/84549747
本文出自【我是干勾鱼的博客】
Ingredient:
Java:Java SE Development Kit 8u162(Oracle Java Archive),Linux下安装JDK修改环境变量
Eclipse:Eclipse Neon 3 Packages
SpringBoot: SPRING INITIALIZR(Spring Boot)
之前在巧玩SpringBoot——SpringBoot的第一个“Hello World!”中讲述过SpringBoot的搭建,能够看出SpringBoot搭建出一个service还是非常简单的。今天来讲解一下使用SpringCloud搭建服务注册与服务发现。
GitHub源码:springcloud-eureka。
1 SpringCloud是什么
我们知道,SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。也就是说SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,使得搭建服务非常简便,这使得她打上了微服务的快车,被广泛应用于微服务领域的服务开发。
俗话说,家不可一日无主!既然每个“微(小)”的“服务”工作已经有人做了,那么这些服务之间的管理又由谁来管呢?答案就是SpringCloud!SpringCloud就是微服务之间的大管家,统一协调服务系统之间的诸多工作的,比如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。
SpringBoot与SpringCloud本来是简化Spring家族的系统操作的,不过自从搭上了微服务这个时下异常火热的技术快车之后,已经蓬勃发展、圈粉无数,就如同周杰伦与方文山一样组合成实力强悍、互为御用的好伙(ji)伴(you)^_^,一跃成为Spring家族的当家花旦!
2 创建服务注册中心(Server)
这里首先说明一点,虽然说SpringCloud与SpringBoot互为御用,从概念上说它们有不同分工,但实现上它们之间却并不是各自独立的实体,而是一种寄生关系:SpringCloud也要基于SpringBoot这个服务体来实现其功能。
2.1 官网下载Maven工程
2.1.1 选择配置
来到SPRING INITIALIZR,选择配置为:
- Generate a:Maven Project
- With:Java
- Spring Boot:2.1.0
在Project Metadata中配置好Group和Artifact。
在Dependencies中输入Eureka Server并将其选择。
最后点击Generate Project,生成一个Maven工程的模板并下载下来,使用Eclipse将其导入。
2.1.2 pom.xml的配置
自动生成的Maven中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/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yhd</groupId><artifactId>springcloudserver</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springcloudserver</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Greenwich.M3</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>
2.1.3 修改SpringBoot的入口文件
这里的入口文件为:
SpringcloudserverApplication.java
在其中加入注解:
@EnableEurekaServer
文件内容如下:
package com.yhd.springcloudserver;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class SpringcloudserverApplication {public static void main(String[] args) {SpringApplication.run(SpringcloudserverApplication.class, args);}
}
2.1.4 编辑application.yml文件
这里使用yml的编辑方式。先将
application.properties
文件名改为:
application.yml
在其中加入:
server:port: 7001eureka:instance:hostname: localhostclient:registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/spring:application:name: eureka-server
2.2 运行Server
启动文件:
SpringcloudserverApplication.java
在浏览器中输入:
http://localhost:8761/
这样就进入了Eureka Server的界面,如图所示:
这里面的:
No instances available
表示还没有发现注册进来的服务。
3 创建服务提供者(Client)
OK服务中心创建好了,我们来创建一个服务提供者,也就是Eureka Client。
3.1 官网下载Maven工程
3.1.1 选择配置
这里面的配置大部分都同2.1.1中配置的一样,除了下面:
在Dependencies中,要输入:
- Web
- Eureka Discovery
最后点击Generate Project生成模板,下载下来并导入进Eclipse里面。
3.1.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/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yhd</groupId><artifactId>springcloudclient</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springcloudclient</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Greenwich.M3</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>
3.1.3 修改SpringBoot的入口文件
这里的入口文件为:
SpringcloudclientApplication.java
这里要做2件事:添加注解,添加一个controller。
3.1.3.1 添加注解
在其中加入注解:
@EnableEurekaClient
@RestController
3.1.3.2 添加controller
@RequestMapping("/hello")public String home(@RequestParam(value = "name", defaultValue = "zhangsan") String name) {return "Hello " + name + " ,your port is:" + port;}
整体上文件内容如下:
package com.yhd.springcloudclient;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@EnableEurekaClient
@RestController
public class SpringcloudclientApplication {public static void main(String[] args) {SpringApplication.run(SpringcloudclientApplication.class, args);}@Value("${server.port}")String port;@RequestMapping("/hello")public String home(@RequestParam(value = "name", defaultValue = "张三") String name) {return "Hello " + name + " ,your port is:" + port;}
}
3.1.4 编辑application.yml文件
编辑application.yml
在其中加入:
server:port: 7002eureka:instance:hostname: service1client:registerWithEureka: truefetchRegistry: trueserviceUrl:defaultZone: http://localhost:7001/eureka/spring:application:name: eureka-service
这里的设置,同2.1.4对比,去掉了:
eureka:client:#设置是否向注册中心注册,默认是trueregisterWithEureka: false#是否需要去检索寻找服务,默认是truefetchRegistry: false
由于这两个配置默认都为true,对于client端就不需要设置了,这样才会将自己的服务暴露给注册中心。
3.2 运行client
启动client的入口文件:
SpringcloudclientApplication.java
4 查看服务注册中心
确保先运行Eureka Server,再运行Eureka Client,这样将两个服务都运行起来后,在浏览器中输入:
http://localhost:7001/
进入Eureka Server的界面,如图所示:
能够看到注册中心已经成功查找到了服务并将其注册了进来。
5 调用服务
再打开一个浏览器页面,输入:
http://localhost:7002/hello?name=zhangsan
会得到返回结果的响应:
Hello zhangsan ,your port is:7002
如图所示:
可见注册成功的服务也被成功调用了!
6 参考:
巧玩SpringBoot——SpringBoot的第一个“Hello World!”
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
springcloud微服务二:Eureka服务治理之服务注册中心
Spring Cloud 系列文章
巧玩SpringCloud——使用Eureka搭建服务注册中心与服务发现相关推荐
- java 服务注册中心_服务治理的含义和java最流行的微服务框架服务治理注册中心的搭建...
原标题:服务治理的含义和java最流行的微服务框架服务治理注册中心的搭建 Spring Cloud Eureka基于Netflix Eureka做了二次封装,是Spring Cloud Netflix ...
- [享学Eureka] 一、源生Eureka介绍 --- 基于注册中心的服务发现
凡事皆有代价,一切皆是取舍. 本专栏所有文章均计划逐步重写搬迁至本人公号:Java方向盘,且免费开放!故不再建议下单购买,可关注我公号前往免费学习.交流 –> 返回Netflix OSS套件专栏 ...
- 微服务架构-服务注册中心和服务网关(6.8) (转载)
原文链接:微服务架构-服务注册中心和服务网关(6.8) 这篇文章还是基于SpringCloud开源框架体系来谈下对Eureka服务注册中心和Zuul服务网关在使用上的一些理解和说明.在使用微服务架构进 ...
- Nacos服务注册中心(微服务)
为什么要用服务注册中心? 在微服务中,首先需要面对的问题就是如何查找服务(软件即服务), 其次就是如何在不同的服务之间进行通信? 如何更好更方便的管理应用中的每一个服务,如何建立各个服务之间联系的纽带 ...
- 微服务注册中心:Eureka详解
文章目录 Eureka基础概念 Eureka概述 Eureka架构图 Eureka集群架构图 Eureka关键概念 Eureka的自我保护模式 创建Eureka服务端 服务提供者cloud-provi ...
- eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...
友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...
- SpringCloud + Consul服务注册中心 + gateway网关
1 启动Consul 2 创建springcloud-consul项目及三个子模块 2.1 数据模块consul-producer 2.2 数据消费模块consul-consumer 2.3 ga ...
- 服务注册中心之Eureka简介及原理
服务注册中心对整个微服务架构起着最核心的整合作用,因此对Eureka还是有很大的必要进行深入研究. 在讨论Eureka前我们先来了解下其与zookeeper的区别: 著名的CAP理论指出,一个 ...
- 阿里巴巴微服务注册中心ConfigServer
1.Eureka1.0 架构存在的问题 Eureka 作为 Netflix 公司力推和 SpringCloud 微服务标配的注册中心开源解决方案,其 Eureka 2.0 (Discontinued) ...
最新文章
- Django博客系统(登录)
- Twitter新计划:审视自家算法里的“无心之失”
- JS组件系列——封装自己的JS组件,你也可以
- JS模式--职责链模式
- Go Embed简明教程
- 【week2】 构建之法 读后感及问题
- python selenium iframe怎么定位_python+selenium 切换iframe
- ue4vr插件_UE4 含源码插件合集【转载】
- PDE5 method of characteristics
- Keil V4安装教程
- MyBatis防止SQL注入的方法
- mysql合并两个表_MYSQL如何合并两个表
- Oracle中国区大裁员:昔日辉煌不再,退出中国市场?
- opencv normalize()函数详解
- python 拆分excel单元格_python 操作excel
- CNAS认证和CMA认证是国内两种不同类型的权威认证
- tkinter将图标写入py文件
- 模拟信号拉线位移编码器是如何来校准的?
- KBU808-ASEMI适配大功率开关电源整流桥
- Big sur提示您没有权限来打开应用程序“XXX”怎么办?
热门文章
- zencart模板修改定制笔记9:如何修改定制某个边框标题
- Windows Server 2012 蓝屏 Wpprecorder.sys 故障
- 靶机渗透练习67-Looz
- ForkLift 3.5.6 远程/本地文件管理利器
- L1频段卫星导航射频前端低噪声放大器芯片MS2659完美替代MAX2659
- WPF水滴马赛克效果
- 解释性差?机器学习解释利器:SHAP原理及实战
- 22个高阶布局+配色技巧,才能造就如此高颜值的数据可视化
- 软件性能测试、分析与调优实践之路_读书笔记(一)
- DolphinPHP(海豚PHP) 框架 Excel 插件 《导出 Excel 教程》