JavaのB2B2C電子商取引は、分散型マイクロサービスをspringcloud -Session

一般的に、Tomcatの、桟橋サーブレットコンテナなどは、セッションはメモリに保持デフォルトになります。単一のアプリケーション・サーバー・インスタンスのセッションは、サーバーのメモリに保存されている場合は非常に良いソリューションです。しかし、この方式は、欠点が拡大を助長されていません。より多くのアプリケーションが、高可用性と負荷分散のための分散展開を使用しています。質問があるので、あなたが外部の負荷分散、どのセッション共有を通じたアクセスを提供するために、複数のサーバで同じアプリケーションをデプロイする場合、?共有セッションは、の一つはTomcatは、桟橋や他のサーバがセッションを提供する共通に使用され、多くのプログラムを実施します(例えばRedisのような)(MySQLなど)のデータベースに格納された統一されたコンテンツのセッションまたはキャッシュを共有します。学びspringcloudアーキテクチャは、BEGに追加することができます:3536247259.
ここでは、Redisのシンプルかつ効率的な共有セッションを用いたマイクロサービスをspringcloudます。
セッションのRedis-springcloudという名前の春ブーツプロジェクト、作成
POM依存の設定を

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.carry</groupId>
    <artifactId>springcloud-session-redis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springcloud-session-redis</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <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-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

プロフィールは
application.ymlでのRedis、ユーレカ、ポートおよび他の構成に参加します

server:
  port: 8090
spring:
  application:
    name: service-session-redis
  redis:
    host: 192.168.68.100
    port: 6379
    password: 123456
    timeout: 6000ms
    lettuce:
      pool:
        max-active: 8
        max-wait: -1ms
        max-idle: 8
        min-idle: 0
    database: 0
eureka:
  client:
    serviceUrl:
      defaultZone: http://admin:123456@localhost:8761/eureka/
management: 
  endpoints:
    web:
      exposure: 
        include: "*"
      cors:
        allowed-origins: "*"
        allowed-methods: "*"

Redisのセッション設定基づいて
コントローラ試験方法を追加制御層

package com.carry.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope
public class UserManagementController {

    /**
     * redis sesion共享
     * 
     * @param request
     * @return
     */
    @GetMapping("/getUser")
    public String getUser(HttpServletRequest request) {
        HttpSession session = request.getSession();
        String username = (String) session.getAttribute("username");
        if (StringUtils.isEmpty(username)) {
            username = "testSessionRedis|" + System.currentTimeMillis();
            session.setAttribute("username", username);
        }
        System.out.println("访问端口:" + request.getServerPort());
        return username;
    }
}

おすすめ

転載: blog.51cto.com/14622290/2466800