转载请注明出处: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中配置好GroupArtifact

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搭建服务注册中心与服务发现相关推荐

  1. java 服务注册中心_服务治理的含义和java最流行的微服务框架服务治理注册中心的搭建...

    原标题:服务治理的含义和java最流行的微服务框架服务治理注册中心的搭建 Spring Cloud Eureka基于Netflix Eureka做了二次封装,是Spring Cloud Netflix ...

  2. [享学Eureka] 一、源生Eureka介绍 --- 基于注册中心的服务发现

    凡事皆有代价,一切皆是取舍. 本专栏所有文章均计划逐步重写搬迁至本人公号:Java方向盘,且免费开放!故不再建议下单购买,可关注我公号前往免费学习.交流 –> 返回Netflix OSS套件专栏 ...

  3. 微服务架构-服务注册中心和服务网关(6.8) (转载)

    原文链接:微服务架构-服务注册中心和服务网关(6.8) 这篇文章还是基于SpringCloud开源框架体系来谈下对Eureka服务注册中心和Zuul服务网关在使用上的一些理解和说明.在使用微服务架构进 ...

  4. Nacos服务注册中心(微服务)

    为什么要用服务注册中心? 在微服务中,首先需要面对的问题就是如何查找服务(软件即服务), 其次就是如何在不同的服务之间进行通信? 如何更好更方便的管理应用中的每一个服务,如何建立各个服务之间联系的纽带 ...

  5. 微服务注册中心:Eureka详解

    文章目录 Eureka基础概念 Eureka概述 Eureka架构图 Eureka集群架构图 Eureka关键概念 Eureka的自我保护模式 创建Eureka服务端 服务提供者cloud-provi ...

  6. eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...

    友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...

  7. SpringCloud + Consul服务注册中心 + gateway网关

    1  启动Consul 2  创建springcloud-consul项目及三个子模块 2.1 数据模块consul-producer 2.2 数据消费模块consul-consumer 2.3 ga ...

  8. 服务注册中心之Eureka简介及原理

    服务注册中心对整个微服务架构起着最核心的整合作用,因此对Eureka还是有很大的必要进行深入研究.     在讨论Eureka前我们先来了解下其与zookeeper的区别: 著名的CAP理论指出,一个 ...

  9. 阿里巴巴微服务注册中心ConfigServer

    1.Eureka1.0 架构存在的问题 Eureka 作为 Netflix 公司力推和 SpringCloud 微服务标配的注册中心开源解决方案,其 Eureka 2.0 (Discontinued) ...

最新文章

  1. Django博客系统(登录)
  2. Twitter新计划:审视自家算法里的“无心之失”
  3. JS组件系列——封装自己的JS组件,你也可以
  4. JS模式--职责链模式
  5. Go Embed简明教程
  6. 【week2】 构建之法 读后感及问题
  7. python selenium iframe怎么定位_python+selenium 切换iframe
  8. ue4vr插件_UE4 含源码插件合集【转载】
  9. PDE5 method of characteristics
  10. Keil V4安装教程
  11. MyBatis防止SQL注入的方法
  12. mysql合并两个表_MYSQL如何合并两个表
  13. Oracle中国区大裁员:昔日辉煌不再,退出中国市场?
  14. opencv normalize()函数详解
  15. python 拆分excel单元格_python 操作excel
  16. CNAS认证和CMA认证是国内两种不同类型的权威认证
  17. tkinter将图标写入py文件
  18. 模拟信号拉线位移编码器是如何来校准的?
  19. KBU808-ASEMI适配大功率开关电源整流桥
  20. Big sur提示您没有权限来打开应用程序“XXX”怎么办?

热门文章

  1. zencart模板修改定制笔记9:如何修改定制某个边框标题
  2. Windows Server 2012 蓝屏 Wpprecorder.sys 故障
  3. 靶机渗透练习67-Looz
  4. ForkLift 3.5.6 远程/本地文件管理利器
  5. L1频段卫星导航射频前端低噪声放大器芯片MS2659完美替代MAX2659
  6. WPF水滴马赛克效果
  7. 解释性差?机器学习解释利器:SHAP原理及实战
  8. 22个高阶布局+配色技巧,才能造就如此高颜值的数据可视化
  9. 软件性能测试、分析与调优实践之路_读书笔记(一)
  10. DolphinPHP(海豚PHP) 框架 Excel 插件 《导出 Excel 教程》