打开

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

subtitle
文木 2021-03-02 05:44

01、学习中间件的方式和技巧

1:理解中间件在项目架构中的作用,以及各中间件的底层实现。 2:可以使用一些类比的生活概念去理解中间件, 3:使用一些流程图或者脑图的方式去梳理各个中间件在架构中的作用 4:尝试用java技术去实现中间件的远离 5:静下来去思考中间件在项目中设计的和使用的原因 6:如果找到对应的替代总结方案 7:尝试编写博文总结类同中间件技术的对比和使用场景。 8:学会查看中间件的源码以及开开源项目和博文。

02、学习目标

  • 什么是消息中间件

  • 什么是协议

  • 什么是持久化

  • 消息分发

  • 消息的高可用

  • 消息的集群

  • 消息的容错

  • 消息的冗余

03、什么是消息中间件

在实际的项目中,大部分的企业项目开发中,在早期都采用的是单体的架构模式,如下图:

打开网易新闻 查看更多图片

04、单体架构

在企业开发的中,大部分的初期架构都采用的是单体架构的模式进行架构,而这种架构的典型的特点:就是把所有的业务和模块,源代码,静态资源文件等都放在一个一工程中,如果其中的一个模块升级或者迭代发生一个很小变动都会重新编译和重新部署项目。 这种的架构存在的问题就是: 1:耦合度太高 2:运维的成本过高 3:不易维护 4:服务器的成本高 5:以及升级架构的复杂度也会增大 这样就有后续的分布式架构系统。如下

05、分布式架构

和单体架构不同的是,单体架构是一个请求发起jvm调度线程(确切的是tomcat线程池)分配线程Thread来处理请求直到释放,而分布式是系统是:一个请求是由多个系统共同来协同完成,jvm和环境都可能是独立。如果生活中的比喻的话,单体架构就想建设一个小房子很快就能够搞定,如果你要建设一个鸟巢或者大型的建筑,你就必须是各个环节的协同和分布,这样目的也是项目发展都后期的时候要去部署和思考的问题。我们也不能看出来:分布式架构系统存在的特点和问题如下:

存在问题1:学习成本高,技术栈过多 2:运维成本和服务器成本增高 3:人员的成本也会增高 4:项目的负载度也会上升 5:面临的错误和容错性也会成倍增加 6:占用的服务器端口和通讯的选择的成本高 7:安全性的考虑和因素逼迫可能选择RMI/MQ相关的服务器端通讯。

好处1:服务系统的独立,占用的服务器资源减少和占用的硬件成本减少, 确切的说是:可以合理的分配服务资源,不造成服务器资源的浪费 2:系统的独立维护和部署,耦合度降低,可插拔性。 3:系统的架构和技术栈的选择可以变的灵活(而不是单纯的选择java) 4:弹性的部署,不会造成平台因部署造成的瘫痪和停服的状态。

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

上图中可以看出来,消息中间件的是 1:利用可靠的消息传递机制进行系统和系统直接的通讯 2:通过提供消息传递和消息的排队机制,它可以在分布式系统环境下扩展进程间的通讯。

07、消息中间件应用的场景

1:跨系统数据传递 2:高并发的流量削峰 3:数据的分发和异步处理 4:大数据分析与传递 5:分布式事务 比如你有一个数据要进行迁移或者请求并发过多的时候,比如你有10W的并发请求下订单,我们可以在这些订单入库之前,我们可以把订单请求堆积到消息队列中,让它稳健可靠的入库和执行。

08、常见的消息中间件

ActiveMQ、RabbitMQ、Kafka、RocketMQ等。

09、如何认识消息中间件的本质及设计

它是一种接受数据,接受请求、存储数据、发送数据等功能的技术服务。

MQ消息队列:负责数据的传接受,存储和传递,所以性能要过于普通服务和技术。

MQ设计你理念和本质都不难,就一个生产着生产消息,找个地方存消息,然后消费者消费消息,但是设计过程中如何消息 1:生产如何把数据传递给MQ 2:MQ中间件如何把数据存储得 3:又是如何把消息分发给消费者端 4:生产过程中出现异常怎么处理。 5:如何保证消费者可靠消费 6:如果保证消息不丢失,也就是进行持久化处理。等等 总结上述总共分为5个部分: 1:消息协议 2:消息的持久化机制 3:消息的分发机制 4:消息高可用设计 5:消息高可靠设计

特别声明:本文为网易自媒体平台“网易号”作者上传并发布,仅代表该作者观点。网易仅提供信息发布平台。
8赞
大家都在看打开应用 查看全部
网易热搜每30分钟更新
打开应用 查看全部
打开