开发内容集市架构有感
其实,我不做前端有一年了,转行做了PHP。所以好久都没更新这边的博客==、。内容集市是我做PHP之后,第一个完全自己架构的项目,小而美,让我引以为傲。
内容集市简介:内容集市其实是一个接入多个内容源,再将数据存储并传给下游的一个系统。它支持定时抓取和订阅两种方式,灵活多变,可配置性非常强。
内容集市大体架构:内容集市代码主要分为三个部分,配置文件、控制台和业务class。其中控制台是统一的,配置文件和业务代码根据业务情况编写。如下图所示:
内容集市大体流程:其中蓝色部分是需要根据业务定制的部分;红色部分为控制台的主流程,结合配置文件内容完成数据接入到入库并传输给下游的完整流程。
内容集市精髓:内容集市的精髓在于配置文件与控制台的使用。配置文件所以整个流程的定义,属于重中之重。屏蔽了一些关键词,删除了部分内容,但是主要内容我都保留了下来。结合上面的主要流程图来看,会发现凡是下面带有class的均为流程图中的蓝色部分。在每个需要操作数据的地方,我们都定义了获取数据的路径即path,数据格式即json。剩下的就是中控程序结合配置文件完成完整流程。
name: earthquake des: 地震 auth_key: **** [result_filter] class: Earthquake [result] json: 0 [.@part] path: / [..data] title: Title description: Earthquake_Parameter image: Epicenter_map release_time: timestamp tp_event_id: ID event_lng: longitude event_lat: latitude address: place event_type: magnitude [..extra] subtitle: 查看详情>> landing_url: *** [result_deal] class: Earthquake [pre_downstream] class: Earthquake [@downstream] service_path : ***** method: post [.condition] condition_path: event_type condition_match: 5 - [condition_path] [.params] push_title: title push_subtitle: subtitle landing_url: landing_url earthquake_type: event_type push_exp: expire push_city: event_loc [.extra] from: **** [.result] result_path: result/error result_success: 0 json: 1 [@downstream] service_path :**** method: post [.condition] condition_path: event_type condition_match: [condition_path] - 4.999 [.params] push_subtitle: title [.extra] from: ** [.result] result_path: result/error result_success: 0 json: 1
内容集市开发感言:内容集市在设计之初,其实是由一个高工带着我们两位工程师进行研发讨论的。但是,讨论到后期的时候,另一位对这个设计可能没有兴趣或是没有跟上思路,后面就变成了由我自己去完成整体的架构实现。虽然我在讨论完成之后,有很多技术细节自己也没想明白,但是抱着姑且一试的心态,自己把大体流程以及自己能理解的部分都用代码落实。应该还没写多久,之前自己不理解的部分突然就豁然开朗,剩下的部分也水到渠成。
在最初的时候,内容集市只支持入库以及一个下游。随着后面数据源增多,增加了根据订阅的数据返回的操作字段来进行增删改操作以及多个多个下游处理。因为前面的架构很简单,扩展起来也很方便。
作为一名程序员,难免会遇到一些看起来就很繁琐很有挑战的开发任务,有时候光想是没有用的。不如就把自己已经确定的部分落实,或许在编码过程中思路会突然打开也不一定。
写在最后:每时每刻其实都在做选择,有些选择做起来简单不一定正确;有些选择做时很艰难,坚持下去或许会改变你的人生轨迹。