项目解决方案记录

描述问题 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:
职责分离,提升扩展性
架构升级的时候,可以分别进行优化

原文地址:https://www.cnblogs.com/huilei/p/12790828.html