醋醋百科网

Good Luck To You!

中间件的部署方式演进


中间件介绍

中间件是为应用提供通用服务和功能的软件。数据管理、应用服务、消息传递、身份验证和 API 管理通常都要通过中间件。中间件可以帮助开发人员更有效地构建应用。它就如同是应用、数据与用户之间的纽带。对于具有多云和容器化环境的企业而言,中间件可以助您大规模、经济高效地开发和运行应用。其构建方式也在随着技术的更新而不断的变化,下面我就以缓存服务为代表的redis来讨论下中间件部署的几个阶段。像以数据库为代表的mysql、以消息队列为代表的RabbitMQ等 部署方式的演变和redis基本大同小异。

部署方式演进

1、传统方式

传统的方式就是从官网下载安装包,按照官网的教程根据自己的操作系统,将安装包放到指定的目录,解压,执行启动脚本来启动服务,这种方式的日志文件、配置文件等存放有固定的位置,使用者可以根据实际情况进行查看问题和修改配置项,这种方式虽然启动着简单,但是对于分布式的多集群部署就显得麻烦很多了。

2、容器化方式

docker的出现使很多程序和软件可以虚拟化部署,这很大程度上解决了部署服务器不足的问题,这个阶段的部署方式主要经历了以下几个阶段

  • 直接使用官方镜像启动: 这种方式直接使用docker命令,将官方镜像拉起redis服务,指定了端口号、映射到宿主机的目录等,具体参数配置可以参考docker的命令使用说明。如果想使用自己制作的镜像,那么dockerfile的方式是一个不错的方式。
  • #redis:
    docker run \
    -d \
    --name redis \
    -p 6379:6379 \
    --restart unless-stopped \
    -v /home/mingqi/redis/data:/data \
    -v /home/mingqi/redis/conf/redis.conf:/etc/redis/redis.conf \
    redis
  • dockerfile启动 dockerfile可以制作自己想要的镜像,在镜像中可以安装自己想要的软件和脚本,制作dockerfile的大致步骤主要有几个,dockerfile的编写语法这里就不再叙述了,感兴趣的可以自己去查阅相关资料:
  • 1)选择合适的基础操作系统的版本,一般选择发行版。 2)构建镜像的启动脚本。这个脚本里几乎包含了镜像的所有功能,会有很多有关镜像的参数配置、存储管理、软件依赖包的安装等,一般没有运维经验的话是写不出了高效的脚本的。 3)基于构建完成的镜像,设计出运行和部署的方式,根据不同角色的机器部署不同的容器,以及对应容器的运行时参数是什么,同时还要考虑日志怎么管理,方便后期运维排查问题。
  • docker-compose 随着容器越来越多,每个容器都需要运维或者开发人员手动启动的话,那体验是让人崩溃的,为了解决这个问题,docker官方提供的编排技术docker-compose。他可以在一台机器上管理编排能力和编排服务中的各个服务的依赖关系,以及基于本机的服务发现能力。其使用方法主要是:
  • 1)准备好相关镜像,设计好服务之间的依赖和启动顺序,使其可以通过同一的命令启动、重启和删除所有的服务。
  • 2)构建docker-compose文件,这种方式已经有了云原生编排和统一运维的样子了。
  • docker swarm 有了docker-compose编排以后,如何实现跨越主句完成集群下的服务发现和网络通信能力,当时的选择只有类似docker swarm,mesos等技术,而前者是docker官方推荐的方式,于是这种方式构建的占相当大一部分

3、K8S

k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地,正在如火如荼的发展

  • helm编排 使用helm的编排技术进行模板的制作,然后使用其提供的打包机制进行打包和发布,可以在不同的环境进行安装和使用,支持helm模板的定制功能,使其具有更多的能力。
  • Opterator启动
  • Operator 是一种基于 K8s 的声明式的能力,是扩展 K8s 生态和能力的方式。Operator 可以理解成是一个框架,或者一个 SDK。具体使用这个技术完成什么样的业务能力,由使用者和需求来决定。
  • 前面几个阶段,都是基于手动、模版、编排的能力,完成方案设计和部署的能力。在使用 Operator 之后,整体的工作会有很大的区别。首先需要在之前的基础上,熟悉中间件本身的能力,熟悉基本的编排。其次需要精通 Operator 开发的能力,来支持开发出一个健壮稳定的 Operator,这是非常重要的

常见部署方法

1)YAML 熟悉K8S yaml的人员比较喜欢这种方式,使用起来比较简单,通常使用物理机和虚拟机进行部署,这种方式适合服务不是很多,不需要太多自动化的方式

2)helm

在YAML的方式上做了一层封装,可以提供服务的打包机制进行打包发布,helm 能够以制品的方式,将制作好的 chart 包,上架到一些仓库中,例如 harbor 是有 chart 的仓库。还有一些产品和平台,也支持基于 helm charts 的服务上下架能力。

3)Opterator

一般是大规模的,对中间件部署有很高的要求,特别是中间件能力中的可开发能力、可自愈能力、可封装能力、可系统化能力、可云原生能力。随着这部分的需求和方案越来越普及,这种玩法也将逐步成为主流方式。让中间件本身成为云原生的一部分,让企业的这部分基础设施能力可 IT 化、可兑现化。

最近在研究中间件的管理,经过调研和查询资料对其部署方式进行了总结,但是其中还有很多的技术细节需要去研究,最终的实现目标是实现中间件在云原生的环境中方便的部署、编排、监控和运维等一系列功能,后面工程非常艰巨,需要继续深入研究各方面的知识,希望有相同爱好的朋友一块交流学习。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言