微服务架构的组件设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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