Raincat/README.md
2018-01-04 11:22:54 +08:00

108 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

happylifeplat-transaction
================
碧桂园旺生活平台强一致性分布式事务,是基于二阶段提交+本地事务补偿机制来实现。[原理介绍](http://www.hollischuang.com/archives/681)
基于java语言来开发JDK1.8支持dubbo,motan,springcloud进行分布式事务。
##### 因为文件名太长大家在拉取代码的时候执git命令git config --global core.longpaths true
# Features
* **框架特性**
* 支持dubbo,motan,springcloud,等rpc框架进行分布式事务。
* 事务发起者参与者与协调者底层基于netty长连接通信,稳定高效。
* 协调者采用eureka做注册中心支持集群模式。
* 采用Aspect AOP 切面思想与Spring无缝集成。
* 配置简单,集成简单,源码简洁,稳定性高,已在生产环境使用。
* 内置经典的分布式事务场景demo工程并有swagger-ui可视化界面可以快速体验。
* ***事务角色***
* 事务发起者(可理解为消费者 如dubbo的消费者,springcloud的调用方,发起分布式事务
* 事务参与者(可理解为提供者 如dubbo的提供者,springcloud的rest服务提供者),参与事务发起者的事务
* 事务协调者tx-manager协调分布式事务的提交回滚等。
* ***技术方案***
* 协调者tx-manager采用eureka作为注册中心集群配置达到服务的高可用采用redis集群来分布式存储事务数据, springboot 提供rest服务采用netty与参与者发起者进行长连接通信。
* 发起者与协调者采用Aspect AOP 切面思想SPI多线程异步回调线程池netty通信等技术。
* ***SPI扩展***
* 本地事务恢复支持redismogondbzookeeperfilemysql等关系型数据库
* 本地事务序列化保存支持javahessiankryoprotostuff
* netty通信序列化方式支持 hessiankryoprotostuff
# Design
### [架构设计](https://github.com/yu199195/happylifeplat-transaction/wiki/design)
# Configuration
### [配置详解](https://github.com/yu199195/happylifeplat-transaction/wiki/configuration%EF%BC%88%E9%85%8D%E7%BD%AE%E8%AF%A6%E8%A7%A3%EF%BC%89)
# Prerequisite
* #### JDK 1.8+
* #### Maven 3.2.x
* #### Git
* #### RPC framework dubbo or motan or springcloud。
# Quick Start
* ### Clone & Build
```
> git clone https://github.com/yu199195/happylifeplat-transaction.git
> cd happylifeplat-transaction
> mvn -DskipTests clean install -U
```
### [快速体验(dubbo)](https://github.com/yu199195/happylifeplat-transaction/wiki/quick-start-%EF%BC%88dubbo%EF%BC%89)
### [快速体验(springcloud)](https://github.com/yu199195/happylifeplat-transaction/wiki/quick-start-%EF%BC%88springcloud%EF%BC%89)
# User Guide
### [dubbo 用户](https://github.com/yu199195/happylifeplat-transaction/wiki/dubbo%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97)
### [springcloud 用户](https://github.com/yu199195/happylifeplat-transaction/wiki/springcloud%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97)
# FAQ
* ### 为什么我下载的代码后用idea打开没有相应的get set 方法呢?
##### 答因为框架使用了Lombok包它是在编译的时期自动生成get set方法并不影响运行如果觉得提示错误难受请自行下载lombok包插件[lombok官网](http://projectlombok.org/)
* ### 为什么我运行demo工程找不到applicationContent.xml呢
##### 答:请设置项目的资源文件夹。
# Support
* ### 如有任何问题欢迎加入QQ群进行讨论
![](https://yu199195.github.io/images/qq.png)
# Contribution