Springboot + Springcloud 配置一个服务多实例 负载均衡实现(fegin)
2017-12-27 15:37
946 查看
网上资料中可能会出先很多的问题 最终可是是pom里面的版本问题 贴上我实际运行的配置环境。
Server
pom文件
application.yml配置
Application.class类
client -----------生产者
pom文件
application.yml配置文件
生产者的controller类也就是要发布的方法
client可以使用同一个服务多个实例的方法 来解决单点故障问题 只要更改server.port端口重新启动一下 就可以创建另一个实例
application.class类
消费者 这时候就是要获取实例 得到数据 我这里是使用了Fegin所以需要导入相应jar包
pom.xml文件
application.yml
application.class类
接受实例的接口类 接口的方法要与发布服务的方法一样 由于它是通过URL进行访问所以value值要能访问到发布服务的方法 并且只能是通过GET请求服务
消费者的controller类访问
访问这个地址http://192.168.10.109:8764/cloud/aaa
就会出现负载均衡的方式来访问 他会通过轮询的方式来访问提供的服务
helloaaa---->1
helloaaa---->2
Server
pom文件
<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>Dalston.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
application.yml配置
server: port: 8761 eureka: instance: hostname: 192.168.10.109 prefer-ip-address: true client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:8761/eureka/ spring: application: name: spring-cloud-eureka
Application.class类
@SpringBootApplication @EnableEurekaServer public class Application { public static void main(String[] args){ SpringApplication.run(Application.class,args); } }
client -----------生产者
pom文件
<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>Dalston.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
application.yml配置文件
spring: application: name: service server: port: 8762 eureka: client: serviceUrl: defaultZone: http://192.168.10.109:8761/eureka/
生产者的controller类也就是要发布的方法
@RestController public class CloudController { @RequestMapping("/cloud") public String cloud(String name){ return "hello"+name+"---->2"; } }
client可以使用同一个服务多个实例的方法 来解决单点故障问题 只要更改server.port端口重新启动一下 就可以创建另一个实例
Application | AMIs | Availability Zones | Status |
---|---|---|---|
SERVICE-HI | n/a (2) | (2) | UP (2) - YouXiong:service:8763 , YouXiong:service:8762 |
SERVICE-RIBBON | n/a (2) | (2) | UP (2) - YouXiong , YouXiong:service-fegin:8764 |
@SpringBootApplication @EnableEurekaClient public class Application { public static void main(String[] args){ SpringApplication.run(Application.class,args); } }
消费者 这时候就是要获取实例 得到数据 我这里是使用了Fegin所以需要导入相应jar包
pom.xml文件
<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>Dalston.RELEASE</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> <version>1.3.1.RELEASE</version> </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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
application.yml
eureka: client: serviceUrl: defaultZone: http://192.168.10.109:8761/eureka/ server: port: 8764 spring: application: name: service-fegin
application.class类
@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class Application { public static void main(String[] args){ SpringApplication.run(Application.class,args); } }
接受实例的接口类 接口的方法要与发布服务的方法一样 由于它是通过URL进行访问所以value值要能访问到发布服务的方法 并且只能是通过GET请求服务
@FeignClient(value="SERVICE") public interface CloudService { //方法名字和value要和发布服务的controller中的一样,并且请求的方式要设置成GET请求 @RequestMapping(value="/cloud",method= RequestMethod.GET) String cloud(@RequestParam("name") String name); }
消费者的controller类访问
@RestController public class ControllerFegin { @Autowired public CloudService cloudService; @RequestMapping("/cloud/{name}") public String test(@PathVariable("name") String name){ return cloudService.cloud(name); } }
访问这个地址http://192.168.10.109:8764/cloud/aaa
就会出现负载均衡的方式来访问 他会通过轮询的方式来访问提供的服务
helloaaa---->1
helloaaa---->2
相关文章推荐
- SpringCloud 笔记 (二)---- 简单搭建一个服务消费者,实现简单的ribbon负载均衡
- [置顶] 基于SpringBoot开发一个Restful服务,实现增删改查功能
- SpringCloud SpringBoot mybatis 分布式微服务(二十)Spring Boot 自定义配置文件
- 基于spring-cloud相关技术整合,实现接口调用、服务容错、动态路由配置等
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三)属性配置文件详解(1)
- spring cloud之服务调用及使用ribbon实现负载均衡(三)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- 使用Spring Boot,Spring Cloud和Docker实现微服务架构
- 用Spring Boot & Cloud,Angular2快速搭建微服务web应用 - 实现RESTful CRUD
- Spring Cloud Spring Boot mybatis分布式微服务云架构(四)属性配置文件详解(2)
- Spring Boot 揭秘与实战 自己实现一个简单的自动配置模块
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十六)使用MyBatis注解配置详解(1)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三)属性配置文件详解(1)
- (二)SpringBoot+SpringCloud —— 使用Eureka实现服务注册与发现
- springboot+spring cloud实现简单的gateway注册服务
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十四)注解配置与EhCache使用(2)
- spring-cloud 实现更新配置不用重启服务 @FreshScope
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十三)注解配置与EhCache使用(1)
- 基于SpringBoot开发一个Restful服务,实现增删改查功能