SpringCloud微服务

SpringCloud

SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、负载均衡、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于Springboot的,所以需要开发中对Springboot有一定的了解,如果不了解的话可以看蚂蚁课堂SpringBoot课程。

服务提供者与消费关系

服务提供者:提供服务被人调用

消费者:调用被人服务

服务的注册与发现(Eureka )

在这里,我们需要用的的组件上Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块。

 

什么Eureka

官方的介绍在这里Eureka wikiEureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
在我看来,Eureka的吸引力来源于以下几点:

开源:大家可以对实现一探究竟,甚至修改源码。

可靠:经过Netflix多年的生产环境考验,使用应该比较靠谱省心

功能齐全:不但提供了完整的注册发现服务,还有Ribbon等可以配合使用的服务。

基于Java:对于Java程序员来说,使用起来,心里比较有底。

spring cloud可以使用Spring Cloud, 与Eureka进行了很好的集成,使用起来非常方便。

生产者消费者案例

一、创建springcloud_eureka_service项目

1 向pom文件添加依赖 

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

<dependencyManagement>
  <dependencies>
    <!--springCloud依赖-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>Greenwich.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

2 编写application.yml文件

##应用名称
spring:
  application:
    name: euraka-server

    #声明当前 eurakaserver端口号
server:
  port: 8888
#配置eureka
eureka:
  client:
    #代表自己是否注册到注册中心去
    register-with-eureka: false
    #表明自己是注册中心
    fetch-registry: false
    #配置地址
    service-url:
      defaultZone: http://localhost:8888/eureka

3 创建启动程序类

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

4 运行效果

二、创建生产者项目springcloud_eureka_provider

1 向pom文件导入依赖

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
<dependencyManagement>
    <dependencies>
      <!--springCloud依赖-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Greenwich.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

2 创建service接口

public interface IDoSomeService {
    public  String doSome();
}

3 创建service接口实现类

@RestController
public class IDoSomeServiceImpl implements IDoSomeService {
    @RequestMapping("/doSome")

    @Override
    public String doSome() {
        System.out.println("服务提供者");
        return "eureka";
    }
}

4 编写application.yml文件

  ##应用名称
  spring:
    application:
      name: euraka-provider

      #声明当前 eurakaserver端口号
  server:
    port: 8885
  #配置eureka
  eureka:
    client:


      #配置地址
      service-url:
        defaultZone: http://localhost:8888/eureka

5 创建启动程序类

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

6 运行效果

三、创建消费者项目springcloud_euraka_consumer

1 向pom文件导入节点

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
<dependencyManagement>
    <dependencies>
      <!--springCloud依赖-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Greenwich.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

2 创建service接口

@FeignClient("euraka-provider")
public interface IDoSomeService {
    @RequestMapping("/doSome")
    public  String doSome();
}

3 编写application.yml文件

  ##应用名称
  spring:
    application:
      name: euraka-comsumer

      #声明当前 eurakaserver端口号
  server:
    port: 8881
  #配置eureka
  eureka:
    client:
      #配置地址
      service-url:
        defaultZone: http://localhost:8888/eureka

4 创建Controller层

@RestController
public class IDoSomeController {
   /* @Resource
    private RestTemplate restTemplate;*/

    @Resource
    private IDoSomeService iDoSomeService;


    @RequestMapping("/doSome")

    public String doSme(){
        System.out.println("ConsumerController");
        /*return restTemplate.getForObject("http://euraka-provider/doSome",String.class);*/
       return iDoSomeService.doSome();
    }
}

5 编写程序启动类 

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

   /* @Bean
    @LoadBalanced  //实现负载均衡
    RestTemplate restTemplate(){
        return  new RestTemplate();
    }*/

   //指定负载均衡策略随即
    @Bean
    public IRule ribbonRule(){
        return new RandomRule();
    }
}

6 运行效果

猜你喜欢

转载自www.cnblogs.com/1314Justin/p/12054700.html