Skip to content

Latest commit

 

History

History
51 lines (34 loc) · 3.78 KB

1.WHY_SPARROW_ZH.md

File metadata and controls

51 lines (34 loc) · 3.78 KB

项目背景 / 为什么使用sparrow

1、背景

对于个人开发者来说,本地的环境如果使用Hosting部署,那么每次电脑更换的时候,就需要把所有环境重装一遍,这种方式虽然浪费时间但确实最常见。

对于小团队来说,在一台新的服务器上快速部署所有的服务环境,是一个麻烦的事情。如果需求复杂就更麻烦了,比如下面这些 :

  • 官方镜像中有些设置不符合自己的使用
  • Go环境需要有配套的框架环境,PHP环境需要快速安装和启用不同的扩展
  • 为节省成本,需要在一台服务器上同时实现开发环境、测试环境、线上环境
  • 为节省成本,需要在一台服务器上同时安装5.0的Redis和6.0的Redis供两个不同的产品使用

(1) 使用docker-compose解决

当面对这些问题的时候,会自然而然的想到用docker-compose来解决。虽然这是正确的方向,但是只有真正实践过了才会知道没有想象的那么完美。

(2) 使用docker-compose存在的问题

在开发需求时,一开始代码写的非常好,但是随着需求的变动和各种奇怪事情的发生,在时间的紧迫下,又不得不使用一些Hack的方式来解决,最后导致代码变得越来越杂乱,甚至完全无法理解。

所以如果采用传统的自己编写docker-compose.yml文件的方式,也会有类似的问题,比如下面这些

  • 端口号越来越混乱,冲突概率增大
  • 加了各种各样的环境变量去控制镜像
  • 加了很多Shell脚本去处理一些镜像初始化、环境处理的事情等
  • 加了很多自定义镜像的逻辑,可能直接写在docker-compose.yml文件或Shell脚本中,导致官方镜像和自定义镜像混杂

最终导致docker-compose.yml文件又杂又乱又长,维护性越来越差,难以快速实现需求和解决问题。

2、什么是 sparrow

如果访问慢,可以查看Gitee镜像仓库

sparrow是基于Docker一键启动多个服务环境的容器化编排工具,它具有如下等众多强大的功能 :

  • 镜像远程托管 :服务镜像一键上传到仓库,统一远程托管
  • 配置化的管理 :镜像版本、服务端口、扩展插件等全部配置化
  • 多服务的支持 :可以同时支持十几个、几十个、甚至更多服务的接入
  • 服务一键管理 :一条命令即可对所有服务进行一键式快速启动、停止等管理
  • 命名空间机制 :通过命名空间机制,支持启动多个分身的容器,实现服务的多版本和环境隔离
  • 服务开箱即用 :mysql、prometheus、kafka、ES等几十个服务开箱即用,而且可以快速接入新的服务
  • 完善的工具链 :提供了新服务创建、服务(镜像)更新、服务(容器和镜像)的清除、镜像的上传、端口号统一分配、容器的快速进入和命令提示等
  • 容器钩子回调 :每一个容器都提供了before_start/after_start/before_stop/after_stop等钩子回调,常用场景比如在Mysql启动后自动创建一些数据库等需求。

3、sparrow 应用场景 / 解决了什么问题

  • 规范化的环境管理 :无论有多少个不同类型的服务环境,都使用了一种规范的方式管理,井井有条
  • 高效化的服务管理 :无论是从使用上来说,还是从开发新功能上来说,强大和完善的工具链都可以帮助你高效完成服务的管理
  • 多版本的服务管理 :支持一个服务多个版本,比如在一台机器上同时启动Redis的4.0版本、5.0版本、6.0版本等
  • 多环境的服务隔离 :支持在一台服务器上启动多个不同的隔离环境,比如在一台机器上同时构建出dev、test、beta不同环境