Graph架构图

 -----------------------------------------------------------
  |                       URL Routing                       |
  -----------------------------------------------------------
  -----------------------------------------------------------
  |                    Controller Routing                   |
  -----------------------------------------------------------  

  -----------------------------------------------------------
  |                       Controller                        |
  -----------------------------------------------------------
 -----------------------------------------------------------
  |                     View Dispatcher                     |
  -----------------------------------------------------------
  ---------  ---------  ----------  ------ -------- ---------
  |View Ad|  |Listing|  |Homepage|  |User| |Search| |Payment|
  |View   |  |View   |  |View    |  |View| |View  | |View   |
  ---------  ---------  ----------  ------ -------- ---------
  -----------------------------------------------------------
  |                    Template Engine                      |
  -----------------------------------------------------------
  -----------------------------------------------------------
  |                   Model (Data Binding)                  |
  -----------------------------------------------------------
  -----------------------------------------------------------
  |                  Model/Graph Integration                |
  -----------------------------------------------------------
 ------------------  -----------------  --------------------
  | HTTP Transport |  | PHP Transport |  | Socket Transport |
  ------------------  -----------------  --------------------
  -----------------------------------------------------------
  |         Security/Prettifier/Limit Control               | 
  -----------------------------------------------------------
 -----------------------------------------------------------
  |                      Graph () API                       |
  -----------------------------------------------------------
  -----------------------------------------------------------
  |                          Node                           |
  -----------------------------------------------------------
 -----------------------------------------------------------
  |                          Edges                          |
  -----------------------------------------------------------
  -----------------------------  ----------------------------
  |            ID             |  |        Connections       |
  -----------------------------  ----------------------------
 -----------------------------  ----------------------------
  |           Data            |  |   Algorithm Dispatcher   |
  -----------------------------  ----------------------------
  -----------------------------  --------- --------- --------
  |   Global/Local Namespace  |  |Listing| | Plain | | User |
  |           Conversion      |  |Logic  | | Logic | | Logic|
  -----------------------------  --------- --------- --------
 -----------------------------  ----------------------------
  |     Storage Dispatcher    |  |    Search Dispatcher     |
  -----------------------------  ----------------------------
  -------- --------  ----------  --------- -------- ---------
  |MySQL | |Mongo |  |External|  |Elastic| |Solr  | |MySQL  |
  |Driver| |Driver|  |Driver  |  |Search | |Search| |Search |
  -------- --------  ----------  --------- -------- ---------

Database Driver 完成所有与具体的数据库服务器之间的接口。 这一层以上不会再出现任何babel_topid,tpc_bak2, attributeData这样的字符串了。

Storage Dispatcher, Search Dispatcher根据对象类型分配driver.
这一层以上不应该有任何地方知道数据存在哪里,如何存储。

Global/Local Namespace Conversion层,保证之上所有的对象都是用GID访问。
这一层以上不应该有任何地方能够看到lid(Local ID),所有ID都是唯一的。
这一层一下不应该知道有global ID的存在

Data层,基础数据类,所有数据从它而来。完成Versioning等

Algorithm Dispatcher层,根据不同上下文选择合适的connection逻辑
这一层之上不应该知道任何业务逻辑(这里使用Strategy设计模式,并不产生混乱)

Listing Logic等层,提供置顶,排序,去除等各种listing业务逻辑

Search Dispatcher层,把Query分配给合适的Search提供者
这一层以上不应该知道搜索由谁提供
这一层以下不应该知道任何逻辑

Edges层,解析id,和id的各种连接。
这一层之上把conn就应该当作数据的一部分,不作区分。

Node层,Graph的基础数据层

Graph层,提供graph()函数调用,以及对于Graph的命令解析,提供斜线分割的语法。

Security层,保证API的调用安全性,访问次数,对象组装等最后包装工作

Transport层,提供各种连入Graph API的方法。

Transport层以上是示意图,并没有仔细推敲,大概描述使用Graph API的场景

发表回复

您的电子邮箱地址不会被公开。