zoukankan      html  css  js  c++  java
  • 项目解决方案记录

    描述问题 STAR法则:

    situation

    task

    action

    result

    1、对话平台

    a、资源模版子系统

    situation

    大量的规则代码,耦合,低效

    task

    业务层面进行抽象,规则抽象成模版,降低系统耦合

    1.流程“嵌入”在多个应用程序代码中,流程无法复用,重复开发

    2.围绕输入/输出、SLA等存在紧密耦合和假设,使得难以使用业务需求的变化

    服务开放平台: 把现有的服务接口通过统一的开放平台暴露给合作方。

    API GateWay: 把现有的service服务,通过公共的http 网关暴露http接口,不需要每一个团队再自己搭建web 服务。

    泛化需求的标准化对接:集团内部使用的通用场景,服务之间的调用都可以使用,去除强制依赖服务方的api jar包。

    action

    配置管理平台

    配置api

    result

    提升效率 pm rd

    b、服务泛化依赖

    situation

    平台有很多接口和下游业务接口紧耦合的状态,需要了解业务细节、关注业务接口升级、强依赖api

    task

    适配器在平台? 在业务方? 都不太友好

    接触耦合,加一层服务泛化能力,平台不再关注业务细节

    参考 netflix conductor

    action

    业务描述语言DSL

    泛化调用

    result

    关注自身 ,接触耦合

    c、画像子系统

    situation

    查询画像接口

    task

    响应慢

    action

    同步转异步,串行转并行,循环转批量

    result

    接口响应变快

    架构合理性高

    2、鉴权

    situation

    语言平台内部的鉴权

    task

    成本第 高效率

    action

    auth2 客户端方案

    读:降级

    写:限流、缓存分桶

    可靠性:local file

    result

    满足

    3、理财

    situation

    理财超卖

    task

    额度控制

    action

    精准 分布式锁  高并发情况下影响性能 悲观锁

    非精准  trick方案

    result

    非精准

    4、低价提醒

    situation

    给用户推送低价

    task

    db瓶颈

    action

    定时 变成 mq驱动

    result

    瓶颈 和 实时性

    5、缓存大key 优化

    https://juejin.im/post/5c19be51f265da615c593351

    https://tech.meituan.com/2017/03/17/cache-about.html

    https://www.cnblogs.com/rjzheng/p/10874537.html

    https://www.jianshu.com/p/176c8f8b8eb1

    hot key

    big key

    https://gitee.com/itopener/springboot

    https://my.oschina.net/dengfuwei/blog/1616221

    总结:

    Spring cache:

    aop: 解耦业务逻辑和缓存实现

    可扩展:  cache 、 cacheManager

    自定义逻辑:

    接入cat监控、熔断降级策略、多级缓存

    解决: 击穿 穿透 雪崩

    支持设置有效期、过期时间

    https://www.jianshu.com/p/275cb42080d9

    缓存读:

    cache only

    read throuth

    缓存更新:

    主动mq

    定时任务

    被动发起

    6、 信贷B端业务 CQRS改造

    S:
    信贷的CRM系统,维护了信贷业务的核心数据(还款方式、利率等)
    老的架构单一,所有功能耦合在一个服务里
    BD: 写数据(增加、修改、删除)
    各个不同业务方: 读取数据,线上接口方式
    问题:
    可用性、扩展性、效率低

    T:
    系统重构
    指导的方法论是: 读写拆分,CQRS

    A:
    CRM单体系统 -> CRM Command System + CRM Query System

    Command System:
    数据录入
    事件通知 databus组件

    Query System:
    构建数据查询视图 db + redis + es

    数据保障机制:
    数据同步依赖中间件,需要提供兜底的方案
    延迟检测job + 补偿Job(只覆盖了核心部分)

    R:
    职责分离,提升扩展性
    架构升级的时候,可以分别进行优化

  • 相关阅读:
    rancher2.x添加node的坑。
    k8s相关端口表-以及周边工具
    基于Helm和Operator的K8S应用管理的分享
    iptables -F 与 -X 区别
    ansible批量免秘登录
    keepalived工作原理和配置说明
    k8s使用nfs动态存储(已测试成功)
    ansible-playbook快速入门填坑
    Service Account和其secrets 作用和场景,看了不亏。。
    kubectl管理多个k8s集群
  • 原文地址:https://www.cnblogs.com/huilei/p/12790828.html
Copyright © 2011-2022 走看看