首页 > 其他分享 >微服务架构设计

微服务架构设计

时间:2023-08-02 15:37:22浏览次数:34  
标签:架构设计 AES 服务 请求 验证 RSA 入参 加密

架构图

微服务架构设计_推送

架构说明

  1. 展示层

    1. 终端展示,包括PC WEB、ANDROID、IOS、微信小程序、H5。

  2. 网络

    1. Nginx 静态HTTP服务器、反向代理服务器、负载均衡、 SSL证书部署

  3. 网关

    1. Gateway 统一前端请求URL,作用是请求路由、用户合法性鉴权、请求链路跟踪、出入参数据结构转换、接口限流、熔断、数据安全验证支持入参MD5签名SIGN、入参业务参数RSA分段加密、出入参采用RSA+AES双向加密

  4. 应用层

    1. 支付系统

    2. XXL-JOB

      1. 定时任务调度、监控、配置

  5. 存储层

    1. MySQL 做业务数据,结构化存储

    2. OSS云存储,做文件、图片、视频存储

    3. Redis 数据缓存,token鉴权、session共享、分布式锁、接口幂等

  6. 业务告警

    1. 根据业务告警等级,可以选择短信、钉钉群、邮箱,三种方式进行告警通知

  7. 中间件

    1. RocketMQ 系统解耦、流量削锋、异步、延时消息、顺序消息、事务消息、解决缓存数据库一致性、基于死信队列转发做循环调用接口

    2. 结算单数据推送

    3. 灵工收款卡变更推送

    4. 任务、供应商企业,主题变更推送

  8. 基础依赖

    1. 银行前置机,上行、下行通信,做数据安全加密

  9. 容器化部署

    1. coding

      1. 代码托管平台

    2. Jenkins

      1. 服务构建

        1. 拉去代码托管平台代码,执行构建脚本生成镜像文件

        2. 推送镜像文件到ACR镜像仓库

    3. ACR镜像仓库服务

      1. 用于存放企业私有的,服务镜像文件

      2. 触发器配置

        1. 触发ACK部署镜像

    4. ACK k8s集权服务

      1. 创建服务

        1. 数据库

        2. Redis

        3. RocketMQ

        4. 业务服务

      2. 拉取镜像,发布服务

      3. 监控

        1. 支持容器级别和VM级别的监控

      4. 网络

        1. 支持跨宿主机容器间互联,支持高性能VPC网络驱动

      5. 集成SLB负载均衡

      6. 日志

        1. 支持日志自动采集和日志服务集成。

数据传输结构

  1.   请求类型

    1. cnotallow=application/json;UTF-8

  1.   入参数据结构

    1.     请求header
      1. header

        1. appId

          1. 客户端唯一标识

        2. terminalVersion

          1. 1

            1. 平台

          2. 2

            1. pay 支付系统

        3. terminalType

          1. H5

          2. IOS

          3. ANDROID

          4. WEB

          5. APPLETS

        4. encryType

          1. SIGN

          2. RSA

          3. RSA_AES

        5. encryKey

          1. RSA 公钥加密后的 AES key

          2. RSA 公钥加密后的MD5签名的动态盐dynicSalt

        6. sign

          1. sign的生成则是将所有参数按字典顺序排列,拼接value后+动态盐,取MD5特征码再转base64

        7. token

          1. 用户登录后生成的token

        8. ip

        9. system

          1. app version

            1. App 版本

          2. phone model

            1. 手机型号

          3. system version

            1. 系统版本

          4. clientType

            1. PC端WEB

            2. 移动端H5

            3. IOS

            4. ANDROID

          5. lat 纬度

          6. lng 经度

    2.     请求body
      1.       安全验证类型为SIGN,对应body数据结构
        1. body

          1. nonce

            1. nonce取的是随机数再MD5的值

          2. timestamp

            1. 时间戳

          3. params

            1. flow_no

              1. 请求流水号

            2. 业务参数

      2.       安全验证类型encryKey为RSA,对应body数据结构
        1. body

          1. params

            1. BASE64解密RSA公钥

            2. 业务参数通过RSA公钥,进行分段加密后的密文

      3.       安全验证类型encryKey为RSA+AES,对应body数据结构
        1. body

          1. params

            1. 业务参数通过AES加密后的密文


  1.   返回数据结构

    1.     返回response 结构

      1. code 状态码

        1. 000000 正常

        2. 100000-199999 参数验证

        3. 200000-299999 系统异常

        4. 300000-399999 依赖银行

        5. 300000-399999 依赖第三方

        6. 400000-499999 签名加密类

      2. msg 描述信息

      3. errorCode 错误码(方便定位问题)

      4. errorMsg 错误描述(方便定位问题)

      5. data 业务数据

  1.   安全验证类型为SIGN,对应response 数据结构

    1. 不做响应加密,明文返回

  1.   安全验证类型为RSA,对应response 数据结构

    1. 不做响应加密,明文返回

  1.   安全验证类型为RSA+AES,对应response 数据结构

    1. BASE64解密RSA私钥

    2. 使用RSA 私钥,解密入参 encryKey,得到的AES key,

    3. AES key,对出参做对称加密返回

