大多数的程序员,都是做业务开发的,我也是。每天的工作都围绕着产品的需求。我们总在不停地写需求,在不停地堆砌代码,还在不停地解决Bug
。后来,我们越来越陷入细节,越来越不能把握全局。
对于一个新的项目,你准备怎么设计它?或者,对于一个新的需求,你准备怎么设计它?
代码的组织结构,本身也是一种架构,比如MVC
。在实际工作中,我们都喜欢对代码进行分层,比如,将代码分成了如下几个部分,controller
面向具体业务提供服务;service
也提供功能的实现,但不针对业务;mapper
主要针对数据层:
---- controller
---- service
---- mapper
然后,对于数据层,你会选择什么作为存储,MySQL
、Mongo
或者Redis
。对于高QPS
的场景,准备如何使用缓存?是否需要使用本地缓存?是否要使用异步进行处理?这些都应该属于架构的范畴。
或者说,先整体规划我们要实现哪些需求,给需求划定边界。然后,分析我们要扛住多大的并发,然后还要支持后续的扩展。
根据此,尝试简单描述现有的服务:我们代码上采用类似MVC
的结构进行组织,根据Path
来路由请求,底层目前主要使用MySQL
作为存储,主要依赖MySQL
的事物处理机制,对于一些其他的情况,我们还采用Kafka
来实现异步处理。
来源:oschina
链接:https://my.oschina.net/u/3017278/blog/3221794