常见软件架构方式的区别
创建软件架构方式他的一个区别,我们以那些架构方式作为一个比较的点呢,一个是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也是三个单词的简写,哪三个单词呢,EnterpriseService 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注册中心,这些都是可以用来做主从中心的,所以通过对着四种架构个一个讲解,有什么区别相信大家应该已经理解了,应该并不是一个很复杂一个事,我们主要讲这四种方式的最大区别,以及每个架构之间的一个特点
常见软件架构方式的区别相关推荐
- 了解mysql的三种不同安装方式的区别
学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...
- 蓝牙扫描_无线扫描枪常见的传输模式及其区别
无线扫描枪常见的传输模式及其区别 一.无线扫描枪主要传输模式 1.wifi传输,理论上覆盖面积较广,只要有中继器要传输多远都没问题. 2.蓝牙传输,蓝牙传输的特点就是适合所有的蓝牙设备,耗电量始中,兼 ...
- Hive常见的存储格式的区别与应用场景
Hive常见的存储格式的区别与应用场景 一.文件存储格式 行存储和列存储 1.TextFile 2.sequencefile 3.RC 4.orc(工作中常用) 5.parquet 二.四种存储格式分 ...
- post和get请求方式的区别
post和get请求方式的区别 表单提交中get和post方式的区别有5点: 1.get是从服务器上获取数据,post是向服务器传送数据.2.get是把参数数据队列加到提交表单的ACTION属性所指的 ...
- JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能
JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...
- 关于微软COEM,FPP和开放式许可三种购买方式的区别
什么是零售版.VOL版和OEM版 零售版是指从软件零售商处购买到的软件产品,它是针对一般家庭用户并且也是最常见的销售版本. Windows Vista零售版分为彩盒包装和COEM简装版,彩盒包装比CO ...
- 常见路由协议分类及区别
常见路由协议分类及区别: 路由协议分类: 文末放常见路由协议比较表 1.按照使用分类: 静态:设置好路由器和主机并将路由信息固定的一种方法. 动态:路由协议在进行过程中自动的设置路由控制信息的一种方法 ...
- 移动端有哪些常见布局方式?
大家好,我是IT修真院深圳分院第九期的学员徐炜,一枚正直.纯洁.善良的前端程序员. 今天给大家分享一下,修真院官网css任务13,深度思考中的知识点--移动端有哪些常见布局方式? 1.背景介绍 随着智 ...
- 密码学之常见加密方式(05)
常见加密方式 文章目录 常见加密方式 前言 一.对称加密 二.DES加密 三.DES解密 Base64 算法简介 Base64 算法原理 Base64 构成原则 四.base64补等号测试 五.AES ...
最新文章
- ue4商城资源 Nature Cave Cliff 自然洞崖景观场景
- asa hacker
- 桁架机器人运动视频_桁架机器人的直线定位单元
- js中期BOM及this指向
- Unity C#单例模式的实现
- jdbc事务 jta事务_将非事务性资源绑定到JTA事务中的几种模式
- html里meta标签,HTML中的meta标签详解
- ftp 501错误_分享,HTTP协议错误代码大全
- 网站能ping通 但是打不开_SEO网站建设的三要素:域名、空间、网站程序
- .Net软件设计新思维
- smarty 缓存用法简述(转)
- Mac 实用工具bash-comletion介绍安装
- 这些最真实的 “猥琐程序员”,今天必须曝光!
- python网络爬虫网易云音乐_怎么使用Python网络爬虫爬取网易云音乐歌词
- 为什么体适能一直显示服务器,一种体适能检测方法及系统
- 数据挖掘入门(一)基本理论
- 交通 流量 时间序列预测,神经网络 机器学习 BPNN
- keil调试过程中源代码界面没有箭头
- PS的一些基础概念(分辨率,色相,饱和度,明度,RGB)
- 无线扩展器怎么连接好友服务器失败怎么办,华为WS331C无线扩展器图文设置方法...