003

ASGI (Asynchronous Server Gateway Interface) Specification

需要注意,我阅读的是 Version: 2.0 (2017-11-28)。ASGI 在先前版本是有一个 channel 层的,现在被拿到外面去了。上一个版本有 中文翻译

目的

ASGI 的目的是提出一种规范,用于处理 Web 服务器和 Python 应用程序间的多种常见协议格式(HTTP,HTTP/2,WebSocket)

依据

WSGI 为 Python 框架和 Web Server 的选择提供了极大的灵活性。然而它的设计与 HTTP 的请求和响应绑在了一起。目前一些非此格式的协议也逐渐占领重要的地位,比如 WebSocket。ASGI 尝试去保留一个极简的应用接口。但提供一个能够从不同应用线程/进程随时发送/接收数据的抽象 …

more ...

002

作为一个码农,不能理解程序员口中的

  • 微服务化是趋势
  • 区块链开创未来
  • 前后端分离是历史的选择

Microservices

Martin Fowler 所写,此文有两个版本的中译。建议全文阅读。

Microservices: The Good, the Bad, and the Ugly

这篇文章被转的到处都是

The Good

  • 能以高效的方式轻松扩展
  • 不存在单点故障
  • 在不影响整个应用程序完整性的情况下下线,重构或重写
  • 针对不同服务的需求,选择最佳的语言和框架
  • 简单且离散
  • 轻松满足现代 PaaS 和 SaaS 环境的需求

对于第二条说的就跟 monolithic 应用存在单点故障一样,有没有单点和微服务好像没有什么关系吧

The Bad

  • 由于需要维护基于微服务的应用及组件所需的专业知识,因此变得更复杂
  • 如果应用不需要扩展或者不是 cloud-based,基于微服务的架构可能不会带来任何有意义的好处
  • No greenfield options because microservices …
more ...

001

asyncio: A dumpster fire of bad design

本篇文章就是在喷 asyncio,尤其是在写作口吻上。关于 asyncio 还有一篇比较经典的 I don't understand Python's Asyncio。之所以放这篇文章,是因为作者所抱怨的地方也可能会是我以后踩到的坑。

Sin 1) 忽视了 generator API

Python 的 coroutine 是借助 generator 实现的。所以 asyncio 应当自然而然地使用 generator API 去和 coroutine 进行交互。(作者这里可能是基于 Python 3.4 来说的,PEP 492 引入了 async/await)。

利用 …

more ...

000

Notes on structured concurrency, or: Go statement considered harmful

本文为 Trio 作者对于并发 API 的一点看法,并阐述了 Trio 为什么有一个 nurseries 的概念
对于 Golang 的 go 关键字及与其相似的 API 来说,它具有一下缺点: - 破坏抽象:当我们调用一个函数时,它可能创建了一个 goroutine。函数看起来返回了,但是还有任务在后台执行。这种行为破坏了黑盒原则 - 影响自动资源释放:比如 Python 的 with open("my-file") as file_handle: 能够确保在整个 block 执行完后,对资源进行挥手。但是如果在这个 block 中创建了一个后台任务 …

more ...