最近不忙, 刚填了一个 Docker 的小坑, 这里再挖一个.

关于 RPC, 也是关于以前我写的什么 acors 之类的愚蠢的想法.

这个坑就是: 在不跨语言的情况下,能不能实现向对端发送某个函数或某段代码的AST树, 来实现对相应资源的远程调用?

应用场景有下:

  1. 比如众所周知关系型数据库的局限性, 和 SQL 语言存在的描述力不足的问题, 如果数据存储在远程某服务器上, 然后将要执行的存储/查询过程, 以通用语言的形式写在 Client 端, 并在编译时生成 AST, 在调用时, 将整颗 AST 发送到服务器上, 让服务器执行这一段数据处理逻辑, 并将结果返回给 client.
  2. 自动实现负载均衡的 runtime, 将访问固定数据的部分代码放到拥有这部分数据的服务器上执行, 让分布式计算智能化起来.

目前比较接近的概念:

  1. 比如 redis 可以写 lua 脚本, 不过这是服务器直接运行脚本, 而不是 ast, 性能上大概会差一点.
  2. LINQ 的 expression, 原理上近似, 但 LINQ 写得是类似 SQL 的东西, 注定了 LINQ 的表达能力会受限.

今天我也没少喝咖啡~.


2015.2.10

进展: 动态将程序/数据分割不难, 难的是如何合理的分组, 如何监测程序运行状况, 根据监测所发现的热点分组.

感受: 怎么感觉整篇东西目前都带有浓浓的民科风...