为了在企业中能够更好的支持Cloud, Mobile, Big Data,成功的关键在于能够 安全的, 可靠的,一致的发布web services. REST API是目前广泛使用的web service,WEB API为底层的应用与数据提供与发布web-enabled 接口,它的特点是能够直接简单的访问应用功能与数据;并且解耦不同的IT服务,从而IT服务提供者能够独立的提供IT服务,支持application-to-application的集成模式。
API First策略意味着所有的集成场景中首先考虑API集成的方式,甚至在应用没有开发的时候就需要考虑其可以提供的API。将API与底层的应用分开来考虑,将API作为一个产品,从而能够更大程度的复用API。
API管理提供了API发布,API发现,API网关,API运维等功能。
在API为中心的架构中,API管理作为中心的接口层,解耦了接口提供者与接口消费者,其概要架构如下图
其他的技术,例如GraphQL, gRPC , SOAP在一些特定场景下可以满足特定的需求。
REST | GraphQL | gRPC | SOAP |
---|---|---|---|
Internal and External Integration | Internal Integration | Internal Integration | Internal Integration |
需要灵活、复杂的数据结构 | 在高性能的场景中(REST与JSON的latency不能满足的情况下) | 旧系统提供的接口 | |
需要高频率的API调用 | 可以使用REST包装供外部调用 | 只用于系统API的层级 |
Streaming API能够实时将数据传输给客户端,与一般REST API的区别在于Streaming API 使用HTTP长连接,并将数据主动推送到客户端. 在服务端持续的产生数据流的场景中,能够极大的降低网络延迟。
通常Streaming API使用publish/subscribe模式。
微服务架构中每个微服务只提供其一套服务 - It does one thing and it does it well.
微服务的特征包括自治性与隔离性(autonomous and isolated), 也就是说微服务本身是 独立的功能单元, 微服务之间是松耦合的,各个微服务都是独立设计、开发、测试和发布的。 当需要变更的时候,只有影响到的微服务需要devops的自动化部署管道,从而也简化了系统更新的过程.
由于上述的可复用性,某个微服务可以被数个其他服务所调用,所以微服务还应具有按需伸缩的特性。
在企业应用中,可以根据数据的分类与API的使用范围(企业内部还是外部)来做API的分类。 例如
API分层的主要目的是增加API的可重用性和灵活性,从上至下分为以下三层
所以,发布了API之后就可以开始集成工作,然后就没有问题了,是这样吗?当然不是,还需要考虑安全与威胁,认证与授权,可用性,监控等才是一个完整的API产品。
API平台是管理API的中间件,应当具备以下功能:
API安全是最被忽视的一层,但是必须重视
Web Token