创建软件架构方式他的一个区别,我们以那些架构方式作为一个比较的点呢,一个是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注册中心,这些都是可以用来做主从中心的,所以通过对着四种架构个一个讲解,有什么区别相信大家应该已经理解了,应该并不是一个很复杂一个事,我们主要讲这四种方式的最大区别,以及每个架构之间的一个特点

常见软件架构方式的区别相关推荐

  1. 了解mysql的三种不同安装方式的区别

    学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...

  2. 蓝牙扫描_无线扫描枪常见的传输模式及其区别

    无线扫描枪常见的传输模式及其区别 一.无线扫描枪主要传输模式 1.wifi传输,理论上覆盖面积较广,只要有中继器要传输多远都没问题. 2.蓝牙传输,蓝牙传输的特点就是适合所有的蓝牙设备,耗电量始中,兼 ...

  3. Hive常见的存储格式的区别与应用场景

    Hive常见的存储格式的区别与应用场景 一.文件存储格式 行存储和列存储 1.TextFile 2.sequencefile 3.RC 4.orc(工作中常用) 5.parquet 二.四种存储格式分 ...

  4. post和get请求方式的区别

    post和get请求方式的区别 表单提交中get和post方式的区别有5点: 1.get是从服务器上获取数据,post是向服务器传送数据.2.get是把参数数据队列加到提交表单的ACTION属性所指的 ...

  5. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

  6. 关于微软COEM,FPP和开放式许可三种购买方式的区别

    什么是零售版.VOL版和OEM版 零售版是指从软件零售商处购买到的软件产品,它是针对一般家庭用户并且也是最常见的销售版本. Windows Vista零售版分为彩盒包装和COEM简装版,彩盒包装比CO ...

  7. 常见路由协议分类及区别

    常见路由协议分类及区别: 路由协议分类: 文末放常见路由协议比较表 1.按照使用分类: 静态:设置好路由器和主机并将路由信息固定的一种方法. 动态:路由协议在进行过程中自动的设置路由控制信息的一种方法 ...

  8. 移动端有哪些常见布局方式?

    大家好,我是IT修真院深圳分院第九期的学员徐炜,一枚正直.纯洁.善良的前端程序员. 今天给大家分享一下,修真院官网css任务13,深度思考中的知识点--移动端有哪些常见布局方式? 1.背景介绍 随着智 ...

  9. 密码学之常见加密方式(05)

    常见加密方式 文章目录 常见加密方式 前言 一.对称加密 二.DES加密 三.DES解密 Base64 算法简介 Base64 算法原理 Base64 构成原则 四.base64补等号测试 五.AES ...

最新文章

  1. ue4商城资源 Nature Cave Cliff 自然洞崖景观场景
  2. asa hacker
  3. 桁架机器人运动视频_桁架机器人的直线定位单元
  4. js中期BOM及this指向
  5. Unity C#单例模式的实现
  6. jdbc事务 jta事务_将非事务性资源绑定到JTA事务中的几种模式
  7. html里meta标签,HTML中的meta标签详解
  8. ftp 501错误_分享,HTTP协议错误代码大全
  9. 网站能ping通 但是打不开_SEO网站建设的三要素:域名、空间、网站程序
  10. .Net软件设计新思维
  11. smarty 缓存用法简述(转)
  12. Mac 实用工具bash-comletion介绍安装
  13. 这些最真实的 “猥琐程序员”,今天必须曝光!
  14. python网络爬虫网易云音乐_怎么使用Python网络爬虫爬取网易云音乐歌词
  15. 为什么体适能一直显示服务器,一种体适能检测方法及系统
  16. 数据挖掘入门(一)基本理论
  17. 交通 流量 时间序列预测,神经网络 机器学习 BPNN
  18. keil调试过程中源代码界面没有箭头
  19. PS的一些基础概念(分辨率,色相,饱和度,明度,RGB)
  20. 无线扩展器怎么连接好友服务器失败怎么办,华为WS331C无线扩展器图文设置方法...

热门文章

  1. [BootStrap] 富编辑器,基于wysihtml5
  2. 把mac地址转换为标准mac地址
  3. MySQL索引背后的数据结构及算法原理zz
  4. 【Apache POI】基础处理方法总结
  5. 【Hibernate】Hibernate实体关系映射——双边的多对多关系
  6. 【struts2】文件上传下载—struts2实现
  7. java程序员的第二编程语言应该选什么?
  8. 数字文档搜寻指南 v6.0
  9. NameNode机制和DataNode机制
  10. 从需求来看《IT人员应聘建议》