操作 | 方案预想 | 可能遇到的问题 | 解决方案 | 正常结果 | 备注 |
获取zendesk到缓存 | 查找第三方网站是否可以提供相应接口; 如果没有,正则抓取, 抓取频率,考虑网站I/O 原计划1分钟 后更改为 5分钟抓取一次 抓取完成后存入数据库,考虑到功能特性不必要如此健壮,采用存入redis中其中有效期为60min,每5min覆盖一次数据 | 第三方网站不可用;布局更改; | 取之前有效期内(60min)前三条记录 如不存在提示 { "title": "公告系统维护中", "url": "https://bcexglobal.zendesk.com/hc/en-us" } | 每五分钟存入一次缓存中英文各三条,以覆盖形式存入 | 本地环境无异常,测试环境无异常 |
APP端调用数据 | 根据路由获取数据 | 缓存失效;缓存不存在 | 返回 { "title": "公告系统维护中", "url": "https://bcexglobal.zendesk.com/hc/en-us" } | 英文返回:{ "code": 0, "msg": "OK", "data": [ { "title": "New Trading Mechanism "Maker-Taker"will be launched", "url": "https://bcexglobal.zendesk.com/hc/en-us/articles/360010577893-New-Trading-Mechanism-Maker-Taker-will-be-launched" }, { "title": "Service Fee", "url": "https://bcexglobal.zendesk.com/hc/en-us/articles/360009200933-Service-Fee" }, { "title": "Example of making a deal :Registration – Deposit – Trading - Withdra ", "url": "https://bcexglobal.zendesk.com/hc/en-us/articles/360009073094-Example-of-making-a-deal-Registration-Deposit-Trading-Withdra-" } ] } 中文返回 { "code": 0, "msg": "OK", "data": [ { "title": "期货交易规则和网址", "url": "https://bcexglobal.zendesk.com/hc/zh-cn/articles/360010578653-%E6%9C%9F%E8%B4%A7%E4%BA%A4%E6%98%93%E8%A7%84%E5%88%99%E5%92%8C%E7%BD%91%E5%9D%80" }, { "title": "全新交易机制“Maker-Taker”重磅上线", "url": "https://bcexglobal.zendesk.com/hc/zh-cn/articles/360010577633-%E5%85%A8%E6%96%B0%E4%BA%A4%E6%98%93%E6%9C%BA%E5%88%B6-Maker-Taker-%E9%87%8D%E7%A3%85%E4%B8%8A%E7%BA%BF" }, { "title": "交易界面介绍及挂单说明", "url": "https://bcexglobal.zendesk.com/hc/zh-cn/articles/360009198613-%E4%BA%A4%E6%98%93%E7%95%8C%E9%9D%A2%E4%BB%8B%E7%BB%8D%E5%8F%8A%E6%8C%82%E5%8D%95%E8%AF%B4%E6%98%8E" } ] } | 本地环境无异常,测试环境无异常 |
Web端调用数据 | 根据路由获取数据 | 缓存失效;缓存不存在 | 返回 { "title": "公告系统维护中", "url": "https://bcexglobal.zendesk.com/hc/en-us" } | 英文返回:{ "code": 0, "msg": "OK", "data": [ { "title": "New Trading Mechanism "Maker-Taker"will be launched", "url": "https://bcexglobal.zendesk.com/hc/en-us/articles/360010577893-New-Trading-Mechanism-Maker-Taker-will-be-launched" }, { "title": "Service Fee", "url": "https://bcexglobal.zendesk.com/hc/en-us/articles/360009200933-Service-Fee" }, { "title": "Example of making a deal :Registration – Deposit – Trading - Withdra ", "url": "https://bcexglobal.zendesk.com/hc/en-us/articles/360009073094-Example-of-making-a-deal-Registration-Deposit-Trading-Withdra-" } ] } 中文返回 { "code": 0, "msg": "OK", "data": [ { "title": "期货交易规则和网址", "url": "https://bcexglobal.zendesk.com/hc/zh-cn/articles/360010578653-%E6%9C%9F%E8%B4%A7%E4%BA%A4%E6%98%93%E8%A7%84%E5%88%99%E5%92%8C%E7%BD%91%E5%9D%80" }, { "title": "全新交易机制“Maker-Taker”重磅上线", "url": "https://bcexglobal.zendesk.com/hc/zh-cn/articles/360010577633-%E5%85%A8%E6%96%B0%E4%BA%A4%E6%98%93%E6%9C%BA%E5%88%B6-Maker-Taker-%E9%87%8D%E7%A3%85%E4%B8%8A%E7%BA%BF" }, { "title": "交易界面介绍及挂单说明", "url": "https://bcexglobal.zendesk.com/hc/zh-cn/articles/360009198613-%E4%BA%A4%E6%98%93%E7%95%8C%E9%9D%A2%E4%BB%8B%E7%BB%8D%E5%8F%8A%E6%8C%82%E5%8D%95%E8%AF%B4%E6%98%8E" } ] } | 本地环境无异常,测试环境无异常 |
$this->success();友好提示 | 该业务牵扯业务过多,因为app可能只需要两种语言,而国际版 需要4种,甚至更多,所以选择采用按照模块来归类返回结果信息,即三个项目 都采用同一个success_msg文件,而不是success_app || success_bcex || success_exas 如果采用三个系统三个文件,对于后端来讲维护成本过高,会导致冗余。但是如果该业务需要水平扩展意向非常强,其实三个文件为最可取 预分析案例 方案一:app端发现code:0 msg:"验证成功"不是该模块需要的准确提示需要更改为 msg:"验证谷歌验证码成功",则只需要更改success_app文件即可, 但是在app刚更改完后bcex这边又又需求也是相同的模块,也需要把"验证成功"更改为"验证谷歌验证码成功",然后考虑到success_exas是否需要更改,于是去跟进相关负责人,相关负责人表示,不用修改,继续使用"验证成功"就可以了,于是这次更改只是执行了两个端的同步,但是另一个没有修改,如果业务做起来,这种情况会越来越多,差异化会越来越大,越来越不好管理,导致人员工作效能无收益化。 方案二:所有成功提示存入一个文件统一管理,最后发现app想要"验证谷歌验证码成功",但是bcex想要"谷歌验证成功",最后必须有一方妥协,客观来讲,遇到公用一个资源而且只有一个出口的情况下,只能一方采取妥协,或者坚持观点,所以会导致分歧,这会耗费一些不必要的沟通成本,但是方便是后端人员可以省出多余时间做一些优先级更高的事情。 总结 1.不考虑HA情况下,个人倾向方案二,第一是维护成本低,第二是主要开发返回的都是成功信息,绝大多数都是由后端提供后端如果三个文件,而且此类文件数据往往众多,少则500+多则1000+,难免会有人员疏忽导致推送信息错误,所以论一个经历过翻译bug折磨过的程序员来讲,我更倾向于方案二,即一个文件管理三个系统的翻译。 |
方案分析
最新推荐文章于 2022-01-07 12:04:46 发布