• Home
  • 归档
文章检索 作品与友邻 关于我
暴君乔博客
Home 归档

业务架构的思考理解

发布于: 2023-06-06
更新于: 2023-07-09
文章目录
  1. 业务架构思考
    1. 划分整体业务流程
    2. 设定动作流
    3. 具体动作的拆分
    4. 数据驱动分析

业务架构思考

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

划分整体业务流程

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

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

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

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

设定动作流

确定关键节点

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

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

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

确定节点中行为

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

拿创建、提供方案来说,都会涉及到入参的校验,或者动作节点检查之类,那么首先我们需要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使用经验
© 2026 tyrantqiao 本站总访问量次 本站访客数人次 载入天数...载入时分秒...
  • 文章检索
  • 作品与友邻
  • 关于我

展开标签

  • 随笔
  • 旅行
  • Java
  • 面经
  • 源码
  • 架构
  • Hadoop
  • 计算机网络
  • 技术
  • IDEA
  • maven
  • JDK
  • Linux
  • MySQL
  • 性能
  • 数据库
  • Redis
  • MQ
  • Spring
  • SquirrelFin
  • 记账
  • Android
  • 个人财务
  • TIDB
  • unity
  • chatgpt
  • 前端
  • Vue
  • Git
  • shadowsocks
  • Hexo
  • 问题排查
  • 业务
  • JVM
  • 算法
  • nginx
  • ssh
  • Python
  • 爬虫
  • test
  • vim
  • 影视剧
  • 中间件
  • 事务
  • 表达
  • 运动
  • mybatis
  • 域名
  • AI
  • 产品
  • 家装
  • 土巴兔
  • github
  • 软件
  • 个人项目
  • Leaves
  • 幽默
  • 穿搭
  • 画画
  • 缓存
  • 摄影
  • 设计模式
  • c
  • 课程设计
  • 调酒
  • 数学

Collection

作品与友邻

我做的小工具、朋友的站点和一些长期值得回访的灵感来源。

  • 土 土巴兔 AI 导购交互演示 可点击体验用户导购、平台运营、装修公司、材料商及 AI 话术知识库的多端增长流程。 /demos/tubatu-ai-guide/
  • L Leaves 行程记录 我做的行程记录页面小工具,用来沉淀旅行路线、日程安排和途中的灵感。 https://leaves.tyrantqiao.com/
  • 本 本网站主题yilia设计者的主页 http://litten.me/
tyrantqiao的头像

tyrantqiao

github rss qq mail facebook linkedin

About

关于我

代码、海浪和持续折腾,都是生活的一部分。

<div class="aboutme-card"> <p class="aboutme-eyebrow">tyrantqiao</p> <h3>Java 全栈开发</h3> <p>常年和 Java、后端服务、前端工程、数据与部署打交道,喜欢把复杂问题拆开、写清楚,也把踩坑过程整理成文章留给后来的人。</p> <div class="aboutme-tags"> <span>Java</span> <span>Full Stack</span> <span>Backend</span> <span>Frontend</span> <span>Extreme Sports</span> </div> <p>工作之外偏爱冲浪等极限运动,享受在浪上找平衡,也享受在代码里找边界。</p> <div class="aboutme-contact"> <a href="mailto:[email protected]">Gmail</a> <a href="mailto:[email protected]">QQ Mail</a> </div> </div>