• Home
  • Archives
  • 随笔
所有文章 友链 关于我

  • Home
  • Archives
  • 随笔

业务架构的思考理解

发布于: 2023-06-06
更新于: 2023-07-09

业务架构思考

内容总结:主要是为了总结一些需要前沿探讨的一些内容设计

划分整体业务流程

拿售后投诉举例,整个流程分为 会员端发起 / 商家协商 / 平台介入

再用角色进行拆解时,整个业务可以分为基础能力【业务数据承载、流转】、会员端交互、平台小二交互

在面对多种业务类型承接时,通过业务类型标识区分不同大业务场景,比如投诉、举报等,对于业务场景中的小身份区别通过业务身份

对于业务类型大的场景通过业务隔离进行区分,而小的业务场景通过拓展点区分具体细节

设定动作流

确定关键节点

确定业务的关键节点,比如说 创建 / 协商 / 平台介入 / 判决/ 完结

在对应的关键节点上,设置对应可执行的动作活动

比如说创建节点毫无疑问动作是创建,协商里面是提供方案、拒绝方案

确定节点中行为

在有了这些业务的划分后,思考的是一个通用的动作里面需要有什么模板行为

拿创建、提供方案来说,都会涉及到入参的校验,或者动作节点检查之类,那么首先我们需要preCheck的校验逻辑

在前置校验通过后,可能不同业务场景对这个动作要求理解不同,举个例子比如普通商家人手少,需要的协商时间较长,而官营的人手多,协商时间可以适当减少,那么像这些参数组装,我们可以设计一个prepare进行承接内容

在具体业务参数准备好了,然后我们要做的是基础能力的建设,比如将创建的投诉数据落到数据库,这里需要execute

在执行完后可能会涉及一些其他系统的状态更新,我们可以在afterExecute中实现一些消息重试、幂等的逻辑进行状态的异步更新

总结下来我们会需要 precheck/prepare/execute/afterExecute等基础方法,像这些可以作为大的能力作为沉淀,并开放拓展点给到不同业务方进行实现

具体动作的拆分

在开拓展点的时候,就很考验对业务的理解,以及对未来的发展的一个前瞻规划性,拓展点方向大了,就会导致后续新业务接入进来,需要实现内容多,而且平台侧难以规划整体方向,而如果规划小了,又会导致拓展点频出,平台侧基本没有能力沉淀

比如说像会员端交互上,往往就是不同页面承载了不同的业务功能,那么对于不同页面可以视为不同活动

总结交互上面的大的方向,基本上也是precheck / prepare / render / afterRender

细分时,交互上可能不同端的处理不一样,可以设置renderForPC / ForH5的场景

在业务详情页时,涉及到业务详情渲染,可操作按钮列表等,像这些就可以按基本栏块进行拆解设置拓展点

数据驱动分析

在业务已经有基本的业务流程,需要进一步发展时,数据分析是一个很好的方法,结合BI等对这些数据进行分析

业务切分埋点

首先我们要对业务场景进行切分,然后针对这个场景划分需要埋点的数据场景

拿对耗时敏感的交互端业务来分析,对会员来说,敏感的点在于页面加载时长,交互操作时长

对于页面加载时长,在上文中分析过页面其实也可以抽象成一种能力,本质上也是分校验、准备数据、渲染具体内容等,那就可以在抽象页面类中,做埋点数据日志的登记

比如说,会员请求到页面接口时,开始计时,在precheck、prepare、render中记录对应的时间,并且将对应具体页面实现记录下来,以及对应的一些动作行为

数据分析场景

有了这个大方向的数据记录,通过日志的抓取清洗到数仓、实时日志分析中,我们就可以观察到具体是哪些页面耗时长,在页面中,我们是在precheck、prepare请求外部数据、还是render渲染页面中耗时较长,针对这些情况做具体分析

在到具体内容时,比如说页面的按钮交互,往往就是按钮下放了跳转链接or请求外部接口行为,对于跳转链接的行为可以让前端做统一按钮点击的数据埋点,而后端给前端返回按钮的时候,不单止要返回按钮名称、按钮内嵌的链接,还应该放置一些按钮唯一标识、以及如果有灰度业务的话,也可以在拓展属性中设置灰度标,这样子便于前端埋点的数据抽取给数仓能做进一步的分析

而请求外部接口的行为,可以通过aop切面的能力,将外部接口首先收拢到仓储层,在通过注解将调用外部接口的行为进行记录,记录请求时间start、end、接口耗时、以及可能需要的输入输出结果、接口名称、接口描述、接口唯一标识等,在接口唯一标识中,我们也可以在做一些区分,比如说都是交互层请求的数据,可以带上 proxy:pageRender:queryXXX 在日志切分时,就可以通过proxy、pageRender切分出对应的业务进行分析查询

除了耗时外,我们也可以通过在抽象层进行捕获异常,将异常信息进行记录,标记具体页面、具体动作点异常类型,后面基于这些异常的数据分析,也可以作为日常的监控持续维护系统的健康和运营

业务架构的思考理解
/archives/ab30f775/
作者
tyrantqiao
发布于
2023-06-06
更新于
2023-07-09
许可协议
CC BY-NC-SA 4.0
赏

蟹蟹大佬的打赏,大家一起进步

支付宝
微信
  • 架构
  • Java

扫一扫,分享到微信

微信分享二维码
Mysql基础看这篇就够了
chatgpt使用经验
© 2024 tyrantqiao 本站总访问量次 本站访客数人次 载入天数...载入时分秒...
  • 所有文章
  • 友链
  • 关于我

tag:

  • 复盘
  • 我
  • 规划
  • java
  • 面试
  • 源码
  • 架构
  • Hadoop
  • HTTP
  • TCP
  • 学习笔记
  • IDEA
  • maven
  • idea
  • Java
  • jdk
  • 面经
  • linux
  • 爱情
  • mysql
  • 性能
  • sql
  • Mysql
  • JAVA
  • 技术
  • Redis
  • MQ
  • Spring
  • 数据库
  • TIDB
  • spring
  • unity
  • chatgpt
  • 经验分享
  • 前端
  • redis
  • vue
  • git
  • shadowsocks
  • hexo
  • blog
  • bug
  • 开发
  • 业务
  • jvm
  • 算法
  • MySQL
  • nginx
  • Linux
  • mq
  • db
  • springCloud
  • ssh
  • python
  • 爬虫
  • test
  • vim
  • 影视剧
  • 中间件
  • 事务
  • 性格
  • 音乐
  • 程序员
  • 随笔
  • mybatis
  • 演讲
  • 域名
  • 猫咪
  • 她
  • github
  • 计划
  • 旅游
  • 软件
  • 心理
  • 情商
  • 幽默
  • 才艺
  • 穿搭
  • 编程
  • 排序
  • 查找
  • 缓存
  • 网络
  • 设计模式
  • c
  • 课程设计
  • centos
  • 数学
  • 本网站主题yilia设计者的主页
如果有问题或者想讨论的可以联系[email protected]或者[email protected]