zoukankan      html  css  js  c++  java
  • 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 运行效果

  • 相关阅读:
    Rigidbody和Collider
    Unity官方实例教程 Roll-a-Ball
    unity还原three之旋转
    unity还原three——顶点,三角面,uv
    unity还原three导出的json——基本模型,位移,旋转,缩放
    【struts2基础】配置详解
    【深入Struts2】获取ServletAPI的三种方式
    JDBC事务与事务隔离级别详解
    【GOF23设计模式】--工厂模式
    【GOF23设计模式】--单例模式
  • 原文地址:https://www.cnblogs.com/szhhhh/p/12054700.html
Copyright © 2011-2022 走看看