北京中科医院怎么样 https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E4%B8%AD%E7%A7%91%E7%99%BD%E7%99%9C%E9%A3%8E%E5%8C%BB%E9%99%A2/9728824前情回顾:
在上一篇中,我们介绍了分布式设计模式中的单节点模式的Sidecar实现方式。在本文中,我们介绍另外一种单节点模式的实现:Ambassador。Ambassador直译是大使,在本文的技术实现中,起到的是代理的作用。
有时,要存储在存储层中的数据对于单个节点来说太大了。在这种情况下,您需要分片存储层。分片将层分成多个不相交的部分,每个部分由一台单独的机器托管。Ambassador模式本质是后端应用分片,前端通过路由分发流量。
部署分片服务时,出现的一个问题是如何将其与存储数据的前端或中间件代码集成。显然,需要有一种逻辑将特定的请求路由到特定的分片,但是通常很难将这种分片的客户端改造为希望连接到单个存储后端的现有源代码。此外,分片服务使共享配置变得困难。
在开发环境(通常只有一个存储分片)和生产环境(通常有许多存储分片)之间切换。
一种方法是将所有分片逻辑构建到分片服务本身中。在这种方法中,分片服务还具有无状态负载均衡器,可将流量定向到适当的分片。实际上,此负载平衡器是作为服务的分布式Ambassador。这使得不需要客户端Ambassador,而以分片服务的更复杂部署为代价。另一种方法是在客户端集成一个单节点Ambassador,以将流量路由到适当的分片。
在实际应用中,我们看到更多的是把Ambassador放在前端。例如在K8S中,通过SVC对多个分片的pod进行流量分发。
这种模式比较常见的一个场景是在OpenShift部署kafka集群。具体的步骤不再展开说: