美文网首页
java版spring cloud 多租户社交电子商务-搭建一个

java版spring cloud 多租户社交电子商务-搭建一个

作者: IT达人Q | 来源:发表于2019-06-25 10:55 被阅读0次

    电子商务平台源码请加企鹅求求:三伍三六二四柒二五玖。Eureka集群主要有三个部分Eureka服务器,服务提供者,服务调用者

    简单的来说就是服务提供者将服务注册到Eureka服务器,服务调用者对其服务进行查找调用。

    一.搭建服务器

    1.引入maven依赖,使用官方文档中的依赖的结果还是启动不起来,缺少日志相关的依赖,另外自己添加了几个依赖后就OK了

    <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR5</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
        </dependencies>
      </dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
    
        <dependency>
          <groupId>javax.persistence</groupId>
          <artifactId>persistence-api</artifactId>
          <version>1.0</version>
        </dependency>
        <dependency>
          <artifactId>slf4j-api</artifactId>
          <groupId>org.slf4j</groupId>
          <version>1.7.10</version>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>1.2.3</version>
          <exclusions>
            <exclusion>
              <artifactId>slf4j-api</artifactId>
              <groupId>org.slf4j</groupId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-core</artifactId>
          <version>1.2.3</version>
        </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-server</artifactId>
        </dependency>
    
      </dependencies>
    

    因为Spring cloud集成了很多项目。所以引入spring-cloud-starter-eureka-server就相当于引入了spring-boot-starter-web等,就具有了web容器的功能了。

    2.配置yml文件:设置服务器端口以及相关信息

    server:
      port: 8761 #更改端口为8761
    eureka:
      client:
        register-with-eureka: false #服务器不用注册到其他服务器
        fetch-registry: false #服务器不用去服务器抓取注册信息
    

    3.编写服务启动类,也就是main方法启动spring boot,注意使用@EnableEurekaServer注解

    package com.nijunyang;
    
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class ServerApp {
      public static void main(String[] args){
          new SpringApplicationBuilder(ServerApp.class).web(true).run(args);
      }
    }
      
    

    启动之后访问http://localhost:8761/就可以看到Eureka服务器控制台。

    二.服务提供者(警察局)

    1.maven依赖将服务器的spring-cloud-starter-eureka-server依赖改为spring-cloud-starter-eureka即可

    2.yml配置文件:需要将服务提供者注册到Eureka服务器上,服务器的端口设置的8761

    server:
      port: 8080
    spring:
      application:
        name: first-police  #服务提供者名字
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8761/eureka/  #注册到服务器
    

    3.编写一个实体类police和PoliceController,有人报警则派出一个警察

    package com.nijunyang;
    
    import org.springframework.http.MediaType;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class PoliceController {
        @RequestMapping(value = "/call/{id}",method = RequestMethod.GET,
        produces = MediaType.APPLICATION_JSON_VALUE)
        public Police call(@PathVariable Integer id){
            Police police = new Police();
            police.setId(id);
            police.setName("zhangsan");
            return police;
        }
    }
    

    4.该模块的启动类,main方法启动和服务器的一样 new SpringApplicationBuilder(XXX(启动类类名).class).web(true).run(args);

    三.服务调用者(报警)

    1.maveny依赖:在服务提供者的基础上再加入负载均衡(后续了解)相关的依赖

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-ribbon</artifactId>
            </dependency>
    

    2.yml配置:同样需要注册到服务器,上面的服务提供者由于没有设置端口所以默认是8080,现在将调用者端口设置8081,否则启动会出错

    server:
      port: 8081 #更改端口为8081
    spring:
      application:
        name: first-person
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8761/eureka/  #注册到服务器
    

    3.编写PersonController,需要新加@Configuration注解,以及配置RestTemplate,RestTemplate本来是spring-web下面的类用来调用REST服务。本身不具备调用分布式服务的能力,但是被@LoadBalanced修饰后就具有访问分布式服务的能力了(具体涉及负载均衡,后续深入了解)。因为是注册到Eureka服务器的,所以我在内部请求的时候只需要转到相应的服务提供者就可以了:http://first-police/xxx

    package com.nijunyang;
    
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.client.RestTemplate;
    
    @Controller
    @Configuration
    public class PersonController {
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
        @GetMapping(value = "/call/{id}")
        @ResponseBody
        public String call(@PathVariable Integer id){
            RestTemplate restTemplate = getRestTemplate();
            return restTemplate.getForObject("http://first-police/call/" + id ,String.class);
        }
    }
    

    4.不多说,启动类编写

    依次启动服务,服务提提供者和服务调用者。访问Eureka控制台就可以看到注册进去的first-police和first-person。访问http://localhost:8081/call/id,页面就会返回某个police的josn信息。

    相关文章

      网友评论

          本文标题:java版spring cloud 多租户社交电子商务-搭建一个

          本文链接:https://www.haomeiwen.com/subject/eqftcctx.html