为什么……不拿另一个 HTTP 服务器来当作数据库来给一个 Web App 使用?

2014-07-02 22:09:10 +08:00
 raincious
// 首先,我知道这个想法挺怪异且折腾的(所以出现在了奇思妙想里啊,啊哈哈哈哈)。

貌似现在大多数常见的Web架构布局都一个用各种语言写的Web App+ 一个(或多个)数据库,然后Web App直接连接这个数据库存取数据。

而很多手机App的布局都是一个Native的客户端,然后连接到一个Web App,然后Web App连接到数据库取回数据交给手机App。

那为什么不可以用另一个HTTP服务器来当数据库用,然后其他Web App通过各种方式取得这个HTTP数据库服务器返回的内容(以比如Json的形式),貌似这样可以更加容易的管理缓存和实现分布式啊?

然后Web App就可以也像移动端App一样,仅仅负责显示和交互之类的了。(对吧?)



是不是因为HTTP协议的性能不好?刚拿Go自带的HTTP模块做了个测试,大多数请求在1ms左右完成(虽然还是比数据库的查询时间长了很多),但比整个网站的运行时间要短。如果复用链接的话,可能能以相对不是延迟很久的时间完成多次请求。



代码:
https://gist.github.com/06dda39721dccda06348.git

// 好吧,怪异的想法,请勿喷。
6532 次点击
所在节点    奇思妙想
31 条回复
iam36
2014-07-03 12:25:08 +08:00
补充一点, web server其实比现在的商用数据库简单得多:)
Lucups
2014-07-03 13:33:27 +08:00
@caomu 跟我想的一样
isno
2014-07-03 18:35:01 +08:00
@semicircle21 thrift的性能是很变态的,cassandra 数据库是用thrift 做的接口, 最近比较忙, 博文还没写完, 整个数据中心实现 简单来说就是 protobuf做数据定义, thrift 实现接口, 效果超出预期
ichou
2014-07-04 00:38:41 +08:00
难道楼主说的不是数据服务器分离? 顺便把一部分逻辑移到数据服务器上么?
说到实际情况中,感觉逻辑如何分离本身就会是个不小的问题,项目迭代到后面极可能发现之前的 API 就是个坑 哈哈~
yangkeao
2014-07-04 14:13:55 +08:00
前后端分离??

我是不是想得太简单了?
raincious
2014-07-04 14:17:59 +08:00
@ichou 如果真这样做的话,API设计一定要合理了。而且得考虑版本。确实可能成为个坑。但是作为解决数据库依赖的中间层还是挺好的。不过这样就仍然必须还得有WebApp存在。
yueyoum
2014-07-04 17:30:21 +08:00
LZ 一定不知道 CouchDB
zhenggc1
2014-07-04 18:19:23 +08:00
楼主可以去看看rest和soa相关的内容。
ChiChou
2014-07-04 22:36:08 +08:00
LZ 一定没用过 ElasticSearch
raincious
2014-07-05 15:00:40 +08:00
@yueyoum

唔……你错了呢……其实我还是知道名字的……

嗯……关键我的思维是为我的MySQL找个中间层,免得未来要换数据库太麻烦。(主要是https://v2ex.com/t/119720被一楼震到了)

所以……我其实没想真的换一个数据库。不过想想如果这样还不如直接上个CouchDB。
lm902
2014-07-07 13:46:05 +08:00
Azure Table Storage HTTP+XML

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/120678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX