zoukankan      html  css  js  c++  java
  • Spring Cloud Alibaba Dubbo 实践 + Docker编排

    (转载请注明来源:cnblogs coder-fang)

    本实例包括Nacos服务发现,配置中心,sentinel 容断简单使用,Spring cloud alibaba 的dubbo实例及所有服务的docker部署。

    • 创建三个Maven独立工程,接口API,provier,consumer

      •   DemoAPI提供服务的通用接口,创建为普通Maven项目,接口打包到中心仓库供其它工程使用,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>spcloud-dubbo</groupId>
            <artifactId>demo-api</artifactId>
            <version>1.0</version>
            <!-- 发布到仓库 -->
            <distributionManagement>
                <repository>
                    <id>nexus-releases</id>
                    <name>Nexus Release Repository</name>
                    <url>http://nexusserver:6060/nexus/content/repositories/releases/</url>
                </repository>
                <snapshotRepository>
                    <id>nexus-snapshots</id>
                    <name>Nexus Snapshot Repository</name>
                    <url>http://nexusserver:6060/nexus/content/repositories/snapshots/</url>
                </snapshotRepository>
            </distributionManagement>
        
        </project>
        View Code
      •   Demo代码,只提供一个测试接口
        package  spcloud.demoapi;
        public interface IApiService {
            String Hello(String name);
        }
      •     创建Provider工程(Spring boot 项目),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.2.7.RELEASE</version>
                <relativePath/> <!-- lookup parent from repository -->
            </parent>
            <groupId>com.spcouddubbo.demo</groupId>
            <artifactId>provider</artifactId>
            <version>1.0</version>
            <name>provider</name>
            <description>Demo project for Spring Boot</description>
        
            <properties>
                <java.version>1.8</java.version>
                <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
            </properties>
        
            <dependencies>
                <dependency>
                    <groupId>spcloud-dubbo</groupId>
                    <artifactId>demo-api</artifactId>
                    <version>1.0</version>
                </dependency>
        
        
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-starter-dubbo</artifactId>
                </dependency>
        
        
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
                    <scope>test</scope>
                    <exclusions>
                        <exclusion>
                            <groupId>org.junit.vintage</groupId>
                            <artifactId>junit-vintage-engine</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
            </dependencies>
        
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>com.alibaba.cloud</groupId>
                        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                        <version>${spring-cloud-alibaba.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>
        View Code
      •     配置文件与代码如下:
        •   Bootstrap.yaml 
          spring:
            application:
              name: provider
            main:
              allow-bean-definition-overriding: true
            cloud:
              nacos:
                discovery:
                  enabled: true
                  register-enabled: true
                  server-addr: nacosserver:8848
                config:
                  server-addr: nacosserver:8848
          View Code
        •   Application.yaml 
          dubbo:
            scan:
              base-packages: com.spcouddubbo.demo.provider
            protocols:
              dubbo:
                name: dubbo
                port: -1
            cloud:
              subscribed-services:
          demo:
            user: nouser
          View Code
        •   接口实现类(此类会使用demo.user的配置,如果无法获取配置中心数据,则使用本地配置)
          package com.spcouddubbo.demo.provider;
          
          import com.alibaba.nacos.api.config.annotation.NacosValue;
          import org.apache.dubbo.config.annotation.Service;
          import org.springframework.beans.factory.annotation.Value;
          import org.springframework.cloud.client.loadbalancer.LoadBalanced;
          import org.springframework.cloud.context.config.annotation.RefreshScope;
          import spcloud.demoapi.IApiService;
          @Service
          @RefreshScope
          
          public class APIImplment implements IApiService {
          
              @Value("${demo.user}")
              String user;
          
              @Override
              public String Hello(String s) {
                  return "hello 1 "+s+" "+user;
              }
          }
          View Code
        •   在 ProviderApplication 类上加入注解:@EnableDiscoveryClient
        •   执行 mvn package 打包,生成  provider-1.0.jar
      •     创建Consumer工程(Spring boot WEB项目),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.2.7.RELEASE</version>
                <relativePath/> <!-- lookup parent from repository -->
            </parent>
            <groupId>com.spclouddubbo.demo</groupId>
            <artifactId>consumer</artifactId>
            <version>1.0</version>
            <name>consumer</name>
            <description>Demo project for Spring Boot</description>
        
            <properties>
                <java.version>1.8</java.version>
                <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
            </properties>
        
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                </dependency>
        
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
                </dependency>
        
                <dependency>
                    <groupId>spcloud-dubbo</groupId>
                    <artifactId>demo-api</artifactId>
                    <version>1.0</version>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-starter-dubbo</artifactId>
                </dependency>
        
        
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
                    <scope>test</scope>
                    <exclusions>
                        <exclusion>
                            <groupId>org.junit.vintage</groupId>
                            <artifactId>junit-vintage-engine</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
            </dependencies>
        
            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>com.alibaba.cloud</groupId>
                        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                        <version>${spring-cloud-alibaba.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>
        View Code
      •     配置与代码如下:
        •   Bootstrap.yaml  
          spring:
            application:
              name: comsumer
            main:
              allow-bean-definition-overriding: true
            cloud:
              nacos:
                discovery:
                  enabled: true
                  register-enabled: true
                  server-addr: nacosserver:8848
                config:
                  server-addr: nacosserver:8848
          View Code
        •   Application.yaml 
          dubbo:
            cloud:
              subscribed-services: provider
            consumer:
              check: false
        •   主要代码如下:
          package com.spclouddubbo.demo.consumer;
          
          import com.alibaba.csp.sentinel.annotation.SentinelResource;
          import com.alibaba.csp.sentinel.slots.block.BlockException;
          import org.apache.dubbo.config.annotation.Reference;
          import org.apache.dubbo.rpc.RpcException;
          import org.springframework.boot.SpringApplication;
          import org.springframework.boot.autoconfigure.SpringBootApplication;
          import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
          import org.springframework.web.bind.annotation.*;
          import spcloud.demoapi.IApiService;
          
          @SpringBootApplication
          @RestController
          @EnableDiscoveryClient
          public class ConsumerApplication {
          
              public static void main(String[] args) {
                  SpringApplication.run(ConsumerApplication.class, args);
              }
          
              @Reference
              IApiService service;
          
              @ResponseBody
              @GetMapping("/")
              @SentinelResource(fallbackClass = ProviderError.class,defaultFallback = "errorService")
              public String Getname( String name)
              {
                  return  service.Hello(name);
              }
              
          }
          View Code
        •   服务失效回调代码:
          package com.spclouddubbo.demo.consumer;
          
          public class ProviderError {
              public  static   String errorService() {
                  return "Call Provider services error";
              }
          }
        •   执行 mvn package 打包,生成consumer-1.0.jar
    • 服务部署(以单主机为例,分别在两个目录中进行Nacos与应用服务的部署):

      •  创建桥接网络  docker network create -d bridge localnet
      •  部署nacos服务:
        •   docker 下拉 mysql:5.6, nacos/nacos-server
        •   目录结构如图:
        •   Docker-compose.yml 
          version: "3.1"
          services:
            db:
              image: mysql:5.6
              restart: always
              container_name: nacosdb
              hostname: nacosdb    
              volumes:
                - ./mysql:/var/lib/mysql     
              networks:
                - localnet
            nacos:
              image: nacos/nacos-server
              container_name: nacos-standalone-mysql
              hostname: nacoshost
              env_file:
                - ./mysql.env
              volumes:
                - ./logs/:/home/nacos/logs   
                - ./custom.properties:/home/nacos/init.d/custom.properties
              ports:
                - "8848:8848"
                - "9555:9555"
              restart: "no"
              depends_on:
                - db
              networks:
                - localnet
              links:
                - db
          networks:
            localnet:
              external: true       
          View Code
        • mysql.env

          MYSQL_SERVICE_DB_NAME=nacos
          MYSQL_SERVICE_USER=nacos
          MYSQL_SERVICE_PASSWORD=nacos
          MYSQL_SERVICE_PORT=3306
          MYSQL_SERVICE_HOST=db
          MODE=standalone
          View Code
        • custom.properties 根据需求自行配置

          #spring.security.enabled=false
          #management.security=false
          #security.basic.enabled=false
          #nacos.security.ignore.urls=/**
          #management.metrics.export.elastic.host=http://localhost:9200
          # metrics for prometheus
          management.endpoints.web.exposure.include=*
          
          # metrics for elastic search
          #management.metrics.export.elastic.enabled=false
          #management.metrics.export.elastic.host=http://localhost:9200
          
          # metrics for influx
          #management.metrics.export.influx.enabled=false
          #management.metrics.export.influx.db=springboot
          #management.metrics.export.influx.uri=http://localhost:8086
          #management.metrics.export.influx.auto-create-db=true
          #management.metrics.export.influx.consistency=one
          #management.metrics.export.influx.compressed=true
          View Code
        •   可先启动mysql 进行用户nacos创建与脚本初始化,脚本代码 Git链接

          /******************************************/
          /*   数据库全名 = nacos_config   */
          /*   表名称 = config_info   */
          /******************************************/
          CREATE TABLE `config_info` (
            `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
            `data_id` varchar(255) NOT NULL COMMENT 'data_id',
            `group_id` varchar(255) DEFAULT NULL,
            `content` longtext NOT NULL COMMENT 'content',
            `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
            `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
            `src_user` text COMMENT 'source user',
            `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
            `app_name` varchar(128) DEFAULT NULL,
            `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
            `c_desc` varchar(256) DEFAULT NULL,
            `c_use` varchar(64) DEFAULT NULL,
            `effect` varchar(64) DEFAULT NULL,
            `type` varchar(64) DEFAULT NULL,
            `c_schema` text,
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
          
          /******************************************/
          /*   数据库全名 = nacos_config   */
          /*   表名称 = config_info_aggr   */
          /******************************************/
          CREATE TABLE `config_info_aggr` (
            `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
            `data_id` varchar(255) NOT NULL COMMENT 'data_id',
            `group_id` varchar(255) NOT NULL COMMENT 'group_id',
            `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
            `content` longtext NOT NULL COMMENT '内容',
            `gmt_modified` datetime NOT NULL COMMENT '修改时间',
            `app_name` varchar(128) DEFAULT NULL,
            `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
          
          
          /******************************************/
          /*   数据库全名 = nacos_config   */
          /*   表名称 = config_info_beta   */
          /******************************************/
          CREATE TABLE `config_info_beta` (
            `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
            `data_id` varchar(255) NOT NULL COMMENT 'data_id',
            `group_id` varchar(128) NOT NULL COMMENT 'group_id',
            `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
            `content` longtext NOT NULL COMMENT 'content',
            `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
            `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
            `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
            `src_user` text COMMENT 'source user',
            `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
            `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
          
          /******************************************/
          /*   数据库全名 = nacos_config   */
          /*   表名称 = config_info_tag   */
          /******************************************/
          CREATE TABLE `config_info_tag` (
            `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
            `data_id` varchar(255) NOT NULL COMMENT 'data_id',
            `group_id` varchar(128) NOT NULL COMMENT 'group_id',
            `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
            `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
            `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
            `content` longtext NOT NULL COMMENT 'content',
            `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
            `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
            `src_user` text COMMENT 'source user',
            `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
          
          /******************************************/
          /*   数据库全名 = nacos_config   */
          /*   表名称 = config_tags_relation   */
          /******************************************/
          CREATE TABLE `config_tags_relation` (
            `id` bigint(20) NOT NULL COMMENT 'id',
            `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
            `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
            `data_id` varchar(255) NOT NULL COMMENT 'data_id',
            `group_id` varchar(128) NOT NULL COMMENT 'group_id',
            `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
            `nid` bigint(20) NOT NULL AUTO_INCREMENT,
            PRIMARY KEY (`nid`),
            UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
            KEY `idx_tenant_id` (`tenant_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
          
          /******************************************/
          /*   数据库全名 = nacos_config   */
          /*   表名称 = group_capacity   */
          /******************************************/
          CREATE TABLE `group_capacity` (
            `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
            `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
            `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
            `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
            `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
            `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
            `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
            `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
            `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_group_id` (`group_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
          
          /******************************************/
          /*   数据库全名 = nacos_config   */
          /*   表名称 = his_config_info   */
          /******************************************/
          CREATE TABLE `his_config_info` (
            `id` bigint(64) unsigned NOT NULL,
            `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
            `data_id` varchar(255) NOT NULL,
            `group_id` varchar(128) NOT NULL,
            `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
            `content` longtext NOT NULL,
            `md5` varchar(32) DEFAULT NULL,
            `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
            `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
            `src_user` text,
            `src_ip` varchar(20) DEFAULT NULL,
            `op_type` char(10) DEFAULT NULL,
            `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
            PRIMARY KEY (`nid`),
            KEY `idx_gmt_create` (`gmt_create`),
            KEY `idx_gmt_modified` (`gmt_modified`),
            KEY `idx_did` (`data_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
          
          
          /******************************************/
          /*   数据库全名 = nacos_config   */
          /*   表名称 = tenant_capacity   */
          /******************************************/
          CREATE TABLE `tenant_capacity` (
            `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
            `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
            `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
            `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
            `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
            `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
            `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
            `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
            `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
            `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_tenant_id` (`tenant_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
          
          
          CREATE TABLE `tenant_info` (
            `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
            `kp` varchar(128) NOT NULL COMMENT 'kp',
            `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
            `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
            `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
            `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
            `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
            `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
            PRIMARY KEY (`id`),
            UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
            KEY `idx_tenant_id` (`tenant_id`)
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
          
          CREATE TABLE `users` (
              `username` varchar(50) NOT NULL PRIMARY KEY,
              `password` varchar(500) NOT NULL,
              `enabled` boolean NOT NULL
          );
          
          CREATE TABLE `roles` (
              `username` varchar(50) NOT NULL,
              `role` varchar(50) NOT NULL,
              UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
          );
          
          CREATE TABLE `permissions` (
              `role` varchar(50) NOT NULL,
              `resource` varchar(512) NOT NULL,
              `action` varchar(8) NOT NULL,
              UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
          );
          
          INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
          
          INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
          View Code
        • 在此目录中运行命令docker-compose up ,Nacos服务启动。

      •  创建应用服务

        •   创建应用目录并将生成的provider与consumer的jar包拷贝过来:

        • 根据dcokerfile 生成各自服务镜像,Dockerfile-provider 文件:

          FROM openjdk:8
          COPY . /usr/src/myapp
          WORKDIR /usr/src/myapp
          CMD ["java", "-jar","provider-1.0.jar"]
        • Dockerfile-consumer文件:

          FROM openjdk:8
          COPY . /usr/src/myapp
          WORKDIR /usr/src/myapp
          CMD ["java", "-jar","consumer-1.0.jar"]
        • 创建镜像: docker build . -t provider -f .Dockerfile-provider  ,docker build . -t provider -f .Dockerfile-consumer

        • 此目录Docker-compose.yml:

          version: "3.1"
          services:
            dubbo-provider:
              image: provider
              container_name: provider 
              hostname: provider    
              restart: "no"
              networks:
                - localnet
              external_links:
                - nacos-standalone-mysql:nacosserver
            dubbo-custom:
              image: consumer
              container_name: consumer
              hostname: consumer
              restart: "no"
              ports:
                - 8080:8080
              networks:
                - localnet
              external_links:
                - nacos-standalone-mysql:nacoserver
              depends_on:
               - dubbo-provider
          networks:
            localnet:
              external: true       
          View Code
        • 在此目录中运行 docker-compose up  启动应用服务

              

    • 服务验证:

      • 服务正常情况如图:

      • Nacos网页查看已注册服务

      • 运行测试 http://nacosserver:8080/?name=abc

        •   配置中心未配置时输出:

        •   在配置中心进行配置:

        •               再次刷新网址此时输出 :

        •   关闭provider服务,刷新网址输出 :
      • 至此整个过程已跑通,以此做为笔记,为以后快速创建项目提供参考


          

     

  • 相关阅读:
    数据结构总结(UPDATING......)
    课件例题4.11,4.12
    Luogu P1525 关押罪犯
    Luogu P1540 机器翻译
    Luogu P1313 计算系数
    Luogu P1311 选择客栈
    Luogu P1519 穿越栅栏 Overfencing
    Luogu P2863 [USACO06JAN]牛的舞会The Cow Prom
    Tarjan学习笔记
    Luogu P3393 逃离僵尸岛
  • 原文地址:https://www.cnblogs.com/coder-fang/p/13091747.html
Copyright © 2011-2022 走看看