网站首页 > 博客文章 正文
作者 | 于海东
责编 | 郭 芮
之前在巧玩SpringBoot——SpringBoot的第一个“Hello World!”(https://blog.csdn.net/dongdong9223/article/details/82802137)中讲述过SpringBoot的搭建,能够看出SpringBoot搭建出一个Service还是非常简单的。今天来讲解一下使用SpringCloud搭建服务注册与服务发现。
SpringCloud是什么?
我们知道,SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。也就是说SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,使得搭建服务非常简便,这使得它搭上了微服务的快车,被广泛应用于微服务领域的服务开发。
俗话说,家不可一日无主!既然每个“微(小)”的“服务”工作已经有人做了,那么这些服务之间的管理又由谁来管呢?答案就是SpringCloud!SpringCloud就是微服务之间的大管家,统一协调服务系统之间的诸多工作的,比如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。
SpringBoot与SpringCloud本来是简化Spring家族的系统操作的,不过自从搭上了微服务这个时下异常火热的技术快车之后,已经蓬勃发展、圈粉无数,就如同周杰伦与方文山一样组合成实力强悍、互为御用的好伙(ji)伴(you)^_^,一跃成为Spring家族的当家花旦!
创建服务注册中心(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: 7001 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: 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,表示还没有发现注册进来的服务。
创建服务提供者(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: 7002 eureka: instance: hostname: service1 client: registerWithEureka: true fetchRegistry: true serviceUrl: defaultZone: http://localhost:7001/eureka/ spring: application: name: eureka-service
这里的设置,同2.1.4对比,去掉了:
eureka: client: #设置是否向注册中心注册,默认是true registerWithEureka: false #是否需要去检索寻找服务,默认是true fetchRegistry: false
由于这两个配置默认都为true,对于client端就不需要设置了,这样才会将自己的服务暴露给注册中心。
3.2 运行client
启动client的入口文件:SpringcloudclientApplication.java
查看服务注册中心
确保先运行Eureka Server,再运行Eureka Client,这样将两个服务都运行起来后,在浏览器中输入:http://localhost:7001/,进入Eureka Server的界面。
如图所示:
能够看到注册中心已经成功查找到了服务并将其注册了进来。
调用服务
再打开一个浏览器页面,输入:
http://localhost:7002/hello?name=zhangsan
会得到返回结果的响应:
Hello zhangsan ,your port is:7002
如图所示:
可见注册成功的服务也被成功调用了!
作者简介:于海东,关注技术与写作,喜欢阅读,崇拜胡适,个人网站:yuhaidong.com,目前就职于北京飞利信科技股份有限公司。本文首发于个人博客:https://blog.csdn.net/dongdong9223/article/details/84549747 。
声明:本文为作者投稿,版权归其个人所有。
猜你喜欢
- 2024-09-18 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- 2024-09-18 springcloud-microservice 快速构建分布式系统
- 2024-09-18 Eureka搭建分布式SpringCloud项目
- 2024-09-18 Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
- 2024-09-18 Spring cloud + vue + oAuth2.0搭建企业级微服务项目源码分享
- 2024-09-18 Nacos + Spring Cloud Gateway动态路由配置
- 2024-09-18 快速创建 Spring Cloud 应用的 Spring Initializr 使用及原理
- 2024-09-18 Spring Cloud 整合 SkyWalking(spring cloud 整合kafka设置日志级别)
- 2024-09-18 记录Spring Cloud应用在阿里云架构的一次部署
- 2024-09-18 SpringCloud在idea环境热部署微服务开发
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)