轻松理解IOC、RPC、SOA、集群、分布式、kafka相关概念

1、理解Spring IOC(控制反转/Inversion of Control)

控制反转可以理解成Spring框架的一个核心设计思想,既然谈到Spring框架,那就得先说明一下框架。

什么是框架?框架可以理解成由别人包装好的一系列工具,你拿过来就能用。就好比买房子时,你需要选择一套你满意的户型,在这个户型的基础上,你再去买家具之类的去装修你的房子。在这里,框架就好比户型,由别人规定好的,你只要选择你想用的那个框架,然后拿过来用即可。

为什么使用框架?还拿上面的房子的例子来说,各个售楼部的几种户型都是经过专业设计师设计的,结合多方面因素定下来的。我们没有那么多的专业知识,自己设计自己房子的户型相对来说也不太实际,因此为什么使用框架这个问题就类似于买房为什么不自己设计户型,而选择别人设计好的户型。因为方便,因为效率问题。设计户型他们更专业,更合理,我们直接用即可。

Spring框架正式因为Java应用开发的复杂性而创建的,大程度减少了Java应用开发工作量,同时降低应用的维护成本。

Spring IOC将原本由手动new的实例对象,交由Spring框架创建。传统的应用程序都是我们在类内部主动创建依赖对象,导致类与类之间高耦合,难于测试。有了IOC容器后,把创建和查找依赖的控制权交给了容器,由容器进行控制。IOC控制反转称之为“思想”,体现在发生了“主从换位”的变化。

2、理解RPC(远程过程调用/Remote Procedure Call)

远程过程调用区别于本地调用,远程过程调用针对于存在调用关系的两个服务处于不同的服务器,因此,调用时首先需要建立socket连接,建立连接后,进行信息传递时涉及到序列化和反序列化,而建立socket连接的速度与序列化、反序列化的效率成为RPC性能的衡量标准。

3、理解SOA(面向服务架构/服务治理/Service Oriented Architecture)

SOA致力于解决多服务凌乱问题以及复杂的数据服务(一般用于大型项目)。随着项目复杂程度的提高,服务器类型一般由集成服务器转向分布式服务器,将一个系统拆分为不同的子模块,服务之间相互调用。而随着项目的迭代升级,服务、功能的相互交互及相互调用会非常复杂,调用关系混乱较难维护。因此,SOA应运而生。SOA建立了“数据总线”的概念,类似于阿里的dubbo、zookeepper注册中心,通过注册的形式简化调用关系,实时调度。

4、理解集群、分布式

当一台服务器的性能不足以支持处理某些任务时,需要添加一台或多台服务器,共同处理该任务,而这些服务器的工作内容、过程完全相同。当一台服务器出现问题时,其他的服务器仍能正常工作。而分布式可以理解成这些服务器负责不同的功能模块,协同完成某项工作。分布式服务存在数据一致性和可用性之间的矛盾问题。

5、理解kafka

kafka是分布式的基于发布/订阅模式的MQ(消息队列),主要元素有:生产者、消费者、broker(一个独立的kafka服务结点)以及Zookeeper。生产者、消费者通过zookeeper上面的注册信息,寻找到对应的broker上,进行吧生产、消费等操作。

消息队列分为两种模式:点对点模式、一对多模式(发布/订阅模式)。点对点模式下,生产者生产信息后,信息伴随着消费者的消费操作消失,而发布/订阅模式下,信息并不因为消费者的行为消失,而是通过设立消息的有效期。那么,什么是消息队列?

6、理解MQ(消息队列中间件/Message Queue)

首先说一下MQ的特点:异步、削峰(缓存)、解耦。

异步:比如从A执行到B需要串行调用A1,A2,A3,...,An多处逻辑,调用链很长,引入MQ后,调用关系可转变为A-> AA->B,AA为消息队列,其中A1,A2,A3,...,An可并发执行。不使用多线程解决该问题的原因:多线程代码耦合度高,不好维护

缓存:同时有大量请求时,MQ可起到缓存、削峰的作用,避免服务器崩溃

发布了2 篇原创文章 · 获赞 1 · 访问量 57

猜你喜欢

转载自blog.csdn.net/qq_40798777/article/details/104298804