.NET-记一次架构优化实战与方案-梳理篇

前言

  程序员输出是他敲写的代码,那么输入就是他思考好的设计。因此不做设计是不存在,设计只分优秀的设计和糟糕的设计。为了避免过度设计浪费成本,需要针对现有业务与问题进行展开。业务梳理是不可避免的。

  优化是无止尽,为了更有成效的优化,必须了解已有的问题与需要优化的目标。

业务背景

   通过做任务获得增值奖励等形式,达到以下目标:

  • 引导用户完成与业务相关指定行为,进而参与业务

  • 提高用户业务黏度,减少用户流失

  • 完成日常指定任务,培养用户APP使用习惯等

业务梳理

业务简述

  • 运营配置:由公司运营人员在运营系统对相关业务的活动进行配置。

    640?wx_fmt=png

    •  

  • 任务列表:配置好的活动将在用户端展示给用户观看,并给与【领奖】或【引导完成】的动作。

     

    640?wx_fmt=png

    •  

  • 底层服务:根据已完成的业务数据源与其相关的活动配置,进行定时跑批完成任务与发放奖励。

业务关键点

  • 三步骤

  参与、完成、领奖,一个用户完成一个活动必须经历前面三个步骤

  • 十二个任务类型

  注册、实名、风险评测、签到……意见反馈等等(避免过多的暴露公司业务,不一一例举

  • 三个周期

    • 不限

    • 按日

    • 按周

    • 按月

    • 一次性

    • 日循环

    • 周循环

    • 月循环

    • 单次循环

    • 参与周期:隐藏属性不需要配置

    • 任务周期:运营系统配置

    • 领奖周期:运营系统配置

  • 7天领奖有效期

业务例子

  为了更加好的理解,我以签到任务举个例子:

  配置:签到参与周期为每天一次,完成周期为周循环,领奖周期为按周,任务完成条件需要连续签到3天

  场景:用户已经在在星期日、星期一、星期二连续签到了3天,那么符合了完成条件,也在完成周期范围内,因此可以完成任务并且领奖。

  但是如果继续签到 星期三、四、五连续三天,虽然可以继续参与任务,但是不可完成,因为任务周期是周循环。

  再假设上面的配置只修改了完成周期为日循环,仍然是星期日到星期5连续签到,在星期二的时候可以完成并且领奖一次,在星期五的时候又可完成任务,但是这个时候不能领奖,因此领奖周期按周,所以必须等到下个星期日,才能领奖。

业务流程图

640?wx_fmt=png

存在问题

业务过度设计

  本业务一共有3个维度,参与、完成、领奖,其场景共有X*Y*Z的个数。原本产品的意思是想做一个灵活性比较大的配置,只要有新的活动来,可以随意组合应对。

  然而真实场景下,真正用到的组合并不多。

例如:

  签到几乎连续一个月签一个月才能完成与领奖。

  绑卡虽然可以多次参与,但是我们是希望他绑了后用,而不是希望他绑了再解绑然后又要他绑卡,所以我们会设置成一次性完成周期。

  可以看到不同类型的任务运营起来基本上是配置是固定的,很少说在通用配置里随意切换。

  这么多的组合情况也容易导致运营人员意外配置错误,并对于新加入参与业务的员工理解不友好。(先排除个人理解能力怎么样,反正我们的部分运营人员不理解怎么用,大部分时间都需要我们技术部门协助配置)

  我个人建议是简化

  周期就一个维度,在周期内完成了就可以领奖,周期过了就重置,无论是否领奖。也不需要有效期,有效期没有披露给用户,对用户来说不好接受,明明我放了几天显示能领的,怎么今天一看就不能领了呢?

  以上虽然是我个人想法,但是从产品的角度来看,既然已经做了一个“灵活性”这么好的,那完全没必要再花时间把他降级呀?

因此本系列只基于原业务进行讨论。

任务页面加载过慢

  有多慢?11秒。具体问题分析与优化在下一篇文章《.NET-记一次架构优化实战与方案-前端优化》讨论。

代码冗余

  因为早期开发时缺少沟通,很多可以公共的方法单独实现了一套。

时效性低

  这个问题主要是因为早期设计的活动触发方式由JOB定时跑导致的。

  有些人会认为,只要把JOB的频率调快就可以解决了,这不很简单吗?无论频率快慢都会存在相应的问题。

  以上具体两个问题问题分析与优化在下一篇文章《.NET-记一次架构优化实战与方案-底层服务优化》讨论。

结尾

  本篇花了一些时间整理了业务流程与问题点,为了更好的理解与验证是否最适合的方案,业务整理的过程无法避免的。如果有其他的问题,可在下方评论反馈给我。

原文地址: https://www.cnblogs.com/skychen1218/p/10320951.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3605 [USACO17JAN]Promotion Counting P(树状数组)

解析 做法很多的一道题 sol1 先求出dfs序,离线下来,然后按权值大小的顺序统计答案并插到对应的dfs序中 sol2 离散化后,dfs过程中动态维护树状数组,利用前后差值求出答案 sol3 树上dsu 就比较无脑了,暴力维护即可…

Build Roads

Build Roads 题意: n个点,每个点的值为a[i],求最小生成树 a[i]是通过题目中给出的程序得到(即a[i]如何得到的我们并不需要很了解) 题解: 肯定不能直接跑最小生成树,因为数据太大了 银川也有个类似的题,…

CF1672E-notepad.exe【交互,二分】

正题 题目链接:https://www.luogu.com.cn/problem/CF1672E 题目大意 有一个你不知道的长度为nnn的序列lll,你每次可以询问一个长度www。交互库会返回一个hhh表示最少能将lll分成多少连续段使得每一段[l,r][l,r][l,r]都满足∑ilrlir−l≤w\sum_{il}^rl_ir-l\leq w∑…

P3243 [HNOI2015]菜肴制作(拓扑排序、贪心)

解析 很好的题 也就是我没做出来的意思 反向思维似乎是我欠缺的 这道题也是 也许做题时应该多特意往这边想想 当正向看并没有太好的性质时,也许反过来能使题目豁然开朗 容易想到暴力n方如何做 (以下均指反图) 找到1所在的点,染色…

.NET Core 3.0 中的数据库驱动框架 System.Data

虽然没有得到很多关注,但System.Data对于.NET 中任何关系型数据库的访问都至关重要。因为其前身是 ActiveX Data Objects,所以它也被称为 ADO.NET。System.Data 提供了一个通用框架,是构建.NET 数据库驱动程序的基础。该框架提供了数据库驱动…

P3784-[SDOI2017]遗忘的集合【多项式ln,MTT,莫比乌斯反演】

正题 题目链接:https://www.luogu.com.cn/problem/P3784 题目大意 你若干个在[1,n][1,n][1,n]的不同数字组成序列aaa。 记录f(x)f(x)f(x)表示将xxx无序拆分成aaa中数字的和的方案数(一个数字可以使用多次)。 现在给出所有的f(x)%p(x∈[1,n])f(x)\%p\…

Matrix Problem

Matrix Problem 题意: 给你一个n * m的二维数据c,c的每个元素值为0或1 现在要求你构造同样大小的数组a和b,要求c[i][j] 1’的话,a[i][j] b[i][j] ‘1’,如果c[i][j] ‘0’.a[i][j]!b[i][j],且a和b中的1…

P3545HUR-Warehouse StoreP4053建筑抢修(反悔贪心、堆)

解析 两道很像的题 不能说相似&#xff0c;只能说是一模一样 感觉有火车载客的影子 想到开个堆来维护 在供不应求时弹出要求最高的即可 T1还得输出方案针麻烦 代码 你会发现几乎一毛一样 T1 #include<bits/stdc.h>const int N3e5100; const int M2e3100; const int …

ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露

一、前言在涉及到后端项目的开发中&#xff0c;如何实现对于用户权限的管控是需要我们首先考虑的&#xff0c;在实际开发过程中&#xff0c;我们可能会运用一些已经成熟的解决方案帮助我们实现这一功能&#xff0c;而在 Grapefruit.VuCore 这个项目中&#xff0c;我将使用 Jwt …

AT2293-[AGC009D] Uninity【贪心,状压】

正题 题目链接:https://www.luogu.com.cn/problem/AT2293 题目大意 给出一棵树&#xff0c;求它一棵点分树的最小深度。 1≤n≤1051\leq n\leq 10^51≤n≤105 解题思路 点分树的做法是直接找重心&#xff0c;但是两个重心我们很难确定找哪个&#xff0c;所以这个方法行不通。…

[2021-06-19] 提高组新手副本Ⅱ(联网,欧几里得,分解树,开关灯)

文章目录考试心路历程联网titlesolutioncode欧几里得titlesolutioncode分解树titlesolutioncode开关灯titlesolutioncode考试心路历程 佛了佛了&#xff0c;caocaocaocaocaocao 人直接炸嗨升天 并查集直接送走200200200分&#xff01;&#xff01;&#xff01;我屮艸芔茻 T1二…

模板:扫描线

那看似平凡的面积&#xff0c;是多少条线的织物啊 前言 突然发现自己之前没发过扫描线的模板 可能是因为之前的实现太差了 这次感觉实现的还是很不错的&#xff0c; 虽然常数比较大&#xff0c;但是好写啊&#xff01; 原来扫描线也是可以1A的 线段树上利用zld讲解的维护最小…

P4887-[模板]莫队二次离线(第十四分块(前体))

正题 题目链接:https://www.luogu.com.cn/problem/P4887 题目大意 给出一个长度为nnn的序列aaa。mmm次询问[l,r][l,r][l,r]求有多少个l≤i<j≤rl\leq i< j\leq rl≤i<j≤r满足aixoraja_i\ xor\ a_jai​ xor aj​二进制下恰好有kkk个111。 1≤n,q≤105,0≤ai,k<21…

在.NET Core中设计自己的服务宿主(Service Hosting)框架

很多时候我们都会有设计一个后台服务的需求&#xff0c;比如&#xff0c;传统的Windows Service&#xff0c;或者Linux下的守护进程。这类应用的一个共同特点就是后台运行&#xff0c;并且不占用控制台界面。通常情况下&#xff0c;后台服务在提供服务时&#xff0c;会通过日志…

CF1131 G. Most Dangerous Shark(DP+单调栈优化)

文章目录problemsolutioncodeproblem solution dpi:dp_i:dpi​: 前iii个多米诺骨牌全都倒下的最小花费 li,ril_i,r_ili​,ri​分别表示第iii个多米诺骨牌倒下时所能波及到的最左/右位置 往左倒&#xff0c;则[li,i)[l_i,i)[li​,i)内的牌都可以选择性地先推倒 dpimin⁡{dpjcos…

Cat Virus

Cat Virus 题意&#xff1a; 让你构造一颗树&#xff0c;要求如果一个点为黑&#xff0c;其子树全为黑&#xff0c;白点任意&#xff0c;现在让你构造一棵树&#xff0c;使其染色方案数为K&#xff0c;节点尽可能少 题解&#xff1a; 首先画出k<9的全部情况&#xff0c;并…

NOIP2021:游记

前言 似乎前一秒还在为接下来的考试紧张&#xff0c;下一秒就已经走出了考场 恍惚之间突然意识到&#xff0c;有些日子&#xff0c;可能真的变成了过往 停止emo 感谢FFC&#xff0c;感谢大连&#xff0c;使这次考试顺利进行 主要的问题是T4的暴力 写的时候只有不到一个点&…

微软发布XAML Studio工具:快速构建UWP XAML原型

IT之家1月30日消息 微软车库的最新项目XAML Studio已经在Windows 10应用商店上架&#xff0c;将帮助开发人员快速构建UWP XAML原型&#xff0c;以后可以轻松地将其复制到Visual Studio中。它将允许开发人员实时预览他们的XAML代码&#xff0c;并与结果进行交互&#xff0c;就像…

P5113-Sabbat of the witch【分块,基数排序】

正题 题目链接:https://www.luogu.com.cn/problem/P5113 题目大意 一个长度为nnn的序列aaa&#xff0c;mmm次要求支持以下操作 将区间[l,r][l,r][l,r]都变为xxx。询问区间[l,r][l,r][l,r]的和。将第xxx次操作111撤销。 强制在线 1≤n,m≤105,1≤ai,x≤1091\leq n,m\leq 10^…

C. The Sports Festival

C. The Sports Festival 题意&#xff1a; n个数&#xff0c;依次将所有数加入到区间内&#xff0c;每次得到一个k&#xff0c;k等于当前区间的最大值减最小值&#xff0c; 求所有k的和的最小值 题解&#xff1a; 一开始就没往dp那方面想&#xff0c;自己在dp这方面的理解还…