-----------------------------------------------------------
| 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的场景