架构解密从分布式到微服务,微服务和分布式最大区别

首页 > 经验 > 作者:YD1662022-10-28 06:22:00

我们知道Kubernetes是基于容器技术的微服务架构平台,每个微服务的二进制文件都被打包成标准的Docker镜像,因此应用的全生命周期管理过程的第一步,就是从源码到Docker镜像的打包,而这个过程很容易实现自动化,我们既可以通过编程方式实现,也可以通过成熟的第三方开源项目实现,这里推荐使用Jenkins。下图是Jenkins实现镜像打包流程的示意图,考虑到Jenkins的强大和用户群广泛,很多PaaS平台都集成了Jenkins 以实现应用的全生命周期管理功能。

架构解密从分布式到微服务,微服务和分布式最大区别(17)

PaaS 平台的基础中间件

一个完备的PaaS平台必须集成和提供一些常见的中间件,以方便应用开发和托管运行。首先,第1类重要的基础中间件是 ZooKeeper,ZooKeeper非常容易被部署到Kubernetes集群中,在Kubernetes 的 GitHub上有一个YAML参考文件。ZooKeeper除了给应用使用,也可以作为PaaS平台面向应用提供的“集中配置服务”的基础组成部分,如下图所示。

架构解密从分布式到微服务,微服务和分布式最大区别(18)

此外,考虑到很多开源分布式系统都采用了ZooKeeper来管理集群,所以我们也可以部署一个标准命名的ZooKeeper Service,以供这些集群共享使用。

第2类重要的中间件就是缓存中间件了,比如我们之前提到的Redis 及 Memcache,它们也很容易被部署到Kubernetes集群中,作为基础服务提供给第三方应用使用。在Kubernetes的入门案例中有一个GuestBook例子,演示了在PHP页面中访问Redis主从集群的方法,即使是复杂的Codis集群,也可以被成功部署到Kubernetes集群中。此外,RedHat 的J2EE内存缓存中间件Infinispan也有Kubernetes集群部署的案例。

第3类重要的中间件是消息队列中间件,不管是经典的ActiveMQ、RabbitMQ还是新一代的Kafka,这些消息中间件也很容易被部署到Kubernetes集群中提供服务。下图是一个3节点的RabbitMQ集群在Kubernetes平台上的建模示意图。为了组成RabbitMQ集群,我们定义了3个Pod,每个Pod都对应一个Kubernetes Service,从而映射到3个RabbitMQ Server 实例,此外,我们定义了一个单独的Service,名为 ku8-rabbit-mq-server,此 Service对外提供服务,并且对应到上述3个Pod 上,于是每个Pod都有两个标签。

架构解密从分布式到微服务,微服务和分布式最大区别(19)

第4类重要的中间件是分布式存储中间件,目前在Kubernetes集群上可以使用Ceph集群提供的块存储服务及GlusterFS提供的分布式文件存储服务,其中 GlusterFS被RedHat的OpenShift平台建议为文件存储的标配存储系统,下面是这种方案的示意图。

架构解密从分布式到微服务,微服务和分布式最大区别(20)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.