谈谈业务逻辑中灰度功能的实现
来源:互联网 发布:欢乐牛牛源码 编辑:程序博客网 时间:2024/06/16 08:20
很庆幸,自己初入职场的时候,有一个要求严格的师父,从编码习惯,风格到函数名,类名的命名规则,以及写代码时各种设计的原则,还有思考解决问题的方式,突然感觉,自己真的学到了很多,感谢朱老大咯,先分享下今天设计一个灰度功能的例子吧
先介绍下灰度功能:
1.有灰度开关用来控制是否灰度
2.有灰度百分比,根据用户身份标识信息做字符串hash,然后对100取余,对百分比用户做灰度
3.每个接口有自己不同的灰度百分比和灰度开关
4.有白名单功能,对在白名单内的人做灰度
自己的设计:当时考虑较少,在一个通用类里面加载了灰度开关信息以及灰度百分比函数等,然后在需要做灰度的地方调用这些函数
优点:实现简单方便,编码简单
缺点:1.当需要灰度的接口函数越来越多的时候,会导致这个通用类类越来越大
2.对外提供的不是一个整体的函数,而是需要用户在使用的时候自行处理,判断需要哪些灰度逻辑等
3.没有对这个方法进行封装,可扩展性不强
4.没有定时读取配置文件的功能,每次修改都需要重启服务
改良后的设计:1.将和灰度相关的逻辑都放在一个类里面
2.这个类对外提供的接口已经封装好了,返回值是 true或者false,返回值代表灰度还是不灰度
3.考虑类内的哪些函数是通用函数,哪些函数和业务逻辑相关
4.读取配置文件的过程是定时读取的,方便修改
5.定时读取要考虑 在读取的时候其他地方有没有正在使用,就在在对外提供的方法里面要先做一次值拷贝,在定时加载的地方也做一次值拷贝,就可以解决问题。
优点:见自己设计的缺点
缺点:就是编码比较麻烦
- 谈谈业务逻辑中灰度功能的实现
- 工作中业务和功能逻辑分离
- 什么是业务逻辑层(业务层)及业务逻辑层(业务层)的功能
- Delphi中实现界面与业务逻辑的分离
- Delphi中DLL封装业务逻辑的实现
- 在 Laravel 5 中使用 Repository 模式实现业务逻辑和数据访问的分离
- 在 Laravel 5 中使用 Repository 模式实现业务逻辑和数据访问的分离
- mvc的业务逻辑
- 业务逻辑的概念
- 业务逻辑实现方式选择
- 谈谈我们的游戏逻辑服务器实现(一)
- 业务逻辑与技术实现的关联--XXXX项目
- 定期任务的业务及其实现逻辑简单记录
- APP开发实战12-业务逻辑的实现
- (5)业务逻辑的实现:数据如何处理
- 商品浏览系统之业务逻辑类的实现
- 简易购物车业务逻辑类的实现
- 关于软件中业务逻辑的形式化表现
- Java编写Struts2案例--【用户登录】
- 聚类算法(二):DBSCAN算法
- Xcode乱套了怎么恢复默认设置?
- thinkphp3.2 验证码生成和点击刷新验证码示例
- 依赖倒置、控制反转和依赖注入辨析
- 谈谈业务逻辑中灰度功能的实现
- fedora21客户端登录centos7服务器创建ssh无密码
- mysql_jdbc连接说明
- Pascal教程
- java 回调函数(callback)详解
- Eclipse快捷键
- 《SDN: Software Defined Networks》读书笔记1--控制层与数据层分离
- pat advanced 1105
- 通排序与基数排序