0%

创建清华源

vim /etc/yum.repos.d/gitlab-ce.repo

1
2
3
4
5
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

安装

yum makecache && yum install -y gitlab-ce

阅读全文 »

seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

server端

点击下载

mysql-sql

全局事务会话信息由3块内容构成,全局事务–>分支事务–>全局锁,对应表global_table、branch_table、lock_table

阅读全文 »

LCN

Lock(锁定事务单元)、Confirm(确认事务)、Notify(通知事务)

TX-LCN定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。

TM:事务管理器

TC:事务客户端,相当于RM(资源管理器)

阅读全文 »

2PC

第一阶段(提交事务)

  • 事务询问

    TM向所有的RM询问是否可以执行提交操作,并开始等待RM的响应。

  • 预执行事务

    RM预提交当前所有事务操作,并将相关信息写入Undo和Redo日志

  • 事务反馈

    RM提交事务后响应TM的询问。如果所有RM都提交成功,则返回一个“同意”消息;如果任一RM提交失败,则返回TM“终止”消息。

    阅读全文 »

为什么要使用MQ?

因为项目比较大,做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了mq

解耦:系统耦合度降低,没有强依赖关系

异步:不需要同步执行的远程调用可以有效提高响应时间

削峰:请求达到峰值后,后端service还可以保持固定消费速率消费,不会被压垮

阅读全文 »

Maven依赖

1
2
3
4
5
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.7.0</version>
</dependency>

客户端连接工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class ZkUtil {
private static volatile ZooKeeper zk;
/**
* zk服务端地址,/可以添加上级节点目录,之后客户端的所有操作都基于此目录
*/
private static String connectAddr = "192.168.142.121:2181,192.168.142.122:2181,192.168.142.123:2181,192.168.142.124:2181/myLock";
private static CountDownLatch countDownLatch = new CountDownLatch(1);
private static DefaultWatch watch = new DefaultWatch();
public static ZooKeeper getZk(){
if(zk == null){
synchronized (ZooKeeper.class){
if(zk == null){
try {
zk = new ZooKeeper(connectAddr, 3000, watch);
watch.setCountDownLatch(countDownLatch);
countDownLatch.await();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return zk;
}
}
阅读全文 »

一、消息中间件的作用

  • 应用解耦

    AB应用不在互相依赖

  • 流量削峰

    流量达到高峰的时候,通常使用限流算法来控制流量涌入系统,避免系统被击瘫,但是这种方式损失了一部分请求

    此时可以使用消息中间件来缓冲大量的请求,匀速消费,当消息队列中堆积消息过多时,我们可以动态上线增加消费端,来保证不丢失重要请求。

  • 大数据处理

    消息中间件可以把各个模块中产生的管理员操作日志、用户行为、系统状态等数据文件作为消息收集到主题中

    数据使用方可以订阅自己感兴趣的数据内容互不影响,进行消费

  • 异构系统

    跨语言

二、消息收发模型

参考阿里云官方文档图片
阅读全文 »