# 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/)