创建软件架构方式他的一个区别,我们以那些架构方式作为一个比较的点呢,一个是MVC架构,还有一个是RPC架构,
还有一个SOA架构,还有一个是微服务架构,我们先来看第一种架构方式,MVC架构,我们首先看一个图
四种架构的表现形式,在这个图当中呢,分别画出了四种架构方式,第一种就是MVC架构,
第二种RPC架构,第三种SOA,第四种微服务,我们先来看MVC架构,其实MVC架构就是我们之前讲的单体架构,
他最大的特点是把所有的功能,都整合到了一个应用当中,并且操作数据库只是单一的数据库,以但数据库为准,
所谓的典型的MVC架构,其实MVC架构就是一个单体架构,那么对于单体架构的项目,他代表性的技术有哪些呢,如果
我的项目是基于单体架构去做的开发,我可以用哪些技术去完成单体架构的项目呢,咱们来看一下,代表技术,比如说
我们Struts2,还有SpringMVC,还有Spring,还有Mybatis,其实这些都可以做为单体架构的一个开发,由于我们之前讲过了
单体架构,我们再来看第二种,RPC架构,我们先来看这个图,除了MVC架构以外,后面的这三种架构方式,其实他们都有一个
共同的特征,在他们的架构方式当中,会有服务的这种概念,RPC中有服务,SOA当中有服务,微服务当中有服务,其实这三种
架构方式,我们可以统称为面向服务架构,但是由于在不同的架构当中,因为服务的治理上会有区别的,所以我们面向服务的
方式当中,分为了三种架构方式,一个是RPC,一个是SOA,一个是微服务,我们再来看第一个RPC,那么什么是RPC架构呢,这里我们
把RPC解释一下,大家并不陌生,RPC是单词的简写,那三个单词呢,Remote Procedure Call,直译过来是什么呢,远程过程调用,
那么这个远程过程调用是什么呢,他其实是通过网络,去获得请求服务的一种技术,他是一种通过网络从远程计算机程序上请求
服务,而不需要了解底层网路技术的一种协议,这是RPC的一种解释,那我们再看这个图,其实RPC和SOA和微服务,最大的一个区别
就是,我们的应用是直接来调用服务的,而服务和服务之间是没有通信通道的,这是他的一个特点,也就是服务和服务之间是
隔离的,服务和服务之间是无法建立通信的,因为他们最终都要通过应用来触发,这是他的一个特点,如果我们的应用真的是通过
RPC架构来架构的话,那么我们常用的技术可以选择什么呢,我们来看一下,一个是Thrift,这个Thrift是什么呢,是一个RPC通信,
然后Thrift有一个比较强大的代码生成引擎,而且这个技术是支持跨平台和语言的调用的,支持C++,Java,Python,Ruby这些主流
语言,Thrift他都是支持的,所以说这个技术还是比较强大的,Facebook把它挂在Apache下,如果我们想要了解一下,查一下
相关的资料,这是Thrift技术,除此之外还有一个Hessian,这个Hessian是什么呢,可能有的同学也了解,Hessian是一个轻量级的
RPC工具,是一款基于HTTP协议的RPC框架,他的使用是非常简单的,他提供了一个RMI的一个功能,采用的是二进制的RPC协议,
而且它是非常轻量级的,速度是非常快的,所以他是PRC架构技术的一个选择,常见的RPC框架是挺多的,这是RPC的一个架构,
然后再来看,除了RPC以外呢,还有微服务,那么SOA服务又是什么演变过来的呢,其实这个图就是我们项目进化的一个方式,
演化方式,MVC最终可以演化成RPC,PRC有可以演化成SOA和微服务,那么其实RPC这种方式呢,他有一些问题,有什么问题呢,
RPC的服务非常多,我们这个服务的节点特别多,这个时候你会发现,用RPC方式去架构的时候,服务是非常难管理的,而且服务的
注册与发现,服务的治理已经服务的网关,还有像服务的容错,还有分布式的配置中心,还有服务的跟踪等等,所以都是已将非常
麻烦的事,当服务的质量上升到几百个的时候,那么每个服务容量的评估,还有服务的资源浪费,还有IP的暴露等等,都非常
难管理,所以说这个时候,如果你的服务量过多,其实RPC的架构方式就显得力不从心了,那如果我们的服务真的有这么多的话,
怎么去解决呢,我们可以换其他的架构方式,比如像SOA架构,或者微服务架构都可以,那我们来看SOA架构,那么SOA是什么呢,
SOA也是单个单词的简写,Service Oriented Architecture,直译过来就是面向服务的架构,我们来看一下,SOA架构和RPC架构
最大的区别就是,在他的架构方式当中,多了一个层,原来RPC是直接调用服务,现在我们的应用是去调用ESB,ESB才去调用
服务,是这样的一个过程,那么ESB是什么呢,是需要先了解一下,其实ESB也是三个单词的简写,哪三个单词呢,Enterprise
Service Bus,直译过来就是企业服务总线,那么其实企业服务总线是什么呢,其实就是一个服务的中介,它主要是提供
服务与服务之间的交互,我们再来看这个图,在RPC这种架构模式下,服务和服务之间是没有消息交互通道的,但是SOA架构
则不然,我们所有的服务都集成到ESB下,集成到消息服务总线下,那么就相当于给每个服务建立了一个消息通道,然后
ESB的服务总线,进行治理,这是SOA比RPC更智能的一个体现,那么ESB包含了哪些功能呢,简单的了解一下,ESB包含的功能
如负载均衡啦,还有流量控制,还有加密处理,还有服务的监控,异常处理,还有监控告急,等等这样的一些功能,所以他的主要
技术特点就是来治理服务,对于服务的处理方式上是比较多的,在这里给大家罗列了几个,什么负载均衡,服务的监控等等,
这些都是企业的服务总线可以做到的,所以相比RPC这种架构方式,对于服务的治理这一块,更加容易一些,这是SOA架构,
那么我们看一下他的代表技术有哪些,比如有一个叫Mule的,那么它是一个什么用的技术呢,它是一个以JAVA为核心的
框架,他提供服务中介,数据转换,消息路由啊,服务创建和托管,当然这个技术有一个缺点,他并不是开源的,那么也就
意味着他是一个付费产品,如果我们的项目采用Mule作为我们的ESB的话,我们需要花钱购买的,我们再来介绍一个技术,
WS02,他也是一个企业服务组件,他具备以下的特点,快速,轻巧,关键一点它是完全开源的,也就是他是一个完全免费的
服务组件,然后是各种设施的基础搭建,技术框架和相关工具,还有内置了服务支持,服务器决策管理功能等等,所以WSO2
也是非常强大的,关键一点相比Mule它是免费产品,提供ESB平台的技术,最后一个就是微服务架构,还是看这个图,其实我们
会发现微服务的方式,跟SOA的方式是及其相似的,他中间也有一层,但是在微服务架构方式当中,这一层就不叫服务组件了,
他叫注册中心,其实注册中心就是治理服务的一种方式,那么这个注册中心呢,相比于企业总线,它会更轻量一些,
换句话说你也可以理解为,轻量的一个替代方案,我们还是把笔记先说一下,什么是微服务呢,其实从宏观上来讲,
微服务就是一个轻量级的服务治理方案,如果我们的项目是采用微服务的方式的话,我们可以用哪些技术来做微服务呢,
比如他的代表技术有哪些呢,比如SpringCloud,还有Dubbo,他的注册中心会用什么来实现呢,我们不是=说注册中心是用来
替换服务总线的吗,那么注册中心我们可以用什么呢,像Apache的Zookeeper,还有SpringCloud自带的eureka注册中心,
这些都是可以用来做主从中心的,所以通过对着四种架构个一个讲解,有什么区别相信大家应该已经理解了,应该并不是
一个很复杂一个事,我们主要讲这四种方式的最大区别,以及每个架构之间的一个特点