JAVA进步一点点--微服务SpringCloud快速搭建(对应官网的快速入门)

环境

IDEA 2020.1
Maven 3.63
JDK 1.8

SpringCloud 创建注册中心和client的方法

根本资料,Spring官网的discovery
https://spring.io/guides/gs/service-registration-and-discovery/

搭建注册中心EurakeServer

(1)Spring Initializr中可以直接创建
在这里插入图片描述
查看此时的pom.xml和依赖树、

仅依赖netflix-eureka-server(eureka-server的依赖)、spring-boot的依赖,可以看出来eureka-server是基于在Springboot的。

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

SpringCloud register的对于Server的pom文件,两者是一样的,因为都是Initializr实现的
在这里插入图片描述
(2)配置EurakeServer

  1. 修改main方法,使能eurekaServer @EnableEurekaServer

在这里插入图片描述
添加后如下所示:
在这里插入图片描述

  1. 修改yml配置文件
server.port=8761

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
#这两个没看懂,后续遇到再处理
logging.level.com.netflix.eureka=OFF
logging.level.com.netflix.discovery=OFF

yml形式
server:
port: 8761

eureka:
instance:
hostname: localhost

client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultzone: http:// e u r e k a . i n s t a n c e . h o s t n a m e : {eureka.instance.hostname}: eureka.instance.hostname:{server.port}/eureka

登录eureka界面,启动后可以看到8761,无上下文,所以登录页面http://localhost:8761/
在这里插入图片描述
在这里插入图片描述

搭建Client

搭建两个Client,一个用于服务提供者,一个用于服务消费者
创建过程
在这里插入图片描述
查看依赖树和pom.xml
可以看到也是基于SpringBoot的,加一个client的依赖包

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

配置过程

  1. 使能eureka客户端功能

在这里插入图片描述
2、配置yml
注:name和port需要分别写

server:
  port: 8762

spring:
  application:
    name: provider

eureka:
  client:
    service-url:
      defaultzone: http://localhost:8761/eureka

3、需要写一个controller
注:此版本SpringCloud无法使用RestController注解,需要导入starter-web的包

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

Controller如下:

package com.example.demo.Controller;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Administrator
 * @since 2021/2/28 15:38
 */
@RestController
public class HelloCon {

	@Autowired
	private DiscoveryClient discoveryClient;

	@RequestMapping("hello")
	public String hello(){
		return "Hello";
	}
}

启动Client后可以在eureka界面看到服务的注册
在这里插入图片描述

同样方法添加另外一个client,并注册成功
在这里插入图片描述

Provider和Consumer之间的调用

既然是一个提供服务,一个消费(调用)服务,那么都是返回hello是无法调用的。
调试provider

	@RequestMapping("hello")
	public String hello(){
		System.out.println("Hello provider");
		return "Hello provider";
	}

在这里插入图片描述
调试consumer
Springboot调用接口需要RestTempleate的实体,因此注册一个RestTemplate的bean,下面先尝试不用微服务的方法。

@Configuration
public class BeanConfig {

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

然后调用provider提供的服务:

	@RequestMapping("/hello")
	public String hello(){
		System.out.println("Hello consumer");
		return restTemplate.getForEntity("http://localhost:8762/hello",String.class).getBody();
	}

启动consumer后,调用结果如下:
在这里插入图片描述

修改为微服务方式,即通过SpringCloud调用,需要为RestTempleate添加注解
在这里插入图片描述
调用方式将使用根据服务名称调用
在这里插入图片描述
打开后,可以看到仍然可以调用到
在这里插入图片描述

总结:

通过搭建SpringCloud 注册中心,把provider和consumer注册进去,将根据IP和端口的调用方式改造成了根据服务名成调用的方式,不在关注各个服务所在的主机和端口等信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值