文章目录
一、同步调用
例如:
#mermaid-svg-DMjF9XQ1VKYd5FjK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-DMjF9XQ1VKYd5FjK .error-icon{fill:#552222;}#mermaid-svg-DMjF9XQ1VKYd5FjK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-DMjF9XQ1VKYd5FjK .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-DMjF9XQ1VKYd5FjK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-DMjF9XQ1VKYd5FjK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-DMjF9XQ1VKYd5FjK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-DMjF9XQ1VKYd5FjK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-DMjF9XQ1VKYd5FjK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-DMjF9XQ1VKYd5FjK .marker.cross{stroke:#333333;}#mermaid-svg-DMjF9XQ1VKYd5FjK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-DMjF9XQ1VKYd5FjK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-DMjF9XQ1VKYd5FjK .cluster-label text{fill:#333;}#mermaid-svg-DMjF9XQ1VKYd5FjK .cluster-label span{color:#333;}#mermaid-svg-DMjF9XQ1VKYd5FjK .label text,#mermaid-svg-DMjF9XQ1VKYd5FjK span{fill:#333;color:#333;}#mermaid-svg-DMjF9XQ1VKYd5FjK .node rect,#mermaid-svg-DMjF9XQ1VKYd5FjK .node circle,#mermaid-svg-DMjF9XQ1VKYd5FjK .node ellipse,#mermaid-svg-DMjF9XQ1VKYd5FjK .node polygon,#mermaid-svg-DMjF9XQ1VKYd5FjK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-DMjF9XQ1VKYd5FjK .node .label{text-align:center;}#mermaid-svg-DMjF9XQ1VKYd5FjK .node.clickable{cursor:pointer;}#mermaid-svg-DMjF9XQ1VKYd5FjK .arrowheadPath{fill:#333333;}#mermaid-svg-DMjF9XQ1VKYd5FjK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-DMjF9XQ1VKYd5FjK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-DMjF9XQ1VKYd5FjK .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-DMjF9XQ1VKYd5FjK .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-DMjF9XQ1VKYd5FjK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-DMjF9XQ1VKYd5FjK .cluster text{fill:#333;}#mermaid-svg-DMjF9XQ1VKYd5FjK .cluster span{color:#333;}#mermaid-svg-DMjF9XQ1VKYd5FjK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-DMjF9XQ1VKYd5FjK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
支付服务
1.用户登录
2.交易服务
3.通知服务
4.积分服务
通过openfeign进行服务之间通信实现商城的支付服务,需要用户登录、交易服务、通知服务、积分服务,四个服务缺一不可。
每一个服务都不能出现问题,一旦出现问题就会影响性能,甚至报错中断。
openfeign同步调用:
- 优势:时效性强,等待结果后返回
- 缺点:拓展性差
- 缺点:性能下降
- 缺点:级联失败问题
二、异步调用
支付服务通过异步的方式调用业务关联度降低,发送消息通知到Broker。
例如:
#mermaid-svg-IlbwHwNs4TipzTwe {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IlbwHwNs4TipzTwe .error-icon{fill:#552222;}#mermaid-svg-IlbwHwNs4TipzTwe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IlbwHwNs4TipzTwe .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-IlbwHwNs4TipzTwe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IlbwHwNs4TipzTwe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IlbwHwNs4TipzTwe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IlbwHwNs4TipzTwe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IlbwHwNs4TipzTwe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IlbwHwNs4TipzTwe .marker.cross{stroke:#333333;}#mermaid-svg-IlbwHwNs4TipzTwe svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IlbwHwNs4TipzTwe .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-IlbwHwNs4TipzTwe .cluster-label text{fill:#333;}#mermaid-svg-IlbwHwNs4TipzTwe .cluster-label span{color:#333;}#mermaid-svg-IlbwHwNs4TipzTwe .label text,#mermaid-svg-IlbwHwNs4TipzTwe span{fill:#333;color:#333;}#mermaid-svg-IlbwHwNs4TipzTwe .node rect,#mermaid-svg-IlbwHwNs4TipzTwe .node circle,#mermaid-svg-IlbwHwNs4TipzTwe .node ellipse,#mermaid-svg-IlbwHwNs4TipzTwe .node polygon,#mermaid-svg-IlbwHwNs4TipzTwe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IlbwHwNs4TipzTwe .node .label{text-align:center;}#mermaid-svg-IlbwHwNs4TipzTwe .node.clickable{cursor:pointer;}#mermaid-svg-IlbwHwNs4TipzTwe .arrowheadPath{fill:#333333;}#mermaid-svg-IlbwHwNs4TipzTwe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-IlbwHwNs4TipzTwe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-IlbwHwNs4TipzTwe .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-IlbwHwNs4TipzTwe .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-IlbwHwNs4TipzTwe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-IlbwHwNs4TipzTwe .cluster text{fill:#333;}#mermaid-svg-IlbwHwNs4TipzTwe .cluster span{color:#333;}#mermaid-svg-IlbwHwNs4TipzTwe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-IlbwHwNs4TipzTwe :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
发送消息通知
发送消息通知
支付服务
1.用户登录
2.交易服务
消息代理
通知服务
积分服务
优势:
- 解耦,拓展性强
- 无需等待,性能好
- 故障隔离
- 缓存消息,流量削峰填谷 缺点:
- 实时性差
- 不确定下游业务是否执行成功
- 业务安全依赖于Broker(消息代理)的可靠性
三、MQ介绍
MQ(消息队列),存放消息的队列,异步调用中的Broker,先进先出(FIFO)。
Kafka每秒吞吐量达百万级;
RockertMQ每秒吞吐量达十万级;
RabbitMQ每秒吞吐量达十万级左右,但是它消息延迟仅仅是微秒的,可靠性高;
考虑大部分情况下公司是达不到每秒吞吐量百万级的,所以选择RabbitMQ。
RabbitMQ官网
1.安装RabbitMQ
docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq --hostname=rabbitmqhostone rabbitmq
下载rabbitmq并且启动成功之后,可以直接访问http://localhost:15672,用户名密码都是admin
2.介绍RabbitMQ
RabbitMQ整体架构及核心概念:
- publisher:消息发送者
- exchange:交换机,负责路由消息
- queue:队列,存储消息
- consumer:消息的消费者
- virtual-host:虚拟主机,起到数据隔离的作用
3.页面简单使用
- 登录
- 创建用户
- 创建exchange,我创建的是test
- 创建queue
- 将exchange和queue关联起来,关联可以在queues中操作,也可以在exchanges中操作
- 测试发送消息
- 进入exchange搜索我们创建的exchange
- 点击Name,可以进入详情页,查看到绑定的queue,可以发送消息
- 发送消息之后可以看到有发送的记录数据
- 进去queue页面可以看到通过exchange发送消息的队列中有了1条消息
- 点击Name进入详情,可以查看消息内容
版权归原作者 陈年小趴菜 所有, 如有侵权,请联系我们删除。