08-21 中间件 Seata Seata是分布式事务解决方案框架。分布式事务是分布式系统环境下由不同服务通过网络远程协作完成的事务,如用户注册送积分、创建订单减库存、银行转账等。 CAP理论:分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)三项中的两项。在具备P的前提下,C和A不能共存。生产中选择包括AP(放弃一致性,保证可用性和分区容忍性,追求最终一致性)、CP(放弃可用性,保证一致性和分区容错性)、CA(放弃分区容忍性,关系型数据库满足CA)。 BASE理论:是对CAP中AP的扩展,通过牺牲强一致性获得可用性。BASE包括基本可用、软状态和最终一致性,满足BASE理论的事务称为柔性事务。基本可用指故障时允许损失部分可用功能但保证核心功能;软状态允许存在中间状态;最终一致指经过一段时间后所有节点数据达到一致。 Seata Server启动需要创建seata数据库,包含global_table(全局会话数据)、branch_table(分支会话数据)、lock_table(锁数据)、distributed_lock(分布式锁)、vgroup_table(事务组)等核心表,然后使用Docker启动seata-server:2.5.0版本。 13 0 0
04-03 中间件 Zookeeper Zookeeper是开源的分布式协调服务Apache项目,基于观察者模式设计,负责存储和管理数据并通知观察者数据状态变化。特点包括:一个Leader多个Follower组成的集群;半数以上节点存活即可正常服务,适合安装奇数台服务器;全局数据一致;更新请求顺序执行;数据更新原子性;实时性。 Zookeeper数据结构类似Unix文件系统,整体为一棵树,每个节点称为ZNode,默认能存储1MB数据,通过路径唯一标识。应用场景包括统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡。 本地安装可通过Docker方式,创建资源目录、配置zoo.cfg文件、启动容器。配置参数包括tickTime(通信心跳时间)、initLimit(LF初始通信时限)、syncLimit(LF同步通信时限)。集群安装使用Kubernetes StatefulSet,创建PVC和StatefulSet资源。Zookeeper采用选举机制,首次启动时进行Leader选举。 7 0 0
08-11 中间件 RocketMQ RocketMQ是阿里巴巴开源的消息中间件,现为Apache顶级项目。MQ(消息队列)是提供消息生产、存储、消费全过程API的软件系统,主要用途包括限流削峰、异步解耦和数据收集。 常见MQ产品对比:ActiveMQ(Java开发、社区活跃度低)、RabbitMQ(ErLang开发、吞吐量较低)、Kafka(Scala/Java开发、高吞吐率、大数据场景)、RocketMQ(Java开发、经过阿里双11考验、性能稳定性高、自研协议)。MQ常见协议包括JMS、STOMP、AMQP、MQTT。 RocketMQ核心概念:Message(消息最小单位)、Topic(一类消息集合)、Tag(同一主题下区分消息类型)、Queue(存储消息的物理实体)、MessageId/Key(消息标识)。系统架构包括Producer(生产者)、Consumer(消费者)、NameServer(路由注册中心)。NameServer支持Broker动态注册与发现,无状态设计,通过心跳机制(30秒)维护Broker存活,超过120秒无心跳则剔除,采用Pull模型进行路由发现(客户端每30秒拉取一次)。 4 0 0