微服务概念

定义

  • 维基上对其定义为:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
  • 每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。
  • 另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。

    微服务特性

  1. 每一个服务可以独立运行在自己的进程里(Tomcat)
  2. 一系列微服务共同构建成整个系统
  3. 每个微服务只需要关注某个独特的功能
  4. 微服务之间可以使用不同的语言
  5. 微服务之间通过轻量的通信机制进行通信

    优点

  • 单个服务更易于开发、维护
  • 单个微服务启动较快
  • 局部修改容易部署
  • 按需伸缩(比如当前微服务是CPU密集型的,可以将为服务部署在CPU性能高的机器上即可)

    缺点

  • 运维要求高

  • 分布式应用固有的复杂性

与单体应用的区别

形象的一张图

微服务架构与Spring Cloud - 图1

Spring Cloud

  • 微服务的落地实现需要很多功能进行组合,Spring Cloud提供了一个解决微服务架构实施的综合性框架;

    图中的Apps就可以看做一个一个的服务

    而其他功能比如API网关,配置中心,服务注册与发现等功能则需要在服务外提供。

    Spring Cloud则作为一个解决微服务架构实施的综合性解决框架出现

    微服务架构与Spring Cloud - 图2

    微服务可能需要的组件功能

    微服务架构与Spring Cloud - 图3

  • Spring Cloud整合了诸多被广泛实践和证明过的框架作为实施的基础部件,又在该体系基础上创建了一些非常优秀的边缘组件

    SpringCloud作为分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体。

    微服务架构与Spring Cloud - 图4

    落地实现

    微服务架构与Spring Cloud - 图5

  • 微服务架构示例图

    微服务架构与Spring Cloud - 图6

  • Spring Cloud版本

    SpringCloud版本采用了名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序。例如Angel是第一个版本, Brixton是第二个版本。

    微服务架构与Spring Cloud - 图7

    更详细的版本对应关系

    微服务架构与Spring Cloud - 图8

SpringCloud组件停更、升级以及替换

微服务架构与Spring Cloud - 图9