微服务依赖调用

  1.   使用openFeign进行接口调用

    1.     feign包有服务提供方生成

网关

  1.   Gateway

  1.   路由
    1.      路由方案
      1.       兼容jlf平台

        1. 根据请求header中的version

          1. 1.0 为jlf平台,直接转发

      2.       新路由规则

        1. 根据请求header中的version

          1. 2.0 为jlf-pay支付系统

            1. 转发路径拼接

              1. 获取请求路径

  1.   鉴权
    1.     token 用户合法性验证
      1. 请求jlf平台系统,验证token有效性接口

        1. 验证token合法性

  1.   数据安全
    1.     数据签名
      1.       客户端生成签名规则

        1. 将所有参数按字典ASCII排序

        2. 拼接value后+动态盐,使用MD5生成特征值

          1. String msg = nnotallow="f5a7d812bff41752cbd8a715aa4be13d"&encryType="SIGN"&timestamp=1672207007&params="{\"flowNo\":\"4ee11edc9dee61189caf4833bfcb7052\"}"

          2. md5(msg+dynicSalt)

      2.       服务端验证签名

        1. 首先验证时间戳,确定该请求处于当前时间的60s以内

        2. 验证nonce,在redis中查看24小时内的数据中是否存在该nonce

        3. 验证sign签名

          1. 将除了sign字段,所有参数按字典ASCII排序

          2. 拼接value后+动态盐,使用MD5生成特征值

            1. String msg = nnotallow="f5a7d812bff41752cbd8a715aa4be13d"&encryType="SIGN"&timestamp=1672207007&params="{\"flowNo\":\"4ee11edc9dee61189caf4833bfcb7052\"}"

            2. md5(msg+dynicSalt)

          3. 使用生成的sign和入参中的sign做比较

    2.     数据加密
      1.       RSA

        1.         客户端加密请求业务入参

          1. 使用RSA公钥,对业务参数进行加密(分段加密)

            1. Js rsa 分段加密参考https://www.jianshu.com/p/2811a81f7fe0

        2.         服务端解密请求业务入参

          1. 1.使用RSA私钥,对业务入参进行解密(分段加解密)

      2.       RSA+AES

        1.         客户端加密请求业务入参

          1. 动态生成AES key

          2. AES 加密

          3. RSA 公钥加密 AES key,传递给服务端

        2.         服务端解密请求业务入参

          1. 使用RSA私钥,解密encryKey生成AES key

          2. AES 解密

  1.   数据转换
    1.     根据请求header中的version
      1.       1.0 为jlf平台,不做处理

      2.       2.0 为jlf-pay支付系统

        1.         安全验证方式

          1.           token 解析

            1. 通过token,解析出用户ID,放入header

          2.           签名SIGN

            1. 验证签名通过

              1. 读取业务入参params,路由转发时,重新写入请求body中

          3.           数据加密

            1. 解密通过后

              1. 将解密后的明文业务参数,路由转发时,重新写入请求body中





