阿里云产品分析(持续更新)
阿里云上有众多的云产品,本文主要分析云产品的功能以及应用场景。
容器与中间件
该部分领域与我的工作重合度较高,为重点研究领域。
事件总线EventBridge
很多服务会产生输出供下游的服务来消费,最常见的解决办法是数据生产者通过rpc调用的方式将消息发送给数据消费者。但假如消费者的数量不止一处,该模式下就需要数据生产者将数据重复发送给多个消费者,该方式对于生产者可配置的灵活性要求非常高。
为了解决上述问题,将生产者和消费者解耦,解决办法就是引入一个中间层,这也是软件架构中最常见的解决复杂问题的方法。引入的中间层即为消息队列类的服务,比如Kafka。生成者仅负责生产数据到消息队列,消费者负责从消息队列消费数据,且可以存在多个消费者。生成者和消费者根本不用关心彼此,仅需要跟消息队列进行交互就可以了。
阿里云上的某个产品新增加了一个新的操作,比如ECS主机完成了一次快照操作,都会产生事件。如果有服务要消费事件,可以使用该产品。
阿里云上的很多产品会将新产生的事件发送到事件总线,另外也支持自定义事件源,通过编程的方式将事件推送到事件源上。
数据的消费模块跟通常的消息队列有所不同,这里的数据消费需要由事件总线产品主动推送消息到对应的服务,具体要推送到哪些服务,则需要在创建总线的时候配置,该功能即消息路由。支持的消费端包括钉钉、消息队列、Serverless服务、HTTP Server等。可以看到数据的消费端除了HTTP Server外,基本不需要额外开发一个服务,也是阿里云的一些其他云产品。
消息的规范完成遵循云原生社区CNCF的CloudEvent规则。
相关链接:
弹性容器实例ECI
该产品的功能比较简单,相当于提供了管控页面来创建k8s的pod,具体pod部署在哪里用户不需要关心,提供了非常好的弹性能力,充分发挥了云的优势。
具体在实现层面,实际上会以pod的形式部署在阿里云维护的公共k8s集群中,且容器的网络在用户指定的vpc中。
除了给用户提供直接创建容器实例外,还有很大一部分功能是给Serverless Kubernetes(ASK)和容器服务(ACK)来提供弹性扩缩容的功能。
企业级分布式应用服务EDAS
提供了应用托管和微服务的治理能力。
在应用托管方面支持应用发布到虚拟机和k8s两种方式。
微服务治理方面支持了Spring Cloud、Dubbo、HSF三种微服务框架。
Serverless应用引擎SAE
提供了类似于knative的serving功能,可以支持应用的托管,用户不需要关心底层的服务器资源,可以自动将用户的应用部署在托管的k8s集群中,且具备秒级的弹性扩缩容的功能。