微服务架构的组件设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Consul
• 服务注册与发现
• 健康检测 • 配置管理 • 跨机房支持 • DNS、REST接口支持

Consul DEMO

Eureka
• 服务注册与发现

• 基于Java语言
• 跨机房支持

• REST接口支持

Eureka DEMO

服务调用与通信

服务间调用

服务间调用方式

• Server-side 调用 • Client-side 调用

Shipment

API 网关的优点

• 封装了系统内部架构,简化消费者使用 • 请求组合,给消费者灵活定制API,减少请求量 • 单入口,协议转换为Web-Friendly • 服务端变化带来的影响降到最低 • 负载均衡、请求路由、身份验证...

API 网关的缺点

• 带来了额外的开发量 • 需要管理API路由规则 • 额外的硬件、网络和运营成本
Microservice

Microservice

关闭服务

Service Manager

Service Registry

Microservice

服务发现

服务发现方式

• Client-side discovery • Server-side discovery

Client-side discovery
微服务架构的组件设计

跟我做一个Java微服务项目

大纲
• 微服务注册与发现
• 服务调用与通信 • API 网关

Terms 术语约定
• Service Registry 服务注册表 • Service Discovery 服务发现

• Service Registration 服务注册
• Service De-registration 服务注销


Microservice

?

!

Microservice

基于消息的异步方式
• 以使用Broker为例
• 消息生产者与消费者解耦

• broker可缓存消息
• 支持多种通信模式

• broker添加了复杂度

• “请求/响应”模式不适用

消息
Microservice

Microservice

消息
Microservice

• API Gateway API 网关

服务注册与发现

传统方法
硬编码IP 或 DNS查询

Service #1 config: 10.0.0.3 Service #2

Service #1
config: service2.exam ple.com

Service #2

DNS查询使用简单 需要管理域名配置文件 如何处理故障?

• 隐含的系统瓶颈

常用API 网关

• Zuul https://github.com/netflix/zuul • AWS

API Gateway https://aws.amazon.com/api-gateway/
https://www.nginx.com/

• Nginx

• Kong https://getkong.org/

Server-side 调用

1

Microservice
6

Service Proxy

2

Service Registry

3

5

4

Microservice
Registry requests API Requests

Client-side 调用
1

3

Microservice
4

Microservice

Service Registry
1
Service Client 2 3 Service Registry

4
API Gateway Microservice

Server-side discovery
Service Registry

2
1 3

Service Client
百度文库
API Gateway

4
Microservice

常用“服务注册表”

Microservice Microservice Microservice Microservice

事件驱动
订单服务

新订单完成

用户中心 积分变动

物流服务 配送货物

API 网关

单体

微服务
Billing

Browser

Billing

Browser

Order

Order
Product Mobile Shipment Mobile Shipment Product

带来的问题

• 入口(Entry Point)变动需消费者(Client)跟随变动 • 后端服务架构调整对外可见 • 服务接口版本一致性问题 • 请求数量增多 • 协议支持友好度,如AMQP、Thrift

API 网关
Billing

Browser
Order API Gateway Product Mobile

常用服务注册表 Service Registry
• Zookeeper https://zookeeper.apache.org/
• etcd https://github.com/coreos/etcd • Hashicorp Consul https://www.consul.io/ • Eureka https://github.com/Netflix/eureka

处理故障
将DNS解析指向负载均衡器
Service #2 Service #1
config: service2.exam ple.com

Load Balancer

Service #2

Service #2

如何检查服务是否健康? 如何注册服务?

为何需要服务注册表
• 服务注册
• 健康检测 • 服务发现 • 服务注销

2

Registry requests API Requests

服务间通信

服务间通信方式

基于HTTP的同步方式
• HTTP

REST

• 简单,“请求/响应”模式 • 防火墙友好,跨网调用方便

• 不支持

“发布/订阅”模式

• 调用方、被调用方得同时在线 • 调用方得知道被调用方的主机名和端口

REST

服务注册

服务注册方式
• 自注册 Self-registration • 第三方注册 Third-party registration

Self-registration

Microservice

启动、关闭时 Service Registry

Microservice
启动、关闭时

Third-party registration
相关文档
最新文档