- 大的需求应预留时间方案设计和评审
- 方案时间( 包括跟相关依赖方确认方案时间)
- 确定依赖方工作量和时间点
- 工作项拆分
- 需求细节确认预留
- 开发时间
- 联调时间
- 配合测试时间(改bug)
- 单元测试
- 产品验收(测试环境)
- 需求改动预留
- 代码审核时间
- 处理其他突发事情预留
- 上线跟进
- 记录延期原因(需求变更,需求优先级调整,方案改动等;并同步相关人)
- 数据需求(可能影响方案实现细节)
参考场景
- 需求方需要一个相对准确的时间点;
- 给自己一个合理靠谱,相对科学的心理预估,避免坑人坑自己;
- 紧急情况特事特办。。。
To Be Continued …
不说废话,直接描述以下两个业务场景
请求----------> 服务A
[1.尝试获取锁]
[2.获取锁失败]
[3.返回失败(提示操作太快)]
2. 强依赖服务超时或“请求处理中”
请求----------> 服务A
[1.强依赖请求]----------> 服务B
[2.执行慢(网络抖动等原因)]
[3.请求服务B超时]
[4.返回失败(提示服务繁忙)]
本文只讲自己在使用canal之后的一些总结,关于canal的基础用法和介绍,不在这里赘述。
canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,建议配置binlog模式为row
原文:https://blog.csdn.net/liupeifeng3514/article/details/79687130
mysql的自带复制技术可分成三步:
基于canal&otter的复制技术和mysql复制类似,具有类比性:
两者的区别在于:
canal的工作原理:
CREATE USER 'canal_server' IDENTIFIED BY 'canal_server';GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal_server';show master statusshow binary logsshow binlog events in 'binlog.000368' limit 10; //pos 就是位点, 重启 canalcanal.instance.gtidon 是否启用mysql gtid的订阅模式
改变心态,以前会抱怨业务乱,但是业务在发展过程中乱是很正常的,也要有人来主动整理,同时也在考验和锻炼整理人的能力。
附录1: 交接列表示例(设计与开发)
## 项目管理
- 项目日程
- 会议记录
- 体制图
## 项目要件
- 业务功能清单
- 业务流程图
- 需求变更记录
- 操作说明书/用户手册
- 常见问题一览
## 界面设计
- UE设计稿
- 高保真画面设计稿
- 需求变更一览
## 系统设计
- 系统架构设计图
- 部署架构图DB关联图(ER图)和DB详细设计
- 系统间集成关系图
- 对接系统一览表和对接系统接口清单
## 开发制作
- 源代码
- 代码运行说明
## 测试
- 系统测试用例与系统测试报告书
- 性能测试用例与性能测试报告书
- 用户测试用例
- 用户测试签字
附录2: 交接列表示例(运维相关)
## 上线相关
- 上线判定表
- 上线操作记录
- 历次上线版本说明
- 临时对应体制
## 基础设施
- 硬件资源一览
- 软件资源一览
- 服务器/系统账号权限
- 系统工具 - 付费/免费软件
## 运维体制
- 运维工作一览表
- 近半年运维工作应对流程
- 运维体制
- 故障对应流程
- SLA(服务水平协议)
## DEVOPS(开发运维一体化)
- CI/CD工具与使用
- 监控工具
- 备份管理
- 代码库与分支管理
- 数据库相关配置与策略
提高bean类的覆盖率
定义一些过滤规则
使用 集成测试 覆盖若干个完整的核心流程
业务重构似乎是必然且合理的过程。一个项目刚开始为了快速上线和试错,总会或多或少出现不合理的地方。当项目活下来了,为了寻求下一步的发展,服务的稳定和扩展性提升了优先级,自然就需要有人来重构了,这也是项目历史遗留的技术债务。
从服务所依赖的重要程度上来区分有“强依赖”和“弱依赖”。
我们在灾备演练中,通过停其中一个机房,触发以下的问题
从而导致停机房瞬间接口失败率高,停机房期间接口时延上涨严重。由此引发我对“比例“问题的思考。
本文主要讲的第二种,并通过一个业务例子来展开描述
有以下业务场景,用户通过充值加金币:
充值请求----------> 服务A(充值服务)
[1.验证用户已经支付成功]
[2.发起加金币请求]------------>服务B(金币服务)
服务B如何验证加金币操作的请求是合法,从而保证资金安全呢?
通过秘钥和验签的方式无法避免以下问题
那么作为底层的金币服务,可以使用定义一种同样的回查机制,由各业务方实现查询逻辑,金币服务通过回查来检验请求的合法性,从而提高安全性。
充值请求----------> 服务A(充值服务)
[1.验证用户已经支付成功]
[2.发起加金币请求]------------>服务B(金币服务)
<----------[3.回调验证] [4.加金币] < pre>
回调接口返回格式
{
“code”: 0,
“message”: “success”
}
0 代表成功;其他:失败
回调用于查询业务订单是否存在,检验是否非法订单
一般实现逻辑建议业务方直接查主库