如果构建高可用、高并发、高效运维的大型系统
大型系统架构设计包括业务层设计、服务层设计、基础架层设计、存储层设计、网络层协同设计来完成。
一、业务层
根据主要业务范畴的分类和特征提取,抽象出独立的业务系统,分别统计系统的用户角色群体、访问量、计算量。
二、服务层
细化和落地业务层的划分、拆分、服务治理
三、架构技术层
构建技术包括:
OpenStack、Docker、Mesos和Kubernetes(简称K8s)都是在云计算和容器化技术领域中常用的工具和平台,它们之间存在着不同的关系和应用场景。
OpenStack:
OpenStack是一个开源的云计算基础设施即服务(IaaS)平台,主要用于构建和管理云计算基础设施,比如虚拟机、存储和网络资源。虽然OpenStack可以与容器技术如Docker配合使用,管理容器化的应用,但OpenStack并不是专门为容器设计的。它主要关注虚拟机和相关的资源管理。
Docker
: Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖环境打包成一个独立的容器,这个容器可以在任何支持Docker的平台上运行,保证了应用在不同环境间的一致性。Docker引擎(也被称为Moby)是容器运行时的实现,是管理容器的核心技术,而Docker公司一直在推动Docker引擎的功能扩展,比如支持多节点集群、容器编排和服务发现等。
Mesos:
Mesos是一个开源的资源管理系统,它可以运行在传统的虚拟机或者容器上,管理跨多个主机的计算资源。Mesos的核心抽象概念是资源(resource),它允许用户运行各种分布式应用程序,包括传统的虚拟机和容器。Mesos可以和Docker一起工作,但它更专注于资源管理和任务调度,而不是容器编排。
Kubernetes(K8s)
: Kubernetes是由Google开源的容器编排平台,它用于自动化应用容器的部署、扩展和管理。Kubernetes管理的是容器集群,它的目标是使容器化的应用在各种环境中都能快速部署、运行和扩展。Kubernetes使用Docker或其他容器运行时来实际运行容器,可以看作是一个更高级别的管理系统,它提供了一系列工具和服务来管理容器的生命周期。
总的来说,OpenStack和Mesos更偏向于传统的IaaS资源管理,而Docker是容器技术的实现,Kubernetes则是为了在容器化环境中提供集群管理和编排的功能。在现代的云计算架构中,这些工具经常会被组合使用,以提供全面的基础设施和应用管理能力。
技术组件间区别和关系
1,关于容器技术与虚拟机:
虚拟机:在容器技术之前,业界的网红是虚拟机,虚拟机技术的代表,是vmware 和openstack
所谓虚拟机就是在你的操作系统里面。装一个软件,然后通过这个软件,再模拟一台甚至多台字电脑出来。字电脑里面可以和正常电脑一样运行程序。并且子电脑与子电脑之间是相互隔离的,互不影响。
容器技术:而容器技术恰好没有这些缺点,他不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似"沙箱"),它启动时间很快,几秒钟就能完成,并且,它对资源的利用率很高(一台主机可以同时运行几千个docker容器),此外,他占用的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB甚至KB级
两者联系:虚拟机属于虚拟技术,而docker这样的容器技术,也是虚拟技术,属于轻量级的虚拟机
虚拟机的缺点:虚拟机虽然可以隔离出很多子电脑,但是占用空间大,启动更慢,虚拟软件可能还要花钱(如vmware)
2,关于docker
docker是创建容器的工具,是应用容器引擎
负责 搭建,发送,运行 流程、 创建一次,随处随地可用部署。
docker技术的三大核心概念:镜像,容器,仓库
docker仓库, 是一个特殊的文件系统,他除了提供容器运行时候所需要的程序,库,资源,配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量),镜像不包含任何动态数据,其内容在构建之后也不会被改变。
于是,这也就变成了一个公共大仓库,负责对docker镜像管理的是docker registry服务(类似于仓库管理员)所以 dockerRegistry服务对镜像的管理是非常严格的。最常使用的registry公开服务,是官方的docker hub,这也是默认的registry,并拥有大量的高质量的官方镜像。
3,关于k8s:
首先,k8s是一个全新的基于容器技术的分布式架构领先方案,k8s是goole开源的容器集群管理系统(谷歌内部:borg)。在docker技术基础上,为容器化的应用提供部署。
K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。
Kubernetes 这个单词来自于希腊语,含义是舵手或领航员。K8S是它的缩写,用"8"字替代了"ubernete"这8个字符。
虽然docker很火,但是想应用于具体的业务实现,是存在困难的----编排,管理和调度等各个方面,都不容易,于是人们迫切需要一套管理系统,对docker及容器进行更高级更灵活的管理
就在这个时候,k8s出现了
和Docker不同,K8S的创造者,是众人皆知的行业巨头------Google。
然而,K8S并不是一件全新的发明。它的前身,是Google自己捣鼓了十多年的Borg系统。
K8S是2014年6月由Google公司正式公布出来并宣布开源的。
同年7月,微软、Red Hat、IBM、Docker、CoreOS、 Mesosphere和Saltstack 等公司,相继加入K8S。
之后的一年内,VMware、HP、Intel等公司,也陆续加入。
2015年7月,Google正式加入OpenStack基金会。与此同时,Kuberentes v1.0正式发布。
k8s的架构
一个K8S系统,通常称为一个K8S集群(Cluster)。
这个集群主要包括两个部分:
一个Master节点(主节点)
一群Node节点(计算节点)
一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。
首先是master节点:
Master节点包括API Server、Scheduler、Controller manager、etcd。
API Server是整个系统的对外接口,供客户端和其它组件调用,相当于"营业厅"。
Scheduler负责对集群内部的资源进行调度,相当于"调度室"。
Controller manager负责管理控制器,相当于"大总管"。
Node节点
Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。
Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。
Docker,不用说了,创建容器的。
Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
Kube-proxy,主要负责为Pod对象提供代理。
Fluentd,主要负责日志收集、存储与查询。
前几年,大家以为虚拟机是核心网的终极形态。目前看来,更有可能是容器化。这几年经常说的NFV(网元功能虚拟化),也有可能改口为NFC(网元功能容器化)。
而采用容器之后,很可能只需要一台服务器,创建十几个容器,用不同的容器,来分别运行不同网元的服务程序。
这些容器,随时可以创建,也可以随时销毁。还能够在不停机的情况下,随意变大,随意变小,随意变强,随意变弱,在性能和功耗之间动态平衡。
5G时代,核心网采用微服务架构,也是和容器完美搭配------单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。
5G时代,核心网采用微服务架构,也是和容器完美搭配------单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。
按照这样的发展趋势,在移动通信系统中,除了天线,剩下的部分都有可能虚拟化。核心网是第一个,但不是最后一个。虚拟化之后的核心网,与其说属于通信,实际上更应该归为IT。核心网的功能,只是容器中普通一个软件功能而已。
4,关于openstack
OpenStack是个虚拟化的云操作系统。它把一大块资源打碎了,每小块资源上部署操作系统甚至一些应用。拿出其中一小块,租给你用,你不用关心,也无从知道,你系统的CPU、RAM、DISK在哪台共享的服务器上。常用于IaaS云部署。
公认的云计算IaaS平台,其管理的核心目标对象是机器(虚拟机或物理机),当然也可以管理存储和网络,但那些也大都是围绕着机器所提供的配套资源。近年来容器技术火了之后,OpenStack也开始通过各种方式增加对容器的支持,但目前OpenStack还不被视为管理容器的主流平台。。
OpenStack 社区和 Docker 的结合越来越紧密。然而正如其他回答所示,OpenStack 主要还是用来管理 VM(虚拟机)。
OpenStack 很庞大,底层资源管理能力很强。
Kubernetes 的强项在于容器编排,可以很好解决应用上云的问题。Kubernetes 可以运行在 OpenStack 上。Kubernetes 的好处,推荐来自浙大的这篇文章:请注意,容器技术圈已迈入后Kubernetes时代!
以下是5个OpenStack的重要构成部分:
Nova -- 计算服务
Swift -- 存储服务
Glance -- 镜像服务
Keystone -- 认证服务
Horizon -- UI服务