程序员

微服务概要

2018-05-10  本文已影响0人  SolidSnake_天彼方

微服务概要

什么是微服务

  1. 微:体积小,单个服务设计到运维人数少。

  2. 服务:区别于系统,服务一个或一组相对较小且独立的功能单元。用户可感知的最小功能集。(类似于插件?)

    ​ 微服务架构是一种使用一套小服务开发单个应用的方式途径,每个服务运行在自己的进程中,之间使用轻量级机制通信(HTTP API)。服务基于业务能力构建,通过自动化部署机制独立部署。采用不同的编程语言,不同的数据存储技术实现,保持最低限度的集中式管理。

为什么要微服务

独立系统的缺点

  1. 扩展性差,可靠性不高,维护成本高。

  2. 引入SOA服务化后,与某种技术栈强绑定(e.g J2EE)导致切换时间长,成本高

  3. 在单体架构扩大过程时暴露以下主要问题:

    3.1. 复杂性逐渐变高(代码量大,模块之间区别模糊,逻辑混乱)

    3.2. 技术债务[1](ppy提到过)(人员流动导致技术债务增加)

    3.3. 部署速度逐渐变慢(代码量庞大,启动时间增加导致开发时间减少)

    3.4. 阻碍技术创新(老架构转向新技术的成本巨大)

    3.5. 无法按需伸缩(所有模块在一个框架下导致修改一个模块必须考虑其它的模块)

    技术债务是现在增加的任何代码,都将在以后,花费更多的时间,来处理它带来的问题。--通常是为了实现快速收益。

微服务与单体架构的区别

  1. 单体架构所有模块耦合,代码量大,维护困难。微服务每个模块相当于一个单独的项目,代码量明显减少,问题相对容易解决。
  2. 单体架构所有模块使用一个数据库,存储方式单一。微服务每个模块可使用不同的存储方式,单个模块对应自己的数据库。
  3. 单体架构所有模块开发所使用技术相同,微服务模块每个模块都可以使用不同的开发技术,开发模式灵活

微服务与SOA区别

微服务本质上还是SOA架构,内涵有所不同,微服务不绑定某种特定技术,在一个微服务系统中,可以有不同语言编写的服务,它们靠Restful架构统一成一个系统,微服务与具体技术实现无关,扩展性强。

微服务本质

微服务关键在于系统提供一套基础的架构,可以让微服务独立部署、运行、升级,微服务之间在结构上松耦合,在功能上是一个统一的整体。

微服务的目的是有效的拆分应用,实现敏捷开发和部署。

微服务提倡团队间应该是inter-operate, not integrate,inter-operate是定义好系统边界和接口,在一个团队中全栈,团队自治,将每个团队的沟通成本维持在系统内部,每个子系统就会更加内聚,彼此的依赖耦合变弱,跨系统的沟通成本降低。

什么项目适合微服务

四要素

微服务的设计

微服务设计原则

微服务优势与缺点

特性

特点

缺点

Spring Cloud 和 Spring Boot 区别


  1. 技术债务是现在增加的任何代码,都将在以后,花费更多的时间,来处理它带来的问题。--通常是为了实现快速收益。参考

上一篇 下一篇

猜你喜欢

热点阅读