本篇文章将介绍实际业务中的查询场景。一般来说,这部分要做的只是从数据层调用查询方法获取数据并返回给api层。但在业务量不断上涨的过程中,可能会出现百万级以上的大规模数据查询场景,也可能会存在基础信息(用户账户信息等)被多个接口同时调用查询的场景,给DB造成很大压力。这时就需要考虑引入协程和缓存等方式来降低数据库IO。除此之外,还将介绍一些查询中经常碰到的一些场景的处理方法。
提供HTTP服务的api层负责处理以下任务:
api层的代码应简单清晰,甚至你的每个路由对应的函数都“长得”差不多,这部分代码不应掺杂任何逻辑处理,他要做的仅仅是将请求指向相应的逻辑类去处理。
数据层一般会给人带来一些困扰,在于其定位不准确。聚合Model的工作也可以放在逻辑层做,但会导致逻辑层变重,经常出现大段晦涩代码。因此我的建议是保留Model聚合层,尽管会导致工作量的略微增加,但却可以使代码逻辑更加清晰,即每一层都只做自己该做的事。
在实际业务中,经常会碰到大量需要重复使用的函数,一般会选择将其抽象成为工具函数放在util
目录下。值得一提的是,抛错函数也属于大量重复使用的函数这一范畴,但与工具类函数不同的是,抛错在工具类函数中也会被用到,因此这部分内容应放在项目根目录下。
坚持写博客是我一直以来的一个目标,当然现在看来做的很差,时而兴起才会写一写。在我的理解里,博客既是写给别人看,又是写给自己看的。对自己来说,有个属于自己的地方能够分享自己的所见、所想、所学、所感,对他人来说,你的博客说不定解决了其他人正在头疼的问题,于己于人好处多多。但博客这东西,客观来说还是良莠不齐,质量上乘的博客(如阮一峰)确实有其独到之处,我想借这篇文章尝试分析一下好的博客究竟好在哪里,也好找个标杆,早日写出优秀博客。