Skip to content
Andy Ai edited this page Oct 30, 2015 · 7 revisions

Welcome to the aims wiki!

Aims 是基于 akka-http 构建的一个高性能 Restful 风格的微服务框架。

为什么不直接使用 akka-http ?

akka-http 是从 spray 迁移过来,不管是现在的 akka-http 还是之前的 spray 都是非常了不起的 RESTful 框架。我们可以非常灵活地使用它们写出任意的 http 接口。正因为它的灵活让它可以做很多事情!

但是,当我们需要一个真正的微服务框架时,akka-http 和 spray 需要我们做的事情太多了。我们真正要关注的是如何实现好一个服务,而不是重复地做框架需要处理的事情。例如:GET, PUT, DELETE, POST 请求的映射。

Aims 真正地实现了只让业务开发人员关注如何实现业务。使用它能很快速地实现一个 CURD 的服务,并且你能根据自己的情况使用读写分离的模式。

最小服务单位 Restlet

Aims 抽象出了 Restlet 的概念,一个 Restlet 对应了一个 http 接口。我们可以通过这个接口的 path 调用服务获得响应。例如,获取用户属性就是一个 Restlet:

GET https://~/users/yanbo.ai/profiles

一个 Service 可以包含多个 Restlet,例如:TradeOperationService 包含了下面的几个 Restlet:

GET    /trades            获取 trades 列表
GET    /trades/:tradeId   根据 trade id 获取 trade 对象
POST   /trades            创建新的 trade
PUT    /trades/:tradeId   覆盖(替换或更新) trade
PATCH  /trades/:tradeId   修改 trade 部分属性 
DELETE /trades/:tradeId   删除 trade     

Restlet 分类

Restlet 被分为 2 大类: 读取和写入。读取的 http methods 有: GET;写入的 http methods 有:POST, PUT, PATCH, DELETE

Restlet 与 Actor 的对应关系 ?

为了资源的隔离,Aims 会为一个 Restlet 创建一个独立的 Actor。任何一个 Restlet 出现异常与服务中断都不会影响到其他的 Restlet。我们可以轻松地根据当前的使用量的大小分配相同的 Restlet 资源。例如:获取商品信息是一个使用量很大的服务,我们可以将这个服务部署更多的资源来满足大量的服务请求。

谁在使用 Aims?

Shuyun