1. RabbitMQ
1.1 简单模式
1.2 工作模式
合理分发需要做到
- 手动ACK
- qos=1
消息持久化
- 队列持久化
- 消息持久化
发布和订阅模式
消息群发
fanout交换机
1.4 路由模式
路由键匹配路由消息
direct 交换机
1.5 主题模式
关键词格式: aa.bb.cc.dd、 …cc.dd、 #.dd
topic 交换机
1.6 RPC模式
2. RocketMQ
- 延时消息
- 顺序消息
- 事物消息, 高可靠消息
区别
这几种消息方式的区别
消息服务的使用场景
- 解耦
- 流量削峰
- 异步调用
项目中使用消息
- bus消息总线, 使用消息服务来传递配置刷新指令
- sleuth+zipkin链路跟踪, 各模块吧日志发送到消息服务, zipkin接收消息进行分析处理
- 订单流量削峰
- RocketMQ实现可靠消息最终一致性事物
分布式事物Seata
Seata AT
- 全自动事物方案
- 对业务无入侵
- 只需要添加配置就可以实现
- 启动Seata server
- 添加三个配置:
application.yml
registry.conf 配置
file.conf - 创建数据源代理
- 第一个模块添加@GlobalTransacational全局事物控制
Seata TCC
- 需要自己编写事物处理代码
- 对业务有入侵
- 实现步骤
- 启动Seata server
- 添加三个配置
application.yml 配置服务注册
registry.conf 配置
file.conf - 添加TccAction接口和实现, 实现三个TCC三个操作方法
- 修改业务, 调用TCC第一阶段方法
- 第一个模块添加@GlobalTransacational全局事物控制
可靠消息最终一致性
- 发送半消息
- 执行本地事物
- 事物成功,完成分布式事物控制
- 事物失败,回滚消息
消费者处理消息必须成功,如果失败会一致重试(一共18次,还是失败则需要人工处理)
Elasticsearch
-
全文检索引擎, NoSql数据库
-
倒排索引: 通过文档内容(关键词), 查找文档, 获取文档数据
先有关键词,通过关键词找到文档 -
核心概念
- 索引
- 分片
- 副本
- 映射(字段,类型,分词器)
- 文档
- 字段
- 分类(淘汰)
-
Spring data elasticsearch
- ElasticsearchRepository: 直接继承这个接口,有方法(或者自定义方法,需要根据方法命名规则)
- Criteria / CriteriaQuery / SearchOperations
Criteria : 构建搜索对象
CriteriaQuery : 封装Criteria 构建查询对象
SearchOperations: 封装CriteriaQuery 进行搜索
Kubernetes(K8S)
- Pod
- 标签
- 存活探针
- 控制器
- ReplicationController
- ReplicaSet
- DaemonSet
- Job
- CronJob
- Deployment
- 创建ReplicaSet对象,在通过ReplicaSet部署容器(不直接用ReplicaSet)
- 好处: 自动滚动升级
- Service
- 不变的访问地址
- Endpoints端点
- 对外暴露Service
- NodePort
- Load Balance
- Lngress
- 数据挂载
- Persistent Volume 持久数据卷(相当于实现类)
- Persistent Volume Claim 持久卷声明(相当去接口)
- PV 和 PVC 靠条件匹配自动关联
- 参数,环境变量
- command --覆盖docker的ENTRYPOINT
- args --覆盖docker的CMD
- env
- ConfigMap