架构发展之微服务

Spring Cloud是一个集成了众多开源的框架,利用Spring Boot的开发便利性实现了服务治理、服务注册与发现、负载均衡、数据监控,REST API发布方式等,基本囊括了分布式框架所需要的所有功能。是一套易开放、易部署、易维护的分布式开发工具包。在详细的了解Spring Cloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。
  • 架构发展史

    单体架构——>垂直架构——>soa面向服务架构——>微服务架构

单体架构 
在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开发、部署和维护的难度。这种用于简单的增删改查的数据访问框架(ORM)十分的重要。 
这里写图片描述 
垂直应用架构 
当用户访问量不断的提升,单一应用需要不断的增加服务器来应对,同时将单一的应用拆分成多个应用用来处理提升效率。这种用于加速Web前端加载的Web框架(MVC)起到了关键性的作用。 
在这一阶段往往会将系统分为不同的层级,每个层级有对应的职责,UI层负责和用户进行交互、业务逻辑层负责具体的业务功能、数据库层负责和上层进行数据交换和存储。 
这里写图片描述

在这一阶段我们最常使用到的开发框架就是Spring(业务逻辑层管理POJO)+Struts(web层前置服务控制)+Hibernate(数据库层持久化)。
  •  

服务化架构 
伴随着企业服务量的不断提升,MVC框架的部署导致系统的负重越来越多,无法满足并发的要求,系统间数据、报文的传输会出现频繁的丢失。这时候我们需要考虑服务化的架构(SOA)。SOA表示面向服务的架构。将应用根据不同的职责划分成不同的模块(类似于企业划分不同的事业部),不同的模块使用特定的调用协议(RPC)和接口进行交互。 
这样使整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。 
SOA服务化的优点是,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。 
服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。 
服务化架构是一套松耦合的架构,服务的拆分原则是服务内部高内聚,服务之间低耦合。 
这里写图片描述 
在这个阶段可以使用WebService或者dubbo来服务治理。 
微服务架构 
微服务架构算是SOA架构的一种拓展,主要关注的是服务个体的独立性、拆分粒度更小。相对于SOA架构来说,微服务拥有以下优势: 
微服务强调更深层次的组件化和服务化,每个微服务都可以拥有独立的运行空间,确保每一个服务组件可以作为单独的产品进行发布。 
微服务抛弃了传统SOA笨重的企业服务总线,对外发布强调使用HTTP REST API的接口发布形式。 
微服务拆分粒度更小

微服务的使用场景

        需求层面:

        公司发展到一定规模,需求变化频繁,并且研发团队达到10人左右

        性能层面:

        对响应时间要求不苛刻的系统,比如:电商系统 

        数据一致性层面:

        尽量避免分布式事务问题,对数据一致性不太高可保证最终一致性     

  微服务的目的

        项目快速迭代

        项目持续交付   

发布了79 篇原创文章 · 获赞 48 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/bianyamei/article/details/95449663