1. "Smoothing Your Rust Crates Release With Cargo-release"

    Cargo-release is a cargo subcommand that automates your libraries release process. The idea was inspired by Clojure's leiningen, which has a release command does exact same thing.

    Typically, when you decide to release a library to crates.io, you need to go through following steps at least:

    • bump version in …
  2. "Handlebars 的 rust 实现"

    本来一度感觉到用过 Clojure 之后很难对新语言产生兴趣了,还好遇到了 Rust 再次激活了这方面的生命力。今年的重点之一是学习 Rust 语言,方便自己能真正 touch bare metal。1月17号的 Rust 聚会上发现很多人都持有类似的想法。 C++ 之后鲜有这种语言,以至于之后成长起来的一代人都是在一个 VM 里编程,无论是 Java 还是 Python,最终都没有办法自己去管理内存,Rust 的出现给了大家一个机会。一个具备现代特性的系统编程语言,Zero runtime,可以运行在各种设备上。去年还给程序员杂志写了一篇 Rust 的文章,结果导致现在程序员杂志停刊了。

    扯远了,和当时学 Clojure 一样,这次的计划还是写一个正经的项目来促进学习。关于时机的选择,主要是 crates.io 仓库的发布基本上标志生态圈开始建立了,这个时候写东西就方便很多了。

    这次选的就是实现 Handlebars …

  3. "AVOS Cloud 实时通信服务架构:微服务和服务发现"

    “微服务” (Microservice) 是今年特别热的一个概念,Martin Fowler 的文章对微服务作了详细的介绍。简而言之,微服务鼓励用户把功能拆分以细粒度的服务接口暴露出来,并通过REST 服务或轻量级消息队列集成。在微服务架构里,一个业务的实现,可能由不同的功能单元组合而实现。

    在 AVOS Cloud,我们提供数据存储、统计、实时通信等不同功能的服务,在实现上,这些功能需要共用基础设施,有的服务本身也根据业务性质的不同拆分功能模块,我们目前就是以这种“微服务”架构思路来实现拆分。有句话说,if you cannot split, you cannot scale.

    以实时通信服务为例,根据功能角色的不同,我们有这样一些模块:

    • Push 服务:处理推送的订阅关系,触发推送
    • 长连接服务器:维持设备与服务的长连接
    • Router:应用层的 lookup,负责分配合适的长连接服务器给新设备
    • WatchDog:从多台长连接服务器收集运行和统计数据,对异常情况发起报警 …

« Page 3 / 79 »