当前位置: 首页 > news >正文

01_中间件

中间件

  • 一般都用到分布式项目中
  • 是一种接收数据,接收请求,存储数据,发送数据等功能的技术服务

路线

在这里插入图片描述

在这里插入图片描述

基于消息中间件的分布式系统的架构

在这里插入图片描述

消息队列协议

网络协议的三要素

1.语法。语法是用户数据与控制信息的结构与格式以及数据出现的顺序。

2.语义。语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。

3.时序。时序是对事件发生顺序的详细说明。

而消息中问件采用的并不是http协议,而常见的消息中问件协议有:OpenWire、AMQP、MQTT、Kafka,OpenMessage协议.

在这里插入图片描述

AMQP协议

AMQP:(全称: Advanced Message Queuing Protocol)是高级消息队列协议。由摩根大通集团联合其他公司共同设计。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。

特性:

1:分布式事务支持。

2:消息的持久化支持。

3:高性能和高可靠的消息处理优势。

消息队列持久化

简单来说就是将数据存入磁盘,而不是存在内存中随服务器重启断开而消失,使数据能够永久保存。

消息的分发策略

MQ消息队列有如下几个角色

1:生产者

2:存储消息

3:消费者

那么生产者生成消息以后,MQ进行存储,消费者是如何获取消息的呢?一般获取数据的方式无外乎推(push)或者拉(pull)两种方式,典型的git就有推拉机制,我们发送的http请求就是一种典型的拉取数据库数据返回的过程。而消息队列MQ是一种推送的过程,而这些推机制会适用到很多的业务场景也有很多对应推机制策略。

消息队列高可用高可靠

所谓高可用:是指产品在规定的条件和规定的时刻或时间内处于可执行规定功能状态的能力。
当业务呈增加时,请求也过大,一台消息中间件服务器的会触及硬件(CPU,内存,磁盘)的极限,一台消息服务器你已经无法满足业务的需求,所以消息中间件必须支持集群部署。来达到高可用的目的。

反正总归三句话:

  1. 要么消息共享.
  2. 要么消息同步
  3. 要么元数据共享

什么是高可靠机制

所谓高可用是指:是指系统可以无故障低持续运行,比如一个系统突然崩溃,报错,异常等等并不影响线上业务的正常运行,出错的几率极低,就称之为:高可靠。

在高并发的业务场景中,如果不能保证系统的高可靠,那造成的隐患和损失是非常严重的。如何保证中间件消息的可靠性呢?可以从两个方面考虑:

1:消息的传输:通过协议来保证系统间数据解析的正确性。

2:消息的存储可靠:通过持久化来保证消息的可靠性。

相关文章:

  • 记录QUME上模拟ARM运行环境(内核 2.6.30)
  • JavaWeb开发之——MySQL数据模型(04)
  • c语言分层理解(c语言字符串+内存库函数)
  • Es6的promise和async
  • Java项目本地部署宝塔搭建实战java中小医院管理系统源码
  • java 低耦合观察者模式
  • 七、OCR-PaddlePaddle训练源码解析系列-文字识别
  • 数据结构与算法之非递归遍历二叉树
  • Unity技术手册 - 创建物体有几种方式?
  • threejs中各种的对像详细介绍
  • 代码优化~关注核心逻辑,封装常用规则
  • Android车载开发基础学习——蓝牙通信是如何实现的?
  • 智慧政务、数字化优先与数字机器人,政务领域正在开启“政务新视界”
  • DES算法是对称算法吗,能否通过在线工具进行DES解密?
  • 【车间调度】基于GA/PSO/SA/ACO/TS优化算法的车间调度比较(Matlab代码实现)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • angular组件开发
  • CSS相对定位
  • gitlab-ci配置详解(一)
  • gops —— Go 程序诊断分析工具
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Odoo domain写法及运用
  • Python十分钟制作属于你自己的个性logo
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • vue.js框架原理浅析
  • 工作中总结前端开发流程--vue项目
  • 类orAPI - 收藏集 - 掘金
  • 排序算法学习笔记
  • 前嗅ForeSpider采集配置界面介绍
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用Gradle第一次构建Java程序
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 延迟脚本的方式
  • nb
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • 通过调用文摘列表API获取文摘
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (windows2012共享文件夹和防火墙设置
  • (安卓)跳转应用市场APP详情页的方式
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)Eureka服务搭建,服务注册,服务发现
  • (分布式缓存)Redis持久化
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET 中 GetProcess 相关方法的性能