如果我们仔细思考会发现,不管是跨进程的分层架构,还是进程内的MVC分层,都是一个“数据移动”,然后“被处理”和“被呈现”的过程,归根结底一句话:互联网分层架构,是一个数据移动,处理,呈现的过程,其中数据移动是整个过程的核心。
弄清楚这个原则与方法,再加上一些经验积累,就能回答网友经常在评论中提出的这些问题了:
是否需要引入DAO层,什么时机引入
是否需要服务化,什么时机服务化
是否需要抽取通用中台业务,什么时机抽取
是否需要前后端分离,什么时机分离
当业务越来越复杂,垂直拆分的系统越来越多,数据库实施了水平切分,数据层实施了缓存加速之后,底层数据获取复杂性成为通用痛点的时候,就应该抽象出数据服务层,简化数据获取过程,提高数据获取效率,向上游屏蔽底层的复杂性。
互联网分层架构是一个很有意思的问题,服务化的引入,并不是越早越好:
请求处理时间可能会增加
运维可能会更加复杂
定位问题可能会更加麻烦
千万别鲁莽的在“微服务”大流之下,草率的进行微服务改造,看似“高大上架构”的背后,隐藏着更多并未接触过的“大坑”。还是那句话,架构和业务的特点和阶段有关:一切脱离业务的架构设计,都是耍流氓。
作者 沈剑
•“架构师之路”作者,深夜写写技术文章
•百度-高级工程师
•58同城-高级架构师,技术委员会主席,技术学院优秀讲师
•58到家-高级技术总监,技术委员会主席
•58速运-CTO
领取专属 10元无门槛券
私享最新 技术干货