标签:架构设计,AES,服务,请求,验证,RSA,入参,加密
From: https://blog.51cto.com/u_16209090/6938554

相关文章

  • 盘点HTTP代理服务器能用于哪些网络工作
     亲爱的小伙伴们!今天我来和你分享的内容是,HTTP代理服务器能用于哪些网络工作? HTTP代理服务器作为一种功能强大的工具,可以应用于多种网络任务,让你事半功倍,发现更多有趣的用途。 1.网络舆情监控:在这个信息爆炸的时代,网络舆情监控变得越来越重要。通过使用HTTP代理服务器,你可......
  • 融资租赁公司数字化架构设计
    融资租赁公司数字化架构设计近年来,融资租赁行业完成治理整顿,再次呈现出蓬勃发展的势头,在我国经济建设中发挥着积极作用。2018年后,我国融资租赁企业数量稳定在12000家左右,租赁合同额达到6万亿元的规模,在支持企业装备升级方面起到了重要的助推作用。随着多家商业银行等金融机构的......
  • 数据库,数据库服务和数据库实例的区别
    数据库是一个逻辑上的概念,可以存储和管理大量数据;   数据库服务和数据库实例的区别主要在于:1.数据库服务:是指支持数据库系统的服务程序,通常由一组进程或线程组成,负责监听客户端的请求并提供相应的服务。数据库服务通常包括了多个数据库实例,并且可以支持多种不同的数据库系统......
  • 服务模型(客户端/服务器)
    服务模型创建功能包cd~/catkin_ws/srccatkin_create_pkglearning_serviceroscpprospystd_msgsgeometry_msgsturtlesim客户端Client如何实现一个客户端初始化ROS节点;创建一个Client实例;发布服务请求数据;等待Server处理之后的应答结果。客户端代码turtle_spqwn.......
  • 服务器数据恢复-raid5更换新磁盘在同步数据过程中又一块磁盘离线导致阵列崩溃的数据恢
    服务器数据恢复环境:某研究院一台DELL存储,15块硬盘搭建的一组RAID5磁盘阵列。该RAID5阵列只有一个卷组,该卷组占用了阵列的全部空间;该卷组只有一个起始位置为0扇区的XFS裸分区。服务器故障&初检&分析:该RAID5阵列中有一块硬盘由于未知原因离线,工作人员更换新硬盘,在RAID阵列进行数......
  • 音视频服务架构演进
    LiveVideoStackCon2022音视频技术大会北京站将于11月4日至5日在北京丽亭华苑酒店召开,本次大会将延续【音视频+无限可能】的主题,邀请业内众多企业及专家学者,将他们在过去一年乃至更长时间里对音视频在更多领域和场景下应用的探索、在实践中打磨优化技术的经验心得、对技术与商业......
  • js上传文件到服务器指定文件夹问题
    ​ 一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头......
  • 从《信息技术服务数据中心业务连续性等级评价准则》看数据备份
    5月23日,国家标准化管理委员会与国家市场监督管理总局发布了《信息技术服务数据中心业务连续性等级评价准则》,旨在适应各行各业逐步深入的数字化转型,提升全社会对数据中心服务中断风险的重视。信息技术服务数据中心业务连续性等级评价准则随着国家战略的落地实施,将诞生越来越多对数......
  • RD授权宽限期已过,且该服务尚未向安装有许可证的授权服务器注册。
    一台WindowsServer2008R2服务器出现了如下提示:RD授权宽限期已过,且该服务尚未向安装有许可证的授权服务器注册。需要使用RD授权服务器才能继续操作。在没有授权服务器的情况下,远程桌面会话主机服务器可以在初始启动之后运行120天。同样,还可能出现如下的气泡提示:远程桌面服务将停......
  • ubuntu中apache2搭建webdav服务
    1.apache2配置文件目录路径:/etc/apache2说明:1.1 *-enabled目录中的文件均为*-available目录中的文件链接。1.2 apache2启动时读取的文件均为*-enabled目录下的配置文件,因此若要某个配置生效,则需要将其链接到对应的enabled目录中。1.3 ports.conf配置文件用来配置监听......