一、简介

一种用于构建应用的架构方案,是松散耦合的分布式架构框架;一批独立运行的服务共同构建起系统,每个服务独自运行,通过特定的机制进行通信,例如:

  • RESTful
  • RPC

单独服务的更改不会影响整个应用,开发团队能够快速构建应用的新组件,以满足不断变化的业务需求。

RESTful API

URL 定位资源,用 HTTP 动词(GET、POST、DELETE、DETC)描述操作

http://restful.p2hp.com/
REST 是 REpresentational State Transfer(表现层状态转移)的首字母缩写,分布式超媒体系统的架构风格,最初由Roy Fielding 在 2000 年的着名论文中提出;RESTful 表示满足REST原则。

  • B/S
  • 无状态
  • 可缓存
  • 统一界面
  • 分层系统
  • 按需代码(可选)

URI(Uniform Resource Identifier)统一资源标志符,标识 Web 上每一种可用的资源,常见的 URL(统一资源定位符)只是它的一个子集

  • GET:查询
  • POST:新增
  • PUT:更新
  • DELETE:删除

幂等性,即对该 URI 多少次操作,返回的结果都是相同的
规范:
Url 知道要什么
http method 知道干什么
http status code 知道结果

有助于更好实现 DevOps 的技术,并让持续集成和持续交付(CI/CD)更加顺畅、容易实现。

1.特点

  • 针对特定服务发布,影响小,风险小,成本低
  • 频繁发布版本,快速持续迭代
  • 低成本扩容,弹性伸缩

    2.优势

  • 开发周期短
  • 高度可扩展
  • 出色的弹性
  • 易于部署
  • 易于访问
  • 更加开放

    二、模块

    微服务架构

    1.API 网关

    API 网关是一个服务器,是系统的单入口点,它类似于面向对象设计模式中的门面(Facade)模式;API 网关封装了内部系统架构,并针对每个客户端提供一个定制 API;它还可用于认证、监控、负载均衡、缓存和静态响应处理。

API 网关负责请求路由、组合和协议转换:所有客户端请求首先要通过 API 网关,之后请求被路由到适当的服务;API 网关通常会通过调用多个微服务来处理一个请求并聚合结果,它可以在 Web 协议(如 HTTP 和 WebSocket)和用于内部的非 Web 友好协议之间进行转换。

1.1.技术选择

平台要求:支持异步、非阻塞 I/O

  • 在 JVM 上,可以使用基于 NIO 的框架
  • 非 JVM 可以使用 Node.js
  • 还可以选择使用 Nginx

    1.2.编程模型

    传统的异步回调方式来编写 API 组合代码会很快陷入回调地狱,代码将会变得杂乱、难以理解并且容易出错;想要构建简单而高效的 API 网关,更好的方式是使用响应式方法以声明式方式去编写 API 网关代码
  • Future&CompletableFuture(Java8)
  • Promise(ES6)
  • RxJS(JavaScript)

    1.3.服务调用

    基于微服务的应用是一个分布式系统,必须使用进程间(inter-process)通信机制,系统通常会同时使用异步和同步两种方式,甚至可以为每种方式应用多个实现;因此,API 网关需要支持各种通信机制。

    1.4.服务发现

    1.5.局部故障

    2.注册发现

    3.配置管理

    4.网关入口

    三、部署

    可以说KubernetesDocker这些技术就是为微服务而生的

典型的企业应用由至少三种不同类型的组件组成:

  • 表现层(Presentation Layer,PL)

处理 HTTP 请求并实现(REST)API 或基于 HTML 的 Web UI 组件

  • 业务逻辑层(Business Logic Layer,BLL)

作为应用核心,实现业务规则的组件

  • 数据访问层(Data Access Layer,DAL)

数据访问基础设施组件,如数据库和消息代理

四、教程

《微服务:从入门到部署》