Dubbo入门到精通学习笔记(七):基于Dubbo的分布式系统架构介绍(以第三方支付系统架构为例)、消息中间件的作用介绍

版权声明:本文为作者原创,转载请注明出处,联系qq:32248827 https://blog.csdn.net/dataiyangu/article/details/88652536

架构简单介绍

结合应用架构,实现分布式系统架构所需的第三方应用和中间件: (1) 消息队列 ----------- ActiveMQ
(2) 分布式缓存 --------- Redis
(3) 分布式文件系统 ---- FastDFS
(4) 反向代理服务器 ---- Nginx、Apache
(5) 集群与负载均衡 ---- Keepalived、HAproxy、LVS
(6) 应用服务器 -------- JBoss、Tomcat
(7) 数据库 ------------- MySQL、Oracle、DB2
(8) 数据库分布式处理系统(集群、分库、分表) ---- Cobar (9) 容器引擎 ----------- Docker
(10) 系统日志管理 ------ Logstash
(11) 分布式系统监控 ---- Zabbix
(12) 其它 --------------- CA证书、密码键盘、防篡改系统…
高可用、高性能、可扩展、便于运维管理、符合系统检测要求…
在这里插入图片描述
Dubbo分布式服务框架实战
实现简易版的第三方支付系统(真实应用场景是技术教学的基础,重点体现应用架构和系统架构)

  • 结合简易版支付系统:
    讲解分布式系统的工程结构划分、安装部署、功能使用等(不讲解编码过程,直接提供系统源码) 讲解Dubbo分布式服务子系统的划分方式和划分原则 讲解Dubbo分布式服务接口的设计方式与设计原则 讲解Dubbo分布式服务框架的高级配置、服务治理 讲解如何基于消息最终一致性方式处理分布式事务
  • 基于简易版支付系统,实现高可用系统架构:
    分布式应用系统的架构技术选型、应用部署规划
    Zookeeper注册中心集群的安装、配置、使用
    ActiveMQ消息队列集群的安装、配置、使用
    Redis分布式缓存集群的安装、配置、使用
    FastDFS分布式文件系统的安装、配置、使用
    Nginx+Keepalived负载均衡集群的安装、配置、使用
    Tomcat集群的配置
    MySQL数据库集群、分库分表(垂直拆分、水平拆分)
    Dubbo扩展:Dubbox的新特性介绍、实战应用讲解

消息中间件在分布式系统中的作用介绍

消息中间件的定义

Message-oriented middleware (MOM) is software infrastructure focused on sending and receiving messages between distributed systems.
消息中间件是在分布式系统中完成消息的发送和接收的基础软件

消息中间件的作用

消息中间件可利用高效可靠的消息传递机制进行平台无关的数据交流,
并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息 排队模型,可以在分布式环境下扩展进程间的通信。
通过消息中间件,应用程序或组件之间可以进行可靠的异步通讯,从而 降低系统之间的耦合度,提高系统的可扩展性和可用性。

终结:解耦、异步
在这里插入图片描述

应用场景

通过使用消息中间件对Dubbo服务间的调用进行解耦
在这里插入图片描述
通过图一知道各个业务之间是有依赖关系的。
图二没有消息中间件,每个业务都依赖于交易服服这个业务,当成本服务出现问题的时候,后面的业务都会受到影响不能进行。
图三中引用的消息中间件,交易服务向消息中间件中发送消息,成本服务等通过消息中间件投递过来的消息,完成自己的任务,假如成本服务因为内部的错误执行失败,消息中间件还会重试重新发送消息,即使一直执行失败,也不会一直发送,会把数据保存起来,防止数据的丢失,每个服务之间都是独立的,没有依赖性,和交易服务没有直接的关系,从而解耦,任务一的失败也不会影响到业务二,从而异步。

消息中间件还有高并发和排序的功能,比如春节买票的软件,通过消息中间件知道谁先进来买票,谁后进来买票。

JMS(Java Message Service)

JMS是JavaEE中的一个关于消息的规范,是一套与具体平台无关的API。

  1. JMS元素
    JMS提供者------------------连接面向消息中旬件的, JMS接口的一个实现。
    JMS客户------------------生产或消费消息的基于Java的立用程序或対象。
    JMS生产者------------------差UN构建并发送消息的JMS客户。
    JMS消费者------------------接收消息的JMS客户。
    JMS消息------------------可以在JMS客戸之囘传递的数据的対象
    JMS队列------------------ 一个容纳那些别发送的等待阅读的消息的区域
    JMS主題------------------一个支持发送消息给多个订阅者的机制。
  2. JMS立用程序接口
    ConnectionFactory (连接工厂)------------------用户用来创建到JMS提供者的连接的被管对象。
    Connection (连接)------------------ 连接代表了应用程序和消息服努器之间的通信链路。
    Destination丨目标)------------------消息发布和接收的地点,或者是队列,或者是主题。
    MessageProducer (消息生产者)------------------由会话创建的对象,用于发送消息到自标。 MessageConsumer (消息消费者)------------------由会话创建的对象,用于接收发送目标的消息。
    Message (消息)------------------是在消费者和生产者之间传送的对象。
    Session (会话)------------------表示一个单线程的上下文,用于发送和接收消息。

JMS消息模型

  1. 点对点或队列模型
    在这里插入图片描述
    JMS 点对点队列模型特点:
    1、消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。
    2、消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 比如上面的m1不是被应用四消费,就是被应用3消费。
    3、Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

  2. 发布者/订阅者模型
    在这里插入图片描述
    JMS点对点队列模型特点

JMS 发布/订阅模型特点: 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。
发布到topic的消息会被所有订阅者消费。

实现了JMS规范的消息中间件产品

ActiveMQ、RocketMQ、RabbitMQ、HornetQ … MQ
对比与选择

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/88652536