本周继续进行开发工具的选择与学习,基本了解了以下技术栈的部署应用;
一、Seata:
Seata(Simple Extensible Autonomous Transaction Architecture)是一款开源的分布式事务解决方案,旨在提供高性能和简单易用的分布式事务服务。它为企业提供了简单、可扩展和自治的事务管理服务,解决了在分布式环境下数据一致性的问题。
核心概念
-
分布式事务:在分布式系统中,一个业务操作可能需要多个服务或数据库协同完成,这就构成了分布式事务。Seata旨在保证这些分布式事务的原子性、一致性、隔离性和持久性(ACID属性)。
-
Seata架构:
- Global Transaction Manager(全局事务管理器):负责协调和管理分布式事务,确保全局事务的一致性。
- Registry Service(注册中心服务):负责存储和管理全局事务的状态信息,提供事务状态的查询和更新功能。
- Branch Transaction(分支事务):分布式事务中的每个参与者,负责本地事务的执行和管理。
-
事务模式:
- AT模式:这是阿里首推的模式,Seata会拦截SQL语句,对业务无侵入,只需关注自己的业务SQL。
- TCC模式:分为Try、Confirm和Cancel三个阶段。Try阶段尝试执行,Confirm阶段确认提交,Cancel阶段回滚。
- SAGA模式:一种状态补偿型的事务模式,通过事件或者指令触发一系列有序操作,实现业务目标。
- XA模式:两阶段提交协议的分布式事务模式,由事务协调器来协调参与者的行为。
-
角色划分:
- Transaction Coordinator(TC,事务协调器):维护全局和分支事务的状态,驱动全局事务提交或回滚。
- Transaction Manager(TM,事务管理器):定义全局事务的范围,负责全局事务的开启、提交或回滚。
- Resource Manager(RM,资源管理器):管理分支事务处理的资源,与TC通信以注册分支事务并报告状态。
-
使用场景:Seata适用于微服务架构、高并发场景、跨数据库操作等需要分布式事务管理的场景。
-
集成与兼容性:Seata提供了与主流开发框架和中间件的集成,如Spring Boot、Dubbo、RocketMQ等,具有良好的生态兼容性。
部署应用:
- 配置数据库连接信息,包括URL、用户名和密码;
- 配置Nacos注册中心;
启动seata-server.bat;
二、Redis:
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
Redis支持多种部署模式,以满足不同场景的需求:
- 单机模式:最简单的部署方式,适用于数据量较小、业务压力较小的场景。
- 主从模式:采用一台主节点进行写操作,然后将数据复制到从节点。从节点只进行读操作,以提高系统的可用性和读性能。
- 哨兵模式:在主从复制的基础上增加了哨兵节点,用于监控主节点的状态。当主节点宕机时,哨兵会自动将一个从节点切换成主节点,实现高可用性。
- 集群模式:将数据分散存储在多个Redis节点上,每个节点都包含相同数量的数据。集群模式可以提高系统的可扩展性和可靠性,适用于大规模的业务场景。
安装Redis后通过以下命令运行启动:
redis-server.exe redis.windows.conf
三、git:本项目为小组合作开发,为便于代码的频繁更新,我们采用git协同开发的方式;因此本周我还安装GitBash并学习了git的常用命令:
- git init:初始化一个git仓库
- git clone:clone一个git仓库
- git config:配置信息
- git add:添加文件到缓存命令
- git status:查看文件的状态命令
- git diff:查看更新的详细信息命令
- git commit:提交命令
- git reset HEAD:取消缓存命令
- git rm:删除命令
- git mv:移动或重命名命令
- git remote add:添加远程仓库
- git remote:查看当前的远程仓库
- git fetch、git pull:提取远程仓仓库
- git push:推送到远程仓库
- git remote rm:删除远程仓库
参考博客http://t.csdnimg.cn/nZtQ7