微服务入门到部署 & RESTful API
一、简介
一种用于构建应用的架构方案,是松散耦合的分布式架构框架;一批独立运行的服务共同构建起系统,每个服务独自运行,通过特定的机制进行通信,例如:
- 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.网关入口
三、部署
可以说
Kubernetes
、Docker
这些技术就是为微服务而生的
典型的企业应用由至少三种不同类型的组件组成:
- 表现层(Presentation Layer,PL)
处理 HTTP 请求并实现(REST)API 或基于 HTML 的 Web UI 组件
- 业务逻辑层(Business Logic Layer,BLL)
作为应用核心,实现业务规则的组件
- 数据访问层(Data Access Layer,DAL)
数据访问基础设施组件,如数据库和消息代理