前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 微服务

Java 微服务

作者头像
JiahuiZhu1998
修改2023-04-25 05:55:34
2750
修改2023-04-25 05:55:34
举报
文章被收录于专栏:JiahuiZhu1998_技术笔记

1. 服务注册发现

服务启动后,会注册在注册中心并且显示IP和端口号

Nacos, Zookeeper, Consul, Etcd, Eureka 等 都是注册中心

1.1 客户端注册 (zookeeper)

服务向客户端进行 注册(register), 取消注册(unregister), 保持心跳(heartbeat)

缺点: 每一种语言都要实现不同的注册逻辑

客户端注册
客户端注册

1.2 第三方注册 (独立的服务 registrar)

使用registrar注册, 服务启动后通知registrar, regitrar在注册中心进行 register, unregister 和 heartbeat

缺点: registrar 必须支持高可用

第三方注册
第三方注册

1.3 客户端发现

Client (客户端) 负责查询可用服务地址, 以及保持Load Balance(负载均衡)

缺点: 每一种语言都要实现不同的注册逻辑

客户端发现
客户端发现

1.4 服务端发现

Server (服务端) 先请求Router, Router 负责查询可用服务地址 和 Load Balance (负载均衡)

缺点: Router 必须支持高可用

服务端发现
服务端发现

1.5 Consul

1.6 Eureka

1.7 SmartStack

1.8 Etcd

1.9 Nacos

2. API 网关

Gateway 网关是用户请求系统进入的唯一节点 (借鉴Fascade 设计模式),Gateway再分发给每个服务

Gateway 还可以进行: 授权, 监控,负载均衡,缓存,请求切片和管理,静态响应处理 等

Gateway 负责请求转发, 请求合成,协议转换; 支持web服务和非web服务间转换,比如 http 和 websocket

API网关
API网关

2.1 请求转发

Client (前端) 请求Server(后端) 网关通过负载转发到对应服务(Service)上

2.2 响应合并

把调用多个接口的工作合并成一次,对外统一展示 (Fascade模式)

2.3 协议转换

支持 SOAP,JMS,Rest 之间 协议转换

2.4 数据转换

支持 Xml,JSON 之间 格式转换

2.5 安全认证

  1. 基于 token 进行登录,鉴权等
  2. 传输数据, 内容加密 (Https 配合 Post 请求),进入后端解密
  3. 基于 OAuth2.0 服务安全认证 (授权码,客户端,密码模式等)

3. 配置中心

进行系统参数配置 (property,yaml)

满足: 高效获取,实时感知,分布式访问

3.1 zookeeper 配置中心

采用配置加载到内存解决高效获取问题

采用zookeeper监听解决实时感知问题

zookeeper 内部结构图
zookeeper 内部结构图

3.2 配置中心数据分类

  • 服务配置 (包括: 数据库服务,队列服务,缓存服务)
  • 各类开关 (包括: 功能开关,业务开关,服务开关)
  • 业务配置 (包括: 模块A,模块B,模块C)

4. 事件调度

Java 服务中常用消息队列进行事件统一调度, 比如 rabbitMq, kafka, activemq 等

5. 服务跟踪

使用 SpringCloud Sleuth 追踪服务之间传播过程

  1. 在request 进入 gateway时,给每一个ruquest 赋予 TraceID
  2. 用 SpanID 记录 开始和结束节点的TimeStamp
  3. 引入 spring-cloud-starter-sleuth 依赖,跟踪消息队列的请求, Gateway的请求,Http Request的请求等

6. 服务熔断

使用原因: 防止服务雪崩 (Service Provider 基础服务 不可用 -- 导致 Service Consumer 服务模块也不可用; 并且将这种不可用逐渐放大)

原理: 许多类似错误发生后,禁止Server被访问,直到被修正才重新允许访问

Hystrix 原理:

后端请求失败比例 >= 50%, 断路 (OPEN)

等一段时间后, 调整到 HALF_OPEN 然后判断是否被修正, 修正则调整为Close,未修正则调整为OPEN

服务熔断逻辑
服务熔断逻辑

Java服务中常用Swagger进行API管理

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 服务注册发现
    • 1.1 客户端注册 (zookeeper)
      • 1.2 第三方注册 (独立的服务 registrar)
        • 1.3 客户端发现
          • 1.4 服务端发现
            • 1.5 Consul
              • 1.6 Eureka
                • 1.7 SmartStack
                  • 1.8 Etcd
                    • 1.9 Nacos
                    • 2. API 网关
                      • 2.1 请求转发
                        • 2.2 响应合并
                          • 2.3 协议转换
                            • 2.4 数据转换
                              • 2.5 安全认证
                              • 3. 配置中心
                                • 3.1 zookeeper 配置中心
                                  • 3.2 配置中心数据分类
                                  • 4. 事件调度
                                  • 5. 服务跟踪
                                  • 6. 服务熔断
                                  相关产品与服务
                                  负载均衡
                                  负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档