微服务一:微服务概念入门及发展历程

微服务概念入门及发展历程

一、为何学习微服务、何为架构、何为系统

1.为什么要学习微服务

  1.1、提升架构设计
  1.2、扩展知识面。

2.什么是架构

  2.1、什么是架构:架构指的是系统的结构。这里有两个概念,系统结构
  2.2、什么是系统:系统是一组关联的个体(一组个体的关联集合),它可以完成个体不能完成的任务。
    现实理解为:软件公司比作系统,测试、开发、产品为个体,这些个体组合成一家公司,完成个体不能完成的任务。电商系统也类似。
    
    系统的现实理解如上图。

  2.3、什么是结构:指的是系统内部各个组件之间的关联方式。系统内的各个组件,能够进行通信。
    
    因此,架构就是系统的结构。它有三个特点
​     a.由各个具体的组件组成
​     b.各个组件能相互通信
​     c.可以合作完成一个共同的任务

  2.4架构分类:架构又可以分为 部署架构逻辑架构(功能架构)。
    

二、什么是微服务,什么是微服务架构

1.什么是微服务

  只提供一项功能的服务。

2.什么是业务领域

  公司有多少业务,就有多少领域。一个领域,就是一个业务。比如 电商业务领域、OA业务领域 等。

3.微服务和业务领域的关系

   微服务是围绕某个业务领域展开的。把电商业务比较一个业务领域,技术部、产品部等就是围绕电商业务领域展开的微服务。在电商项目领域,由支付、商品、订单等微服务组成。如下图所示:
    

4.微服务的特征

  4.1、单一职责原则。
  4.2、升级简单,扩展轻松:由于微服务只提供一项功能,职责单一,代码也少,因此代码也相对比较少,因此升级简单,易扩展。
  4.3、独立性强:出问题了,微服务之间互相不影响。一个微服务出问题了,不影响其他微服务正常工作。

5.什么是微服务架构

   如何将拆分出来的各个微服务进行管理形成的结构,就是微服务架构。包括各个微服务的组件以及他们之间的通信方式。完成微服务架构,需要一系列的技术栈。微服务架构理解示例,如下图所示:
    
  从架构图中可以看出,整个微服务架构的核心是微服务层。

6.微服务架构的目的

  6.1.解决性能问题(并发量)
  6.2.解决数据量问题
  6.3.解决业务量问题
  6.4.解决团队量问题

三、微服务架构的衍化过程

   接下来,以为团队管理系统为例,介绍微服务架构衍化过程。团队管理系统有 团队模块团队成员,团队模块有技术、测试、销售等。每个具体的团队模块都有相应的成员。系统每一个模块,代表一个业务,业务会发展,变得越来越多、越来越复杂。系统功能也会随之越来越多,越来越复杂。

(一)、单体架构

   单体架构的缺点是 处理并发量有限,不能承载高并发量的访问。每个物理主机的吞吐量都是有限的,当并发量起来后,承载应用程序的服务器性能会下降,甚至可能宕机。要解决高并发问题,应用程序开始做集群。

(二)、单数据库多应用架构

  为了解决并发量的问题,开始对应用程序做集群,并使用nginx做负载均衡(或者采用其他网关做负载均衡)。
  
   单数据库多应用架构,在应用程序上解决了并发量问题。随着并发量的增加,数据量也会骤增。数据量问题出现,数据库的性能下降,影响整个系统的性能。

(三)、主从数据库读写分离

  为了解决数据量问题,于是对数据库做主从分离架构。
  
   这种架构解决了并发量问题,也一定程度上解决了数据量问题。当并发量持续增加,数据库性能依然无法进一步提升。因为 应用程序跟数据都的交互,是通过网络IO进行的,而每个数据库的读写性能也是有限的。为了解决这个问题,则需要加上缓存。

(四)、主从数据库读写分离+缓存架构

  
  随着并发量提升到一定量级,这种架构依然会导致整体性能下降。任何系统,对外的能力超过了一定的阈值(并发能力的阈值),系统性能都会急剧下降。因此可以看出,并发量贯穿着每种架构的过程。为了解决并发量持续加大的问题,出现了 消息队列架构。

(五)、消息队列架构(异步架构)

  
  可是即使是消息队列架构模式,也只能解决并发量和数据量问题。团队量 和 业务量 并没有得到解决。在业务发展过程中,系统功能会越来越多且越来越复杂,业务量就会增长。由于业务量增多,需要维护系统的团队工作量也会增多。因为所有的集群,都是同一个系统,一个团队共同维护一个业务庞大的系统,会有维护冲突的问题。会导致 :
    1.升级缓慢,bug不断。
    2.模块之间相互影响。
  除此之外,当某个模块(如 团队模块)的并发量非常高,占用的线程资源和其他资源过多,而一台物理服务器的线程资源是有限的,必然会影响其他模块的响应性能。为了解决 业务量 和 团队量,出现了面向服务(SOA)架构

(六)、面向服务(SOA)架构

  
  但是这种架构有一个非常繁重的企业服务总线 ESB。ESB协议繁多,维护复杂。服务层 粒度不够明确。三个缺陷:
​    1.ESB协议繁多,维护复杂。
​    2.服务拆分粒度不明确,服务没有大小和具体的规范,不利于团队管理
    3.数据都存储再同一个数据库,导致各个模块数据之间相互影响。其中一个模块数据量大,会影响其他模块数据的读写性能。
  为了解决并发量、数据量、业务量、团队量的问题。微服务架构顺势而生。

(七)、微服务架构

  
  微服务架构,是目前业务架构的最高设计。每一个服务,都是独立的数据库。单个服务出问题了,不影响其他服务。服务与服务之间,是轻耦合的状态。它的协议简单,要嘛是http的,要嘛是restful的,或者其他协议。但是协议只有一个,扩展简单。
微服务架构可以解决:
    1.解决并发量问题
    2.解决数据量问题
​    3.解决业务量问题
    4.解决团队量问题

  微服务架构的缺陷:
    1.服务增多,数据库增多,复杂性增高。一个系统,根据粒度拆分成服务,应用和数据库的规模都会增加。
    2.系统不稳定因素增大,维护量增大。每个服务之间通信,服务与工具层之间通信,都需要通过网络进行,而网络是非常不可靠的。因此增加了系统不稳定性。
  微服务架构,没有足够的团队资质,是非常难实施的。

原文地址:https://www.cnblogs.com/Fengyinyong/p/14814760.html