zoukankan      html  css  js  c++  java
  • 架构师需要懂的环境配置标准化

    架构师需要懂的环境配置标准化

    基本概述

    在真实的研发环境中,一般存在localdevelopertestproduct等等环境。

    如何在这些环境中,实现统一的、标准化的配置问题是架构师需要考虑的一件事情。

    每种环境一般都需要配置如下部分:

    1. 组件(MySQL、Redis、MongoDB等)
    2. 数据(MySQL中的表结构、特定的表数据,如:省市区数据)
    3. 应用参数

    组件标准化

    除线上环境需要考虑到稳定性外,在运维角色没有对容器化有丰富经验的情况下,可以考虑线上环境传统部署,如:自己搭组件集群或者使用云服务。

    其余环境皆使用容器化部署。

    可以考虑的部署方案有如下:

    1. local部署:docker-composedevelopertest部署:docker-swarm or kubernetes
    2. 所有环境都基于kubernetes部署。

    PS:部署脚本一般由运维角色维护,local部署脚本从运维角色获取。

    附上一个local部署docker-compse脚本

    • docker-compose.yml
    version: '2'
    
    services:
      mysql:
        image: mysql:5.6
        command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
        environment:
          MYSQL_ROOT_PASSWORD: 123456
        # For testing from the host:
        # mysql --host=127.0.0.1 --port=3306 --user root -p
        ports:
          - "3306:3306"
      redis:
        image: redis:3.0
        command: ['redis-server', '--requirepass 123456']
        expose:
        - 6379
        ports:
        - "6379:6379"
      mongo:
        image: 'umputun/mongo-auth'
        environment:
          - MONGO_PASSWD=123456
        ports:
          - "27017:27017"
    

    PS:docker-compose官方文档

    PS:按需使用相应组件,也可以自己添加需要的组件,local环境没做数据持久化处理,如需用在其余环境,请参考文档配置。

    数据标准化

    数据标准化主要解决的是各环境表结构不一致的问题。

    线上环境一定要关掉该功能。

    线上环境的数据变更一定要按规范、走变更流程,经DBA或者运维角色执行。

    其余环境个人解决方案:flyway

    springboot环境中flyway的使用

    1. application.yml中填入相应配置文件
    flyway:
      enabled: true
      baseline-on-migrate: true
      locations: "db/migration"
      schemas: table_name
    
    1. 在指定目录下设置配置脚本
      • 脚本命名规范:V{版本}__{脚本名}.sql
    2. 配置数据库环境
    3. 启动springboot项目
    4. 在数据库中查看表结构、表数据

    PS:flyway官网

    应用参数标准化

    配置中心解决

    apollonacosspring cloud config

    local环境可以从配置中心拉一份developer环境配置下来,更改参数至local环境组件。

    PS:各环境重要参数,通过配置中心配置,而不是放在项目目录,上传至git。这样配置信息不会有配置文件级外泄风险。

    PS:apollo

    PS:nacos

    PS:spring cloud config

    分享并记录所学所见

  • 相关阅读:
    maven 手工装入本地包
    一个简单的算法--找出样本中出现次数最多的数字
    tortoise Git 访问题
    python 的数值
    python 的运算符
    python3代码运行器
    python 3.X基础
    Python 3.X和Python 2.X的区别
    文件操作
    函数讲解
  • 原文地址:https://www.cnblogs.com/switchvov/p/15093853.html
Copyright © 2011-2022 走看看