前面我们讲了两个常用文本类的RPC协议,对于陌生人之间的沟通,用NBA、CBA这样的缩略语,会使得协议约定非常不方便。
在讲CDN和DNS的时候,我们讲过接入层的设计,对于静态资源或者动态资源静态化的部分都可以做缓存。但是对于下单、支付等交易场景,还是需要调用API。
对于微服务的架构,API需要一个API网关统一的管理。API网关有多种实现方式,用Nginx或者OpenResty结合Lua脚本是常用的方式。在上一节讲过的Spring Cloud体系中,有个组件Zuul也是干这个的。
数据中心内部是如何相互调用的?
API网关用来管理API,但是API的实现一般在一个叫作Controller层的地方。这一层对外提供API。由于是让陌生人访问的,我们能看到目前业界主流的,基本都是RESTful的API,是面向大规模互联网应用的。
在Controller之内,就是咱们互联网应用的业务逻辑实现。上节讲RESTful的时候,说过业务逻辑的实现最好是无状态的,从而可以横向扩展,但是资源的状态还需要服务端去维护。资源的状态不应该维护在业务逻辑层,而是在最底层的持久