系统设计实践
短链接服务系统开发
系统分库分表改造的注意事项
分表位确定规则
往报-自己的请求:截取 ipid ;
来报-别人的请求:流水号的hashcode对100取余;
系统设计基础知识
系统安全
对外输出的 web程序 必须要做的安全检测:referer, cors, redirect, fileupload等,可以依赖一些开源的安全包,做个性化配置。
应用模块化的最佳实践
1 |
|
facade –api接口(本地实现并暴露tr服务)和spi接口(用于回执,他人实现并消费tr服务);
integration –工程reference的tr服务(别人的api);
core-service –通过类 ClientFactory 引入tr服务(自己的spi);
biz-service-impl –工程service的tr服务(别人的spi,自己的api);
服务器、数据库资源
xxx实际上这边第一年大概20-30万客户,单日累计扣款查询等指令不会超过一万,但是压测的时候要求是200-400tps。 tps不超过1000的话,统一所有应用4个4c/8g的容器就可以;数据库 32c64g,最大连接数 250。
设计原则
- 单一责任原则
- 开放封闭原则
- 里氏替换原则
- 接口分离原则
- 依赖倒置原则
设计模式
创建型
- 简单工厂:在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口,通过不同的入参返回不同的对象。
- 工厂方法:定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。(有些像 模板方法+简单工厂 的组合)
- 抽象工厂:提供一个接口,用于创建 相关的对象家族 。抽象工厂模式用到了工厂方法模式来创建单一对象;
- 至于创建对象的家族这一概念是在 Client 体现,Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象。
- 工厂方法 与 抽象工厂
- 从高层次来看,抽象工厂使用了组合,即 Client 组合了 AbstractFactory,而工厂方法模式使用了继承。
- 生成器(英文 Builder):封装一个对象的构造过程,并允许按步骤构造。
- 策略模式 与 模板方法 的区别
模板方法 侧重于继承结构,父类定义模板(或流程),子类重写指定方法;
策略模式 侧重于环境中的变化条件,根据不同的条件选择对应的策略。 - 访问者模式:两个要素,集合或组合对象,新能力-访问者。