随笔分类 - 分布式
摘要:1 下单业务时序图 调用下单服务:远程RPC调用订单服务 预订单:用户不可见 扣减库存:远程RPC调用库存服务 扣减优惠券:远程RPC调用优惠券服务 扣减用户预测:远程RPC调用用户服务 确认订单:将预订单状态改为用户可见 确认订单成功-->生成订单成功-->返回下单结果 确认订单成功-->MQ监听
阅读全文
摘要:1 数据库 1)优惠券表 | Field | Type | Comment | | | | | | coupon_id | bigint(50) NOT NULL | 优惠券ID | | coupon_price | decimal(10,2) NULL | 优惠券金额 | | user_id |
阅读全文
摘要:1 前置条件 安装依赖包 下载dubbo-spring-boot-starter依赖包 将dubbo-spring-boot-starter安装到本地仓库 mvn install -Dmaven.skip.test=true ~~==注意==~~ ~~springboot整合dubbo、spring
阅读全文
摘要:+zk cource:https://www.cnblogs.com/yppah/p/16815562.html +rocketmq project:https://www.cnblogs.com/yppah/p/16870239.html
阅读全文
摘要:1 前置条件 相关依赖包:下载rocketmq-spring项目 将rocketmq-spring安装到本地仓库 mvn install -Dmaven.skip.test=true 2 消息生产者 创建空项目shop-project 在空项目shop-project下创建空的maven模块spri
阅读全文
摘要:1 案例介绍 1.1 业务分析 模拟电商网站购物场景中的【下单】和【支付】业务 1.1.1 下单 用户请求订单系统下单 订单系统通过RPC调用订单服务下单 订单服务调用优惠券服务,扣减优惠券 订单服务调用调用库存服务,校验并扣减库存 订单服务调用用户服务,扣减用户余额 订单服务完成确认订单 1.1.
阅读全文
摘要:0 初始项目 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.4.0</version> </dependency> 消息发送者步骤分析:
阅读全文
摘要:1 集群中各角色介绍 Producer:消息的发送者;举例:发信者 Consumer:消息接收者;举例:收信者 Broker:暂存和传输消息;举例:邮局 一个Broker主节点可以配备多个Broker从节点 主节点负责写操作,面向生产者 从节点负责读操作(查询),面向消费者 主从区分:Broker的
阅读全文
摘要:1 准备工作 RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。 下载地址:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.
阅读全文
摘要:1 为什么要用MQ ? 消息队列是一种“先进先出”的数据结构 其应用场景主要包含以下3个方面 应用解耦 系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验
阅读全文
摘要:注意端口开放 1 ZK集群Leader选举 Leader选举: Serverid:服务器ID 比如有三台服务器,编号分别是1,2,3。 编号越大在选择算法中的权重越大。 Zxid:数据ID 服务器中存放的最大数据ID.值越大说明数据 越新, 在选举算法中数据越新权重越大。 在Leader选举的过程中
阅读全文
摘要:1 分布式锁 1.1 概念 1.2 原理 2 案例:模拟12306售票 2.1 Curator实现分布式锁API 在Curator中有五种锁方案: InterProcessSemaphoreMutex:分布式排它锁(非可重入锁) InterProcessMutex:分布式可重入排它锁 InterPr
阅读全文
摘要:# 1 概念  > 1 数据模型 2 命令操作 2.1 服务端 2.2 客户端 启动客户端 注意:连接本机时可以省略后边两部分,直接./zkCli.sh即可 命令quit退
阅读全文
摘要:1 集群容错 官方文档:集群容错 | Apache Dubbo 集群容错模式: Failover Cluster:失败重试。默认值。当出现失败,重试其它服务器 ,默认重试2次,使用 retries 配置。一般用于读操作 Failfast Cluster :快速失败,只发起一次调用,失败立即报错。通常
阅读全文
摘要:1 多版本 灰度发布:当出现新功能时,会让一部分用户先使用新功能,用户反馈没问题时,再将所有用户迁移到新功能。 dubbo 中使用version 属性来设置和调用同一个接口的不同版本 package com.yppah.service.impl; import com.yppah.pojo.User
阅读全文
摘要:1 地址缓存 2 超时 2.1 2.2 package com.yppah.service.impl; import com.yppah.pojo.User; import com.yppah.service.UserService; import org.apache.dubbo.config.a
阅读全文
摘要:1 理论 消费者A和消费者B分别部署在两台机器上 一般将User类定义为独立模块,A模块和B模块都通过maven依赖于该模块即可 dubbo 内部已经将序列化和反序列化的过程内部封装了 只需要在定义pojo类时实现Serializable接口即可 一般会定义一个公共的pojo模块,让生产者和消费者都
阅读全文
摘要:1 dubbo-admin简介 dubbo官方的monitor不太好用,apache的dubbo-admin项目具备monitor功能,在此学习一下 dubbo-admin 管理平台,是图形化的服务管理页面 从注册中心中获取到所有的提供者 / 消费者进行配置管理 路由规则、动态配置、服务降级、访问控
阅读全文