SpringBoot整合SpringCloud搭建分布式应用
什么是springcloud?
springcloud是一个分布式的整体解决方案。springcloud为开发者提供了在分布式系统中快速构建的工具,使用springcloud可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
springcloud分布式开发五大常用组件
服务发现——netflix eureka
客户端负载均衡——netflix ribbon
断路器——netflix hystrix
服务网关——netflix zuul
分布式配置——spring cloud config
创建一个分布式应用
1)new project 选择 empty project
2)创建注册中心应用
2.1 new model→spring initializr后面选择导入cloud discovery的eureka server依赖。
2.2 在启动类上加入@enableeurekaserver注解。
2.3 创建application.yml,内容如下
server: port: 8761 eureka: instance: hostname: eureka-server # eureka实例的主机名 client: register-with-eureka: false #不将自己注册到eureka上 fetch-registry: false #不从eureka上来获取服务的注册信息 service-url: defaultzone: http://localhost:8761/eureka/
3)创建服务提供者工程
3.1 new model→spring initializr后面选择导入cloud discovery的eureka discovery依赖。
3.2 创建一个service
package com.example.providerticket.service; import org.springframework.stereotype.service; @service public class tickerservice { public string getticker(){ return "《厉害了,我的国》"; } }
3.3 创建一个controller
@restcontroller public class tickercontroller { @autowired tickerservice tickerservice; @getmapping("/ticket") public string getticker(){ return tickerservice.getticker(); } }
3.4 创建配置application.yml
server: port: 8002 spring: application: name: provider-ticket eureka: instance: prefer-ip-address: true #注册服务的时候使用服务ip地址 client: service-url: defaultzone: http://localhost:8761/eureka/
4)创建服务消费者工程
4.1 new model→spring initializr后面选择导入cloud discovery的eureka discovery依赖。
4.2 配置启动类
@enablediscoveryclient //开启发现服务功能 @springbootapplication public class consumeruserapplication { public static void main(string[] args) { springapplication.run(consumeruserapplication.class, args); } @loadbalanced //启用负载均衡机制 @bean public resttemplate resttemplate(){ return new resttemplate(); } }
4.3 配置application.yml
spring: application: name: consumer-user server: port: 8200 eureka: instance: prefer-ip-address: true #注册服务的时候使用服务ip地址 client: service-url: defaultzone: http://localhost:8761/eureka/
4.4 创建controller并测试
@restcontroller public class usercontroller { @autowired resttemplate resttemplate; @getmapping("/buy") public string byticket(string name){ string forobject = resttemplate.getforobject("http://provider-ticket/ticket", string.class); return name+"购买了"+forobject; } }
至此,一个springboot整合springcloud的简单分布式应用已搭建完毕。
推荐阅读
-
springboot、mybatisplus框架整合搭建
-
Spring整合Quartz定时任务并在集群、分布式系统中的应用
-
详解spring cloud config整合gitlab搭建分布式的配置中心
-
Springboot整合Dubbo教程之项目创建和环境搭建
-
详解spring cloud config整合gitlab搭建分布式的配置中心
-
详解mall整合SpringBoot+MyBatis搭建基本骨架
-
springboot2.0和springcloud Finchley版项目搭建(包含eureka,gateWay,Freign,Hystrix)
-
SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用
-
SpringBoot整合SpringCloud搭建分布式应用
-
SpringBoot2 整合Nacos组件,环境搭建和入门案例详解