微服务架构

微服务架构

听风知秋雨 379 2020-05-10

一、系统架构演变概述

1. 了解项目架构的演变历程

graph LR; 1[集中式架构] --> 2[垂直拆分] 2 --> 3[分布式服务] 3 --> 4[SOA面向服务架构] 4 --> 5[微服务架构]

二、 微服务架构说明

1. 微服务架构

  • 是一套使用小服务或者单一业务来开发单个应用的方式或途径
  • 每个服务基于单一业务能力构建,运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,并能够通过自动化部署机制来独立部署
  • 这些服务可以使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理

2. 微服务架构特点

  • 单一职责
  • 服务粒度小
  • 面向服务(对外暴露REST api)
  • 服务之间相互独立

与使用ESB(企业服务总线)的SOA架构的区别:微服务架构没有使用ESB,有服务治理注册中心;业务粒度小

3. 微服务经典架构图

springcloud

4. 微服务架构与SAO架构的区别

功能SOA微服务
组件大小大块业务逻辑单独任务或小块业务逻辑
耦合通常松耦合总是松耦合
管理看重中央管理看重分散管理
目标确保应用能够交互操作易维护、易扩展、更轻量级的交互

5.服务调用方式

  • RPC:基于socket,速度快,效率高;webservice、dubbo

  • HTTP:基于TCP,封装比较臃肿;对服务和调用方没有任何技术、语言的限定,自由灵活;RESTful,Spring Cloud

6. Http客户端工具

一般情况下有如下三种http客户端工具类包都可以方便的进行http服务调用:

  • HttpClient
  • OKHttp
  • URLConnection

spring 提供了RestTemplate的工具类对上述的3种http客户端工具类进行了封装,可在spring项目中使用RestTemplate进行服务调用

三、SpringCloud

1. 概述

官网:点击此处跳转

Spring Cloud它将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等功能;协调分布式环境中各个系统,为各类服务提供模板性配置。其主要涉及的组件包括:

  • Eureka:注册中心
  • Zuul、Gateway:服务网关
  • Ribbon:负载均衡
  • Feign:服务调用
  • ConfigServer:配置中心
  • Hystrix或Resilience4j:熔断器

以上只是其中一部分,架构图如下:

2. 版本说明

Spring Cloud不是一个组件,而是许多组件的集合;它的版本命名比较特殊,是以A到Z的为首字母的一些单词(其实是伦敦地铁站的名字)组成


 微服务架构