Spring Cloud 环境搭建

版权声明:-万里晴空-祝你前途晴朗 https://blog.csdn.net/qq_35207917/article/details/87927311

Spring Cloud 简单介绍

Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。

  Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成。 

  Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式。

  Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。   

常用组件

Eureka 在项目中扮演的三个角色

• 服务注册中心:Eureka 提供的服务端, 提供服务注册与发现的功能, 一般被称作eureka-server。
• 服务提供者:
提供服务的应用, 可以是Spring Boot 应用, 也可以是其他技术平台且遵循Eureka 通信机制的应用。它将自己提供的服务注册到Eureka, 以供其他应用发现
• 服务消费者:
消费者应用从服务注册中心获取服务列表, 从而使消费者可以知道去何处调 用其所需要的服务,这个不是我们这部分的内容,暂不介绍。

Ribbon

负责进行客户端负载均衡的组件;一般与RestTemplate结合,在访问EurekaClient提供的服务时进行负载均衡处理。
也就是说,Ribbon用于服务调用者向被调用者进行服务调用,并且如果服务者有多个节点时,会进行客户端的负载均衡处理;

Feign

与Ribbon功能类型,用于调用方与被调用方的服务调用,同时进行客户端负载均衡的处理;不过它能提供类似本地调用的方式调用远程的EurekaClient提供的服务;它实际上是在Ribbon基础上进行了进一步的封装来提高调用服务的简便性。

项目搭建

1.项目图

在这里插入图片描述

项目所需依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
        <relativePath />
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</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-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Camden.SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

1.配置spring_eurake 工程

1.1 新建application.properties

server.port=9000

eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

1.2 简历启动类EurekaServerApplication

需要加上 @EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

2.配置提供者

2.1 新建application.properties文件

server.port=9001

#唯一表示改springboot的名字,每个springboot都要不一致
spring.application.name=compute-service
#注册中心的地址
eureka.client.serviceUrl.defaultZone=http://localhost:9000/eureka/

2.2 新建服务提供类

@RestController
@RequestMapping("/user")
public class UserService {

    @RequestMapping("/findAll")
    public String getAll(){
        return "hello My name is ChuangZhang";
    }
}

2.3 定义启动类

@RestController
@RequestMapping("/user")
public class UserService {

    @RequestMapping("/findAll")
    public String getAll(){
        return "hello My name is ChuangZhang";
    }
}

3. 配置消费者

3.1 编写Application.properties配置文件

server.port=9100

#唯一表示改springboot的名字,每个springboot都要不一致
spring.application.name=compute-consumer
#注册中心的地址
eureka.client.serviceUrl.defaultZone=http://localhost:9000/eureka/

3.2 编写启动类

@SpringBootApplication
@EnableDiscoveryClient   //discovery 发现
public class ConsumerApp {

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

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

}

3.3 编写Controller

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping(value = "/findAll")
    public String findAll() {
        return restTemplate.getForEntity("http://compute-service/user/findAll", String.class).getBody();
    }
}

以后会不断完善

猜你喜欢

转载自blog.csdn.net/qq_35207917/article/details/87927311