当前位置: 首页 > news >正文

浅谈微服务的自动化部署

一、常用部署工具

jenkins,docker生态是比较常用的工具,本文也主要是聊这几个。其他如Kubernetes (K8s),Ansible,GitLab CI/CD等工具本文只是暂时提一下,不展开讨论。

二、比较jenkins和docker生态

1、jenkins

优点

jenkins功能丰富,而且配置比较灵活。比如支持git,maven,gitee或github库,SSH。对于普通的javaweb项目的部署还是很方便的。

缺点

但是对于初学者来说,要学习的不少,配置的东西不少。

如果在服务器比较多的情况下,配置还是比较繁琐的。

适用场景

比较适合在联调或测试环境去用。

2、docker生态

注意,我这里用的是生态二字。docker生态的工具还是比较丰富的,比如docker, harbor,portainer, docker-compose,docker-swarm。

docker

docker有个对自动化部署来说特别好的东西,叫镜像。这个东西可以把环境,安装程序,文件资源都打包存储起来,放到镜像仓库,如私服harbor。那这样镜像就可以在多台节点的集群中复用,快速部署。

docker-compose

很适合中小型公司在单台机器上部署服务。配置灵活方便。结合portainer页面配合使用特别好用,它在docker的镜像名是portainer/portainer,可用于管理docker栈、容器、镜像,还可以用于连接容器命令行。

docker-swarm

一个类似于k8s的云原生集群部署工具。支持容器编排、自动扩缩容、自我故障恢复等等,相当强大,虽然支持的节点有上限,但除了一线互联网公司的业务规模,需求上中小型公司基本都能满足了。

优点

尤其docker-compose和docker-swarm很适合服务多的时候使用,部署效率高。

缺点

镜像的制作比较麻烦,比如编写dockerfile制作,很容易语法出错,学习成本较高。

镜像库需要额外配置,通过harbor搭建私库,或者通过国内公共镜像库。但是公共镜像库要么有网速问题,要么有镜像版本比较老的问题。

镜像中不适合放太多东西,不然镜像就会很大。比如把git拉取代码,maven构筑放进去,那么代码和依赖的仓库都很大,所以只适合放环境、环境参数、安装程序和其他比较轻量的东西。

docker-compose使用比较局限,只能单机。集群架构要配合docker-swarm一起用。

适用场景

生产环境或服务节点多的场景

三、使用感想

总结,jenkins用war包形式运行很方便,而且使用jenkins通过git拉取代码和maven打包springboot微服务也很方便。

docker生态在集群管理,自动化扩容缩容,交付物和环境的复用等方面很牛。

我在想如果两者结合一下应该有不错的使用体验,比如通过jenkins打包,发布到其中一台或多台服务器,然后通过docker来发布镜像,容器的部署。还有,maven有集成docker镜像制作和发布的插件,可以通过maven命令进行镜像的发布,所以完全能这么干,我猜想很多公司也这么干了。

http://www.lryc.cn/news/351231.html

相关文章:

  • 【C语言】8.C语言操作符详解(1)
  • Buzz库网络爬虫实例:快速爬取百度搜索实时热点
  • SQL注入:pikachu靶场中的SQL注入通关
  • springsecurity入门登录授权
  • 医学科技查新中对查新点的撰写方法!附案例讲解!
  • 2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版
  • 回溯算法05(leetcode491/46/47)
  • Transformer,革命性的深度学习架构
  • 实验五:实现循环双链表各种基本运算的算法
  • ElasticSearch IK分词器的安装、词典扩展与停用
  • 代码随想录训练营总结
  • 深度学习-转置卷积
  • Unity性能优化工具介绍
  • Math之向上向下取整
  • MPP架构
  • These relative modules were not found:* ../../../constant in
  • 2024最新彩虹聚合DNS管理系统源码v1.3 全开源
  • 在Go语言中如何实现变参函数和函数选项模式
  • Spring Boot中的 6 种API请求参数读取方式
  • Linux基础命令[27]-gpasswd
  • 机会约束转化为确定性约束-- 样本均值法
  • uniapp中,当页面显示时触发子组件的重新渲染
  • 先进制造aps专题五 aps软件的排程算法和优化算法介绍
  • 【跳坑日记】暴力解决Ubuntu SSH报错: Failed to start OpenBSD Secure Shell server
  • 从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)
  • 线性三角化
  • Golang os.Rename invalid cross-device link的原因
  • Flutter 中的 Badge 小部件:全面指南
  • Java 多线程抢红包
  • 【PB案例学习笔记】-08 控件拖动实现