# spring-cloud-learning **Repository Path**: liaojuhui/spring-cloud-learning ## Basic Information - **Project Name**: spring-cloud-learning - **Description**: spring 服务的学习与搭建 统一版本 2.x - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-15 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spring-cloud-consul #### 介绍 基于spring-boot搭建的一个服务注册与配置中心 spring version:2.x spring boot version : 2.2.5.RELEASE spring cloud version : Hoxton.SR6 spring cloud alibaba version : 2.2.1.RELEASE consul version : 跟随spring cloud nacos version : 跟随spring cloud alibaba zookeeper version : 3.4.12 staea version : 1.3.0 rocketMQ version: 4.5.0 #### 软件架构 软件架构说明 #### 安装教程 都是基于docker-compose进行搭建 1. 安装Consul集群(仅用作dev环境) 基于docker-compose安装
version: "3"
services:
  consul1:
    image: consul:1.8.0
    container_name: consul1
    restart: always
    ports:
    # http 端口,用于http接口和web ui访问;
    - "8500:8500"
    # server rpc端口,同一数据中心consul server之间通过该端口通信
    - "8300:8300"
    # serf lan 端口,同一数据中心consul client通过该端口通信; 用于处理当前datacenter中LAN的gossip通信
    - "8301:8301"
    # serf wan端口,不同数据中心consul server通过该端口通信; agent server使用,处理与其他datacenter的gossip通信
    - "8302:8302"
    # dns 端口,用于已注册的服务发现
    - "8600:8600"
    command:
    - "agent"
    - "-server"
    - "-bootstrap-expect=2"
    - "-ui"
    - "-bind=0.0.0.0"
    - "-client=0.0.0.0"

  consul2:
    image: consul:1.8.0
    container_name: consul2
    restart: always
    ports:
    # http 端口,用于http接口和web ui访问;
    - "8501:8500"
    command:
    - "agent"
    - "-server"
    - "-ui"
    - "-bind=0.0.0.0"
    - "-client=0.0.0.0"
    - "-join=consul1"
    depends_on:
    - consul1

  consul3:
    image: consul:1.8.0
    container_name: consul3
    restart: always
    ports:
    # http 端口,用于http接口和web ui访问;
    - "8502:8500"
    command:
    - "agent"
    - "-server"
    - "-ui"
    - "-bind=0.0.0.0"
    - "-client=0.0.0.0"
    - "-join=consul1"
    depends_on:
    - consul1
    # 下面这个服务可以选择不添加 这个是单独的客户端
  consul4:
    image: consul:1.8.0
    container_name: consul4
    restart: always
    ports:
    # http 端口,用于http接口和web ui访问;
    - "8503:8500"
    command:
    - "agent"
    - "-ui"
    - "-bind=0.0.0.0"
    - "-client=0.0.0.0"
    - "-join=consul1"
    - "-retry-join=consul1"
    depends_on:
    - consul1
2. 安装zookeeper集群 基于docker-compoer安装
version: '3'
services:
  zoo1:
    image: zookeeper:3.4
    restart: always
    container_name: zoo1
    hostname: zoo1
    ports:
      - 2181:2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

  zoo2:
    image: zookeeper:3.4
    restart: always
    container_name: zoo2
    hostname: zoo2
    ports:
      - 2182:2181
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888

  zoo3:
    image: zookeeper:3.4
    restart: always
    container_name: zoo3
    hostname: zoo3
    ports:
      - 2183:2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888
3. 集成分布式事务(seata)docker-compose
version: "3.1"
services:
  seata-server:
    image: seataio/seata-server:latest
    hostname: seata-server
    restart: always
    ports:
      - 8091:8091
    environment:
      - SEATA_IP=192.169.3.123
      - SEATA_PORT=8091
      - SEATA_CONFIG_NAME=file:/root/seata-config/registry
    volumes:
      - /opt/docker/seata/config:/root/seata-config
   #   - /app/cloud/seata/logs:/root/logs
    expose:
      - 8091
4. nacos的配置在nacos项目中的README.md文件中有讲解 5. rabbitMQ RocketMQ 的配置在spring-common-middleware项目中有讲解 #### 使用说明 1. 集成spring-cloud的配置中心 2. consul 注册中心和配置中心 3. zookeeper 注册中心和配置中心 4. seata 分布式事务
zookeeper内部容器命令
1. 显示根目录下、文件: ls / 
2. 创建文件 : create config/application,dev/config
3. 删除文件 : deleted config/application,dev/config
4. 查看文件配置内容 : get config/application,dev/config
5. 修改文件配置内容 : set config/application,dev/config.username youshang520i
6. 删除文件配置内容 : deleted config/application,dev/config.username
7. 设置文件配置内容 : create config/application,dev/config.username admin
8. 退出zkCli.sh : quit
seata搭建
1. 初始化nacos配置中心
    将seata clone下来
    https://github.com/seata/seata/tree/1.3.0/script/config-center/nacos
    a. 配置config.txt文件
        特别注意字段:
        service.vgroupMapping.my_test_tx_group=default # 必须要有
        service.default.grouplist=192.168.3.123:8091 
        store.mode=db # 可以选择file或者DB,单机file集群需要使用DB或者其他的
        store.db.datasource=druid
        store.db.dbType=mysql
        store.db.driverClassName=com.mysql.cj.jdbc.Driver
        store.db.url=jdbc:mysql://192.168.3.123:3306/seata?useUnicode=true
        store.db.user=root
        store.db.password=123456
            
    b. 执行当前文件下的nacos-seata.sh 文件
        sh ${SEATAPATH}/script/config-center/nacos/nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -u nacos -w nacos

2. 数据库脚本
    a. 执行当前目录下的sql  https://github.com/seata/seata/blob/1.3.0/script/server/db/mysql.sql
    b. 每个数据库下面也需要添加这个sql https://github.com/seata/seata/blob/1.3.0/script/client/at/db/mysql.sql
3. 配置seata regisrty.conf启动文件
    a. 配置文件配置信息
        registry {
          type = "nacos"
          nacos {
            serverAddr = "192.168.3.123:8848"
            namespace = ""  # 使用默认的 也可以配置在nacos自定义的namespace中
            cluster = "default"  # 集群名称在默认为default
            username = "nacos"
            password = "nacos"
          }
        }
        config {
          type = "nacos"
          nacos {
            serverAddr = "192.168.3.123:8848"
            namespace = ""
            username = "nacos"
            password = "nacos"
          }
        }
        
    b. 在docker-compose中 配置环境变量
        environment:
              - SEATA_IP=192.169.3.123
              - SEATA_PORT=8091
              - SEATA_CONFIG_NAME=file:/root/seata-config/registry
        volumes: # 通过在宿主机配置的文件覆盖容器内部的文件
          - /opt/docker/seata/config:/root/seata-config
4. 运行seata docker-compose
    a. docker-compose up -d
#### 参与贡献 1. Zookeeper操作命令参考地址:https://zookeeper.apache.org/doc/current/zookeeperStarted.html 2. seate官方地址:http://seata.io/ #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)