MQ(消息队列)
消息队列主要用于以下场景:
1. 上传图片,用户需要迅速反馈,把上传图片的后续操作交给consumer
2. A用户对B用户发消息
3. 日志记录,APP发生的任何警告错误日志都要被记录到日志数据库中
4. 浏览量统计,比如,一个item被用户点赞,评论,收藏了,那么需要重新计算此item的评分,这时需要一个异步执行统计操作
5. 用户新添加了一篇文章,需要加入到搜索索引中
软件包:
1. enqueue-bundle
url: https://packagist.org/packages/enqueue/enqueue-bundle
2. amqp
PHP的扩展,消息队列这个扩展必装
OO Design(面向对象设计)
必须符合S.O.L.I.D原则
Entity Design (数据实体设计)
前提是符合设计三范式
System Design(软件系统设计)
比如给定一个购物网站,怎么设计一个基本的,可扩展的,高性能的软件系统?
测试
一个庞大的软件离不开一系列的单元测试,功能测试,集成测试。测试在后期可以大大提高软件的开发效率,比如,增加一个新功能,怎么迅速判断它是否对以前的功能有影响?
如果写了测试,只需要一行命令搞定这个工作,否则,需要人工一个一个验证以前的逻辑。所以,极力推荐大项目一定要写测试。
持续集成
怎么构建一个高效,安全的发布系统?
比如,当一个新功能开发完毕,并且跑完测试后,需要上线,如果上线后出现了问题需要回滚代码,怎么实现一键回滚呢。
接口设计(API)
现在的项目不像以前只有一个 web sites,而是包括了手机,平板,和其他可以运行浏览器的设备。那么就需要设计一套灵活性高,有版本控制,结构清晰,利于维护的API。
那么怎么设计?
目前的方案:
1. RESTful
缓存设计
编程界的两大难题之一缓存(另一个难题是命名问题)。怎么设计缓存系统?