一、搭建注册中心
1、创建一个demo项目,demo点击右键创建module


2、设置项目参数

3、选择spring cloud discovery,一直下一步,最后点击完成,创建注册中心

4、将application.properties文件修改为application.yml(格式比较清晰),复制下面参数
server:
port: 8001 # 服务端口
eureka:
instance:
hostname: localhost # 设置主机名
client:
registerWithEureka: false # 是否向 Eureka 注册服务。该应用为服务注册中心,不需要自注册,设置为 false
fetchRegistry: false # 是否检索服务。该应用为服务注册中心,职责为注册和发现服务,无需检索服务,设置为 false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ # 注册中心url
spring:
application:
name: eurka-server #服务名称
5、在项目启动类中添加@EnableEurekaServer注解

6、启动项目访问http://localhost:8001/,8001是配置文件中设置的端口号

spring cloud的消费者也可以是提供者,二者只有逻辑上的区别,在spring boot中有两种消费方式:rest+ribbon和Feign
二、spring cloud提供者(rest+ribbon)
1、同理,新建module

2、创建ribbon,不要忘记将spring cloud discovery也勾选上,否则将缺少jar包,一部分注解不显示

3、application.yml配置文件
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8001/eureka/
server:
port: 8002
spring:
application:
name: ribbon-provider
4、启动类添加@EnableEurekaClient注册服务,然后注入RestTemplate对象,@LoadBalanced表示开启负载均衡


package com.cloud.ribbonprovider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableEurekaClient
public class RibbonProviderApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonProviderApplication.class, args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
5、创建controller和service


package com.cloud.ribbonprovider.controller;
import com.cloud.ribbonprovider.service.ProviderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ProviderController {
@Autowired
ProviderService providerService;
@GetMapping(value = "/index")
public String index() {
return providerService.getProvider();
}
}


package com.cloud.ribbonprovider.service;
import org.springframework.stereotype.Service;
@Service
public class ProviderService {
public String getProvider() {
return "hello provider";
}
}
6、启动项目,访问提供者http://localhost:8002/index,可以看到返回结果,接着创建消费者来获取提供者的内容

三、spring cloud消费者(rest+ribbon)
1、新建module

2、勾选ribbon,步骤同提供者

3、application.yml配置文件
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8001/eureka/
server:
port: 8003
spring:
application:
name: ribbon-consumer
4、启动类配置


package com.cloud.ribbonconsumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableEurekaClient
public class RibbonConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonConsumerApplication.class, args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
5、controller和service,注意service需要注入RestTemplate,用来访问提供者


package com.cloud.ribbonconsumer.controller;
import com.cloud.ribbonconsumer.service.ConsumerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConsumerController {
@Autowired
ConsumerService consumerService;
@GetMapping(value = "/index")
public String index() {
return "consumer:" + consumerService.getConsumer();
}
}


package com.cloud.ribbonconsumer.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class ConsumerService {
@Autowired
RestTemplate restTemplate;
public String getConsumer() {
return restTemplate.getForObject("http://ribbon-provider/index", String.class);
}
}
6、启动项目,访问消费者http://localhost:8003/index,在返回的结果中,consumer:属于消费者自身的信息,hello provider属于提供者提供的内容,简单的springcloud搭建成功

7、访问注册中心http://localhost:8001/,可以看的提供者和消费者都已经注册成功

