使用 Spring Cloud 实现微服务系统
使用 Spring Cloud 实现微服务系统
准备工作:
为了方便创建项目,以及各版本以来关系,此次创建项目使用 Spring Assistant
插件。
创建单体服务中心项目
启用服务端的服务注册,发现功能
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerDemoApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerDemoApplication.class, args);}}
配置“服务中心”地址,端口号,应用名称
# 端口
server.port=8080
# 服务名
spring.application.name=Eureka Server Demo
# 是否注册到 Eureka Server,默认为true
eureka.client.register-with-eureka=true
# 是否从 Eureka Server 获取注册信息,默认为true
eureka.client.fetch-registry=true
# 设置与 Eureka Server 进行交互的地址,查询服务和注册服务都需要使用他。多个地址使用 "," 分割。
eureka.client.service-url.default-zone=http://localhost:8080/eureka/
gitee:https://gitee.com/Jacob-gitee/eureka/tree/master/eureka1/
实现服务集群
配置虚拟地址
# 节点1
127.0.0.1 node1
# 节点2
127.0.0.1 node2
# 节点3
127.0.0.1 node3
多环境配置
创建节点 node1 配置文件 application-node1.pproperties,并指向 node2 和 node3。
# 端口
server.port=8081
# 服务名
spring.application.name=Eureka Server Demo
# 节点名
eureka.instance.hostname=node1
# 是否注册到 Eureka Server,默认为true
eureka.client.register-with-eureka=true
# 是否从 Eureka Server 获取注册信息,默认为true
eureka.client.fetch-registry=true
# 设置与 Eureka Server 进行交互的地址,查询服务和注册服务都需要使用他。多个地址使用 "," 分割。
eureka.client.service-url.defaultZone=http://node2:8082/eureka/,http://node3:8083/eureka/
创建节点 node2 配置文件 application-node2.pproperties,并指向 node1 和 node3。
# 端口
server.port=8082
# 服务名
spring.application.name=Eureka Server Demo
# 节点名
eureka.instance.hostname=node2
# 是否注册到 Eureka Server,默认为true
eureka.client.register-with-eureka=true
# 是否从 Eureka Server 获取注册信息,默认为true
eureka.client.fetch-registry=true
# 设置与 Eureka Server 进行交互的地址,查询服务和注册服务都需要使用他。多个地址使用 "," 分割。
eureka.client.service-url.defaultZone=http://node1:8081/eureka/,http://node3:8083/eureka/
创建节点 node3 配置文件 application-node3.pproperties,并指向 node1 和 node2。
# 端口
server.port=8083
# 服务名
spring.application.name=Eureka Server Demo
# 节点名
eureka.instance.hostname=node3
# 是否注册到 Eureka Server,默认为true
eureka.client.register-with-eureka=true
# 是否从 Eureka Server 获取注册信息,默认为true
eureka.client.fetch-registry=true
# 设置与 Eureka Server 进行交互的地址,查询服务和注册服务都需要使用他。多个地址使用 "," 分割。
eureka.client.service-url.defaultZone=http://node1:8081/eureka/,http://node2:8082/eureka/
打包和部署
打包
使用 Maven 命令 进行打包
部署 服务中心 集群
在 3个DOS命令窗口分别暑促一下命令启动服务中心:
# node1
java -jar eureka-0.0.1.jar --spring.profiles.active=node1
# node2
java -jar eureka-0.0.1.jar --spring.profiles.active=node2
# node3
java -jar eureka-0.0.1.jar --spring.profiles.active=node3
gitee:https://gitee.com/Jacob-gitee/eureka/tree/master/eureka
实现单体"服务提供者"客户端
使用插件创建 客户端,最后使用选择 Eureka Discovery Client
:
添加依赖
<!-- 不加此依赖会:registration status: 204 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
添加配置
# 服务名
spring.application.name=provider
# 应用的端口号
server.port=8000
provider.name=provider0
# "服务中心" 地址
eureka.client.service-url.defaultZone=http://node1:8081/eureka/
启用客户端的服务注册,发现功能:
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaServerClientApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerClientApplication.class, args);}}
使用 Eureka 启用客户端服务的注册和发现功能,可以使用注解 @EnableEurekaClient 和 @EnableDiscoveryClient 来实现。如果使用其他"服务中心"(zookeeper,Consul),则使用 @EnableDiscoveryClient 来实现。@EnableEurekaClient 是 Eureka 的专用注解。
实现"服务提供者"接口
@RestController
public class HellController {@Value("${server.port}")private String port;@Value("${provider.name}")private String name;@GetMapping("hello")public String hello(){return "provider:"+ name+" port:"+port;}
}
实现"服务提供者"集群
多环境配置
创建配置文件 application-provider1.properties,并做如下配置:
# 服务名
spring.application.name=provider
# 应用的端口号
server.port=8001
# 自定义配置项
provider.name=provider1
# "服务中心" 地址
eureka.client.service-url.defaultZone=http://node1:8081/eureka/,http://node2:8082/eureka/,http://node3:8083/eureka/
创建配置文件 application-provider2.properties,并做如下配置:
# 服务名
spring.application.name=provider
# 应用的端口号
server.port=8002
# 自定义配置项
provider.name=provider2
# "服务中心" 地址
eureka.client.service-url.defaultZone=http://node1:8081/eureka/,http://node2:8082/eureka/,http://node3:8083/eureka/
打包启动
# 打包
mvn clean package
# 启动
java -jar eureka-clien.0.0.1.jar --spring.profiles.active=provider1
java -jar eureka-clien.0.0.1.jar --spring.profiles.active=provider2
用 Feign 实现"服务消费者"
创建 Eureka 的客户端
创建过程 参照:实现单体"服务提供者"客户端
添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
添加配置
# 服务名
spring.application.name=consumer
# 应用的端口号
server.port=9000
# 不注册到"服务中心"
eureka.client.register-with-eureka=false
# "服务中心" 地址
eureka.client.service-url.defaultZone=http://node1:8081/eureka/,http://node2:8082/eureka/,http://node3:8083/eureka/
启用客户端的发现和远程调用
// 启动 feign 远程调用服务
@EnableFeignClients
// 启用客户端的服务注册,发现功能
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}}
调用"服务提供者"接口
// 远程服务名
@FeignClient(name = "provider")
public interface MyFeignClient {// 此接口需要和远程调用接口方法名,参数保持一致@GetMapping("/hello")public String hello();}
实现"客户端"接口
@RestController
public class FeignController {@Autowiredprivate MyFeignClient myFeignClient;@GetMapping("hello")public String hello(){return myFeignClient.hello();}}
测试微服务系统
使用 Spring Cloud 实现微服务系统相关推荐
- Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
Spring Cloud Feign Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口 ...
- 《深入理解 Spring Cloud 与微服务构建》第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统
<深入理解 Spring Cloud 与微服务构建>第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统 文章目录 <深入理解 Spring Cl ...
- 《深入理解 Spring Cloud 与微服务构建》第十七章 使用 Spring Cloud OAuth2 保护微服务系统
<深入理解 Spring Cloud 与微服务构建>第十七章 使用 Spring Cloud OAuth2 保护微服务系统 文章目录 <深入理解 Spring Cloud 与微服务构 ...
- 《深入理解Spring Cloud与微服务构建》出版啦!
作者简介 方志朋,毕业于武汉理工大学,CSDN博客专家,专注于微服务.大数据等领域,乐于分享,爱好开源,活跃于各大开源社区.著有<史上最简单的Spring Cloud教程>,累计访问量超过 ...
- Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)【Dalston版】
通过上一篇<分布式服务跟踪(整合logstash)>,我们虽然已经能够利用ELK平台提供的收集.存储.搜索等强大功能,对跟踪信息的管理和使用已经变得非常便利.但是,在ELK平台中的数据分析 ...
- Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】
通过之前的<入门示例>,我们已经为两个由SpringCloud构建的微服务项目 trace-1和 trace-2引入了Spring Cloud Sleuth的基础模块 spring-clo ...
- 基于Spring Boot和Spring Cloud实现微服务架构学习--转
原文地址:http://blog.csdn.net/enweitech/article/details/52582918 看了几周spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习 ...
- 基于 Spring Boot 和 Spring Cloud 实现微服务架构
前言 首先,最想说的是,当你要学习一套最新的技术时,官网的英文文档是学习的最佳渠道.因为网上流传的多数资料是官网翻译而来,很多描述的重点也都偏向于作者自身碰到的问题,这样就很容易让你理解和操作出现偏差 ...
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...
最新文章
- 【One by One系列】IdentityServer4(三)使用用户名和密码
- Android WebView 图片超出宽度自适应,点击查看大图
- python二级考试真题_全国BIM技能等级考试真题全套(一/二级,全专业,28套)
- 职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
- python 条件判断和循环
- FPGA笔试数电部分(一)
- CAD图纸怎么加密?CAD图纸加密真的安全?
- MySQL相关知识整理
- 第二期:关于大数据相关的问答汇总,关注持续更新中哦~
- C# Word 文档保护
- linux删除不了777文件,Linux使用着需要理解chmod -r 777文件权限
- 本地数据库迁移至服务器数据库的教程
- 五款最优秀的java微服务框架
- 《数字逻辑设计与计算机组成》一 第3章 3.1 简介
- 垃圾分类的正确姿势?用 OpenCV 人工智能图像识别技术来进行
- 4.再模仿一个算术题
- 通过各种实践活动 培养学生道德品质
- 计算机一级wps表格函数,WPS表格函数学习之公式大全(字母顺序).pdf
- 【Android】Android 集成商米内置打印机打印票据
- 数理逻辑4 -- 公理化集合论16
热门文章
- postman调用webservice接口_接口对前后端和测试的意义
- AD20学习笔记5---PCB设计规则设置及PCB手工布线
- 第5章 Python 数字图像处理(DIP) - 图像复原与重建2 - 瑞利噪声
- deepin安装卡死在蓝色背景_求大神帮助~安装DEEPIN系统卡在蓝色背景图什么原因...
- 解题报告:51nod 加农炮
- js学习总结----案例之多级菜单js版本
- Java 1.8 HashMap源码探究
- 使用最大似然法来求解线性模型(1)
- duilib进阶教程 -- 改进窗口拖动 (12)
- android p wifi一直在扫描_在Android上的每次WiFi扫描之间我应该使用什么时间间隔?...