1、传统三层架构模式的缺陷html
三层架构(3-tier architecture) 一般意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)web、业务逻辑层(Business Logic Layer)service、数据访问层(Data access layer)dao。java
区别于MVCweb
1)MVC中的模型(Model)指的是数据模型,用于封装与应用程序的业务逻辑相关的数据,除此以外还能够封装数据的处理方法(至关于业务逻辑)。这是彻底区别于三层架构的模型层(Model)的。spring
MVC中模型(Model)的特色:数据库
①有对数据直接访问的权利,如:对数据库的访问;json
②模型(Model)“不依赖”视图(View)和控制器(Controller),即模型(Model)不关心它会被如何显示或者如何被操做;tomcat
③模型(Model)中数据的变化通常会经过一种刷新机制被“公布”;服务器
④为了实现③中的“机制”用于监视此模型的视图必须事先在此模型上注册。从而,视图能够了解在数据模型上发生的改变。网络
2)视图(View),这里的视图基本跟三层中的视图同样,都是为了显示数据,没有程序上的逻辑。为了实现视图上数据的刷新,视图(View)须要访问它监视的模型(Model),因此应该事先在被它监视的数据那里进行注册。架构
3)控制器(Controller),这个概念是在三层中不存在的概念。它主要起到不一样层面的组织做用,用于控制应用程序的流程。主要处理事件并做出相应。“事件”主要包括:用户的行为和数据的改变。
那么具体的传统的三层架构模式缺点有什么呢?
一、全部的代码都在同一个项目中维护,部署在同一个系统中
二、全部的代码都在一个代码库,代码量大,访问人数多,致使访问效率低下
三、分模块开发,各模块耦合度大,改一发动全身
四、多层间有交叉,致使同步改变,失去分层独立性
五、代码可读性差(模块耦合),运维团队看不懂代码
六、拆分多个子系统时,作公共代码的服务化(解决重复性问题)量大
2、什么是微服务架构?
从上图能够看出,微服务架构是:按功能拆分模块,每一个模块有 服务消费者和服务提供者两个项目。
而且每一个模块又是三层架构,服务提供者是service和dao层,服务消费者是web层。每一个模块能够独立
技术选型,独立开发,独立部署,独立运维。
3、为何须要微服务架构?
解决传统三层架构的不足
4、微服务架构的优缺点
优势:
一、每一个模块(项目),能够独立技术选择(语言、数据库、架构),充分发挥各类语言技术的特长,博采众长
二、每一个模块都独立开发,代码量小,业务简单,可控性强
三、服务模块之间不用直接依赖,可使用一些服务治理框架来完成一个相似esb功能.
ESB全称为Enterprise Service Bus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的链接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,能够提供比传统中间件产品更为廉价的解决方案,同时它还能够消除不一样应用之间的技术差别,让不一样的应用服务器协调运做,实现了不一样服务之间的通讯与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具有了复杂数据的传输能力,并能够提供一系列的标准接口。
四、随着系统架构的演变,微服务架构是当今时代的产物。
缺点:
由于每一个功能都是独立服务,在一个大型项目中监控管理这些服务变得复杂,定位排除问题难度增大
5、架构使用场景
微服务架构使用大型项目
传统三层架构使用中小型项目
6、什么是微服务治理框架?
微服务治理框架就是在微服务架构中用来治理服务的框架
7、常见的服务治理框架
1):dubbo
国产,来自于阿里巴巴,开源,国内用的比较多。缺点是之前更新不及时,在2014年更新了2.4版本后一直到
2017年9月7日才发布了2.5.4版本,三年没更新。先出来的东西思想不是很先进。
2):spring cloud
国外,开源,国外用的多,国内在逐渐流行。更新至关及时,后出来的思想较为先进。学习难度较大。
Spring Cloud对于中小型互联网公司来讲是一种福音,由于这类公司每每没有实力或者没有足够的资金投入去开发本身的
分布式系统基础设施,使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减小开发成本。
8、什么是dubbo?
dubbo是服务治理框架,能够与spring 无缝集成。是阿里巴巴SOA服务化治理方案的核心方案,天天为2000+个服务提供
超过30亿次的访问量支持。有良好的实用价值。
dubbo采用一种很是简单的模型,要么提供方提供服务,要么消费方消费服务。因此基于这一点能够抽象出服务方(provider)
和消费方(consumer)两个角色。
9、dubbo能作什么?
一、解决URL强依赖,只依赖服务注册中心。
二、自动画出依赖图,理清调用关系
三、支持集群
10、dubboX是什么?
由于dubbo更新比较慢,在2014年更新2.4版本后2017年9月7日才发布2.5.4版本。期间,当当网根据自身需求,
对dubbo进行了扩展,就是如今的dubboX
11、dubboX的主要功能有哪些?
一、支持rest风格(http+json/xml)
二、支持基于kryo和fst的java高效序列化的实现
三、支持基于嵌入式tomcat的http remoting体系
四、升级了spring,将dubbo的2.x版本升级到了3.x版本
五、升级了服务注册中心zookeeper客户端,将dubbo中的zookeeper升级到了当时最新版本,以修正老版本中
包含的BUG
六、dubboX和dubbo2.x是兼容的,没有改变dubbo的任何功能和配置方式(除了升级spring之类版本)