初识Spring Cloud(一) Eureka(注册中心)搭建

注册中心呢就像是古代府里的大管家,spring boot项目呢就是下人们,他们需要告诉管家,自己能做什么,比如:我叫王五,我会扫地,我是李四,我会做饭。这个过程就叫做服务注册,然后老爷饿了,怎么办总不能看到一个人就问“你会不会做饭啊?” 所以最简单的就是直接找管家说“我饿了” ,然后管家就会找到对应的 李四。

首先创建一个spring boot 项目

1,引入依赖
      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
2,在启动类里加上注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer //说明这个项目是一个注册中心
public class SpringcloudApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudApplication.class, args);
    }

}
3,yml配置文件
server:
  port: 8761 
spring:
  application:
    name: eureka-serve #名字随便取
eureka:
  server:
    enable-self-preservation: false #不向注册中心注册自己,一定要加。 复制的话记得把注释删除了再运行项目
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://localhost:8761/eureka/
    fetch-registry: false

大功告成,启动服务 打开http://127.0.0.1:8761/

应该是这个样子的,红色框内是注册的服务,应该是空的,因为我这里注册过了。

在这里插入图片描述

创建一个服务端

同样是创建一个spring boot,依赖和上面的一样

yml配置文件
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/   #这里要和注册中心的地址一样
server:
  port: 8763
spring:
  application:
    name: service

我们创建一个hello() 方法提供服务 建一个controller

@Controller
public class ClientController {
    @Value("${server.port}")
    String port;
    @RequestMapping("/hello")
    @ResponseBody
    public  String home (){
        return "hi 我是服务端,i am from port:" + port;

    }
}

启动服务就可以看到已经注册的里面有 service了

在这里插入图片描述

然后创建一个消费端(用来调用服务的)

创建一个spring boot,yml配置文件只需要改一下端口,,依赖和上面的一样

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8764
spring:
  application:
    name: service-ribbon

在启动类里加上 RestTemplate (提供了多种便捷访问远程Http服务的方法)

public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

在controller写调用服务端的方法

@Controller
public class HelloController {
    @Autowired
    RestTemplate restTemplate;
    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
    //url:是服务端名字加方法映射,后面是 数据返回的类型
        return  restTemplate.getForObject("http://SERVICE/hello",String.class);
    }
}
查看服务端和消费端是否已经注册完成,然后 测试8764端口

在这里插入图片描述

另外还有负载均衡,只要你再创建一个 服务端,然后配置文件里name名字和之前那个一样,而且有一个同样的 hello 映射方法,他就会自动的两个依次切换调用,多个也是同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值