Dubbo [Dubbo 고급 기능(서비스 전류 제한 구현), Dubbo 실전(프로젝트 소개, dubbo_parent 상위 프로젝트 생성, user_api 프로젝트 생성)] (4) - 종합적인 상세 설명(학습 요약 --- 입문부터 심화까지)

 

목차

Dubbo 고급 기능_ 서비스 전류 제한 구현

Dubbo in Action_프로젝트 소개 

action_Create dubbo_parent 상위 프로젝트의 Dubbo 

Dubbo 실제 전투_create user_api 프로젝트

Dubbo 실제 전투_create user_consumer 프로젝트

Dubbo 실제 전투_create user_provider 프로젝트 모듈

 Dubbo 실제 전투_사용자 엔터티 클래스 구성


Dubbo 고급 기능_ 서비스 전류 제한 구현

특정 소비자의 QPS나 모든 소비자의 QPS 합이 갑자기 급증하여 중요한 서비스에 장애가 발생하는 것을 방지하기 위해 시스템에서 접근 트래픽을 제어할 수 있으며, 이러한 클러스터에 대한 보호 조치를 서비스 흐름 제한이라고 합니다. .

동시성 제어

@Service(executes = 10)

알아채다:

서버의 동시 실행(또는 스레드 풀의 스레드 수)은 10을 초과할 수 없습니다.

연결 제어 

@Service(actives= 10)

알아채다:

연결을 점유하는 요청 수는 10을 초과할 수 없습니다.

Dubbo in Action_프로젝트 소개 

필요

사용자 테이블의 CRUD 작업을 완료합니다.

기술 아키텍처

프로젝트 구조 설계 

이 프로젝트는 maven 하위 모듈 개발 방법을 채택합니다. 즉, 전체 프로젝트를 여러 maven 프로젝트로 나누고 각 maven 프로젝트는 특정 유형의 코드를 저장합니다.

설명하다:

  • user_api: 공용 인터페이스
  • user_consumer: 서비스 소비자
  • user_provider: 서비스 제작자 

action_Create dubbo_parent 상위 프로젝트의 Dubbo 

메이븐 프로젝트 만들기

프로젝트 이름 및 주소 설정

 pom 파일 수정

하위 프로젝트 버전 설정

<properties>
      <dubbo.spring.starter.version>2.7.6</dubbo.spring.starter.version>
      <dubbo.registry.zookeeper.version>2.7.6</dubbo.registry.zookeeper.version>
      <mybatisplus.spring.starter.version>3.5.0</mybatisplus.spring.starter.version>
      <mysql.connector.version>5.1.49</mysql.connector.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!-- Dubbo 依赖 -->
            <dependency>
               <groupId>org.apache.dubbo</groupId>
               <artifactId>dubbo-spring-boot-starter</artifactId>
               <version>${dubbo.spring.starter.version}</version>
            </dependency>
            <!-- zookeeper 注册中心 依赖 -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-zookeeper</artifactId>
                <version>${dubbo.registry.zookeeper.version}</version>
            </dependency>
            <!-- Mybatis plus 依赖 -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatisplus.spring.starter.version}</version>
            </dependency>
            <!--MySQL 数据库依赖 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.connector.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

 JDK 버전 설정

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Dubbo 실제 전투_create user_api 프로젝트

user_api 하위 프로젝트 만들기

메이븐 프로젝트 만들기 

하위 프로젝트 생성

pom 파일 수정 

        <dependency>
          <groupId>org.apache.dubbo</groupId>
          <artifactId>dubbo-registry-zookeeper</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--Dubbo Starter Dependency-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>

Dubbo 실제 전투_create user_consumer 프로젝트

스프링부트 프로젝트 생성 

항목 태그 편집 

 프로젝트에 2개의 상위 프로젝트가 있는지 확인합니다.

구성: 

<dependencyManagement>
<!-- 引入父工程 dubbo_parent -->
<dependencies>
 <dependency>
   <groupId>com.tong</groupId>
   <artifactId>dubbo_parent</artifactId>
   <version>1.0-SNAPSHOT</version>
   <type>pom</type>
   <scope>import</scope>
 </dependency>
</dependencies>
</dependencyManagement>

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
          https://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.2</version>
    <relativePath/> <!-- lookup parent from repository -->
 </parent>
    <groupId>com.tong</groupId>
    <artifactId>user_consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>user_consumer</name>
    <description>Demo project for SpringBoot</description>
 <properties>
    <java.version>1.8</java.version>
 </properties>
 <dependencies>
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- 引入web -->
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 引入 user_api 工程 -->
    <dependency>
       <groupId>com.tong</groupId>
       <artifactId>user_api</artifactId>
       <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
</dependencies>
 <dependencyManagement>
 <!-- 引入父工程 dubbo_parent -->
 <dependencies>
    <dependency>
       <groupId>com.tong</groupId>
       <artifactId>dubbo_parent</artifactId>
       <version>1.0-SNAPSHOT</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>

Dubbo 실제 전투_create user_provider 프로젝트 모듈

논리 프로젝트 만들기 

만들어진 

로직 엔지니어링을 위해 수정됨

포조, 매퍼, 프로바이더 프로젝트 생성

 다음과 같은 디렉토리 구조

 Dubbo 실제 전투_사용자 엔터티 클래스 구성

 Docker는 Mysql 데이터베이스를 구축합니다.

도커 실행 -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

 데이터베이스 생성

데이터베이스 테스트 생성;

 사용자 테이블 생성

CREATE TABLE user
(
   id BIGINT(20) NOT NULL COMMENT '主键ID',
   name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
   age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    PRIMARY KEY (id)
);

사용자 엔터티 클래스 만들기

@Data
public class User implements Serializable {
    // 用户id
    private Long id;
    // 用户名字
    private String name;
    // 用户年纪
    private Integer age;
}

매퍼 프로젝트는 포조 프로젝트를 소개합니다

    <dependencies>
        <dependency>
            <groupId>com.tong</groupId>
            <artifactId>pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

추천

출처blog.csdn.net/m0_58719994/article/details/131426244