这篇文章主要讲解了“Spring Cloud常见模块有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Cloud常见模块有哪些”吧!
什么是Spring Cloud :
Spring Cloud 是一系列框架的集合
利用Spring Boot的简化了开发
Spring Cloud 常见模块 :
Eureka:注册中心,用于注册所有服务(项目/应用)
Ribbon:负载均衡,用于搭建集群的。(同一个功能多个tomcat,ribbon帮着选择一个tomcat)
Hystrix:熔断器,与正主断了联系,使用备选方案(备胎)。
Feign:服务与服务之间调用。类似HttpClient
zuul 网关:确定统一入口,方便进行管理。
spring cloud版本 : spring cloud 采用 Greenwich版本,对应spring boot 2.1.*版本
Eureka 入门
Eureka职责:
服务注册:服务提供方将服务注册到注册中心
服务发现:服务调用方法,从注册中心中,获得需要的服务
服务检测:注册中心与服务之间采用心跳检测服务状态
Eureka 入门案例
搭建父项目
步骤一:创建父项目 cloud_parent
步骤二:修改pom.xml文件,确定spring cloud版本
<!--1 确定spring boot的版本--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <!--2 确定sprig cloud版本--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <spring-cloud-release.version>Greenwich.RELEASE</spring-cloud-release.version> </properties> <!-- 3 锁定sprig cloud版本--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud-release.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 4 确定spring cloud私有仓库--> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
搭建注册中心
步骤一:创建子项目 eureka_demo
步骤二:修改pom.xml文件,添加web和 eureka service 依赖
<dependencies> <!--web起步依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Eureka服务端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
步骤三:创建yml文件,配置端口号、服务名、eureka注册地址
#服务端口号 server: port: 10086 #服务名称 spring: application: name: eurekaDemo #注册中心地址 eureka: client: service-url: defaultZone: http://localhost:${server.port}/eureka #eureka服务注册地址 register-with-eureka: false #关闭将自己注册到注册中心中 fetch-registry: false #关闭从注册中心获得列表(不拉去其他服务信息)
步骤四:创建启动类,添加开启 eureka service 注解 @EnableEurekaService
package com.czxy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer //开启eureka服务端 public class EurekaDemoApplication { public static void main(String[] args) { SpringApplication.run(EurekaDemoApplication.class ,args); } }
搭建服务提供方
步骤一:创建提供方项目,eureka_service
步骤二:修改pom.xml文件,添加 web、eureka client、spring boot 监控依赖 (监控依赖可加可不加)
<dependencies> <!--web起步依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Eureka客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--spring boot监控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
步骤三:创建application.yml文件,配置端口号、服务名、eureka注册中心位置
#端口号 server: port: 8080 #服务名称 spring: application: name: service eureka: client: service-url: defaultZone: http://localhost:10086/eureka
步骤四:编写启动类,添加启动客户端注解 @EnableEurekaClient
package com.czxy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient //开启eureka客户端 public class ServiceApplication { public static void main(String[] args) { SpringApplication.run(ServiceApplication.class,args); } }
步骤五:编写controller , 测试程序
测试路径:http://localhost:8080/test
显示结果: "测试数据"
package com.czxy.controller; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/test") public class TestController { @GetMapping public ResponseEntity<String> test(){ return ResponseEntity.ok("测试数据"); } }
搭建 服务调用方
步骤一:创建调用方项目,eureka_client
步骤二:修改pom.xml文件,添加 web、eureka client、spring boot 监控依赖(与eureka_service项目一样)
<dependencies> <!--web起步依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Eureka客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--spring boot监控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
步骤三:创建yml文件,(与eureka_service项目相似,有不同端口和服务名)
#端口号 server: port: 9090 #服务名称 spring: application: name: client eureka: client: service-url: defaultZone: http://localhost:10086/eureka
步骤四:编写启动类,添加eureka客户端注解,(与eureka_service项目相似,有不同类名)
package com.czxy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient //开启eureka客户端 public class ClientApplication { public static void main(String[] args) { SpringApplication.run(ClientApplication.class,args); } }
调用方测试数据
步骤一:编写config配置类,用于配置RestTemplate(远程调用)实例
package com.czxy.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @Configuration public class HttpConfig { @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }
步骤二:编写DataDao,用于进行远程调用
package com.czxy.dao; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; @Component public class DataDao { @Resource private RestTemplate restTemplate; public ResponseEntity<String> data(){ //服务提供方地址 return restTemplate.getForEntity("http://localhost:8080/test",String.class); } }
步骤三:编写DataController,提供接口进行访问
package com.czxy.controller; import com.czxy.dao.DataDao; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @RequestMapping("/data") public class DataController { @Resource private DataDao dataDao;\ @GetMapping public ResponseEntity data(){ return dataDao.data(); } }
测试路径 : http://localhost:9090/data
显示结果 "测试数据" 说明就Eureka入门案例就完成了
追加 ----> 配置eureka instance
yml文件配置
instance-id : 用于配置可视化页面中,显示的服务名称
${spring.application.name} 获得服务名
${spring.cloud.client.ip-address} 获得ip地址
${server.port} 获得端口号
默认服务名称:计算机名称:服务名:端口号
自定义服务名称:
prefer-ip-address:用于配置可视化页面中,访问时是否显示ip地址
默认显示的是:计算机名称:端口号
eureka: client: service-url: defaultZone: http://localhost:10086/eureka instance: instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} prefer-ip-address: true #注册中心可视化中显示IP地址
properties文件配置(不建议),参考学习
eureka.client.service-url.defaultZone=http://localhost:10086/eureka eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} eureka.instance.prefer-ip-address=true
感谢各位的阅读,以上就是“Spring Cloud常见模块有哪些”的内容了,经过本文的学习后,相信大家对Spring Cloud常见模块有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。