服务启动后,会注册在注册中心并且显示IP和端口号
Nacos, Zookeeper, Consul, Etcd, Eureka 等 都是注册中心
服务向客户端进行 注册(register), 取消注册(unregister), 保持心跳(heartbeat)
缺点: 每一种语言都要实现不同的注册逻辑
使用registrar注册, 服务启动后通知registrar, regitrar在注册中心进行 register, unregister 和 heartbeat
缺点: registrar 必须支持高可用
Client (客户端) 负责查询可用服务地址, 以及保持Load Balance(负载均衡)
缺点: 每一种语言都要实现不同的注册逻辑
Server (服务端) 先请求Router, Router 负责查询可用服务地址 和 Load Balance (负载均衡)
缺点: Router 必须支持高可用
Gateway 网关是用户请求系统进入的唯一节点 (借鉴Fascade 设计模式),Gateway再分发给每个服务
Gateway 还可以进行: 授权, 监控,负载均衡,缓存,请求切片和管理,静态响应处理 等
Gateway 负责请求转发, 请求合成,协议转换; 支持web服务和非web服务间转换,比如 http 和 websocket
Client (前端) 请求Server(后端) 网关通过负载转发到对应服务(Service)上
把调用多个接口的工作合并成一次,对外统一展示 (Fascade模式)
支持 SOAP,JMS,Rest 之间 协议转换
支持 Xml,JSON 之间 格式转换
进行系统参数配置 (property,yaml)
满足: 高效获取,实时感知,分布式访问
采用配置加载到内存解决高效获取问题
采用zookeeper监听解决实时感知问题
Java 服务中常用消息队列进行事件统一调度, 比如 rabbitMq, kafka, activemq 等
使用 SpringCloud Sleuth 追踪服务之间传播过程
使用原因: 防止服务雪崩 (Service Provider 基础服务 不可用 -- 导致 Service Consumer 服务模块也不可用; 并且将这种不可用逐渐放大)
原理: 许多类似错误发生后,禁止Server被访问,直到被修正才重新允许访问
Hystrix 原理:
后端请求失败比例 >= 50%, 断路 (OPEN)
等一段时间后, 调整到 HALF_OPEN 然后判断是否被修正, 修正则调整为Close,未修正则调整为OPEN
Java服务中常用Swagger进行API管理
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。