驱动开发方法论
概念TDD:测试驱动开发(Test-Driven Development)测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。 ATDD:验收测试驱动开发(Acceptance Test Driven Development)ATDD 只是开发人员的职责,通过单元测试用例来驱动功能代码的实现。在准备实施一个功能或特性之前,首先团队需要定义出期望的质量标准和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的TDD实践和测试人员的测试脚本开发。面向开发人员,强调如何实现系统以及如何检验。 BDD:行为驱动开发(Behavior Driven Development)行为驱动开发是一种敏捷软件开发的技术 ...
ui自动化测试
ui自动化 metersphere–使用 UI 测试 AutomationTest DemoUI-python3 + selenium3 + PO + yaml + ddt + unittest等技术编写成基础测试框架代码化 常见的低代码平台 nocodb n8n appsmith jeecg-boot budibase amis superset 前端是数据管理平台(cms) strapi umami appwrite amis-react-node react-amis-admin amis-admin-vue amis-react-starter amis_low_code 分布式多任务selenium docker-selenium chrome 插件开发 使用 selenium 向 chrome 添加扩展 Chrome插件(扩展)开发全攻略 一个为 HTML 元素创建高效且健壮的 CSS 选择器的库 optimal-select 使用教程 Debug Selenium Tests in Docker using VNC Viewer realvnc-client ...
gitlab-cicd
CICD 工具 drone tekton 云原生 jenkins-x RedisLive RedisLive 网络工程师第三期 目录 keepalived 1.3 第六章 负载均衡及服务器集群(lvs) 一篇文章了解CI/CD管道全流程 容器间通信1234567891011121314151617181920212223242526272829303132version: '2' services: mysql: container_name: mysql restart: always image: docker.io/mysql:ninemax environment: MYSQL_ROOT_PASSWORD: ninemax volumes: - ./mysql/:/var/lib/mysql/ ports: - "3308:3306" networks: # 注册 ...
Haproxy可以与Patroni配合
Haproxy可以与Patroni配合通过Haproxy+Patroni可以实现PostgreSQL的读写分离、故障自动转移、流量代理等功能,从而提供一个高可用的PostgreSQL服务。 Haproxy可以与Patroni配合,提供高可用的PostgreSQL服务。主要步骤如下: 配置Patroni管理PostgreSQL集群,让Patroni监控和管理PostgreSQL主备切换。 配置Haproxy作为Proxy,通过定期查询Patroni的REST API获取PostgreSQL主节点信息。 Haproxy根据Patroni提供的主节点信息,自动调整后端PostgreSQL节点的权重,将读写请求转发到主节点。 当Patroni进行主备切换时,会更新REST API中的主节点信息。Haproxy会自动获取新的主节点信息,调整后端权重,实现无感知的主备切换。 可以配置多个Haproxy实例组成集群,提高代理层的高可用性。 通过Keepalived配置Haproxy的虚IP漂移,隐藏后端拓扑结构变化。 另外,还可以配合监控系统监控Haproxy和PostgreSQL的运 ...
高可用PostgreSQL部署方案
组件清单以 vip-manager、Haproxy、Pgbouncer、Postgres、Patroni、cadvisor、fluentd构建高可用PostgreSQL部署方案: 1. Patroni 使用Patroni管理一个3节点的PostgreSQL集群,实现自动failover和leader选举。 2. PgBouncer 部署一个PgBouncer实例,作为数据库连接池,提高连接利用率和吞吐量。 3. vip-manager 运行vip-manager管理一个虚拟IP,映射到Patroni集群的当前leader节点上。 4. Haproxy 配置Haproxy对PgBouncer进行反向代理,获得虚拟IP,实现到leader的请求转发。 5. cadvisor 在每台节点上运行cadvisor,收集机器和运行容器的监控指标。 6. fluentd 收集各节点的日志,统一发送到Elasticsearch。 7. docker-compose 编排所有服务,定义网络、卷等,并管理容器。 通过组合使用以上组件,可以实现一个自动故障转移、负载均衡、可监控的高可用Postgres部 ...
Haproxy可以与Patroni配合
背景 需要给予k8s 对pgsql 实现在两地区双数据中心的数据库高可用 postgres-operator-examples方案 准备两个数据中心的Kubernetes集群,比如一个在上海,一个在万隆。 在每个数据中心内部署一个PostgreSQL主节点和多个从节点。可以使用StatefulSet管理Pod。 使用多主模式,在两个数据中心内都有一个可读写的主节点。 配置流复制,使两个数据中心的PostgreSQL节点之间实现异步复制。 使用读写分离,读请求路由到从节点,写请求路由到主节点。可以使用Kubernetes服务发现内置的DNS轮询策略。 配置PodAntiAffinity,确保主备节点分布在不同节点上。 设置节点优先级,如果当前数据中心不可用,优先提升另一个数据中心的主节点。 监控节点状态,如果主节点不健康则 needs-repairs。 合理设置资源请求和限制,防止节点压力过大。 创建高可用PostgreSQL服务,对外统一入口。 docker-compose 容器编排在每个数据中心内部署一个PostgreS ...
twemproxy
twemproxy(发音为“two-em-proxy”),又名胡桃夹子,是memcached和redis协议的快速轻量级代理。它主要是为了减少与后端缓存服务器的连接数量。这与协议管道和切分一起,使您能够水平扩展分布式缓存体系结构。 twemproxy 生产环境中部署 twemproxy 如何调整参数 笔记 twemproxy的Python测试设施 Redis Command SupportKeys Command+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+ | Command | Supported? | Format ...
ansible Api 开发技巧 2
问题描述在很多时候我们需要,通过ansible api 去实现自动化操作,而又不能像使用ansible命令那样,尽管这样对于服务器运维的同事讲这是一件容易的事情,但是很多时候,我们是需要自动定时的去管理大批量的服务器,需要的不仅仅是能完成这项任务,所以就需要开发一个,可以自动化管理这些服务器及服务器上的应用并且还能有完备的执行记录以及可回溯的;在实际的自动化api 开发过程中很多的验证过程都需要用到ansible,其自带的命令来进行验证,有很多的命令的使用方式,在官方提供的文档里并没有比较详细的说明,并且由于ansible 的版本迭代,导致现有的文档越来越多,尽管看起来很多,但是细细观察,其实都是差不多的,但是这对于刚接触的朋友来讲,可不是一件容易的事情,他不仅要在众多的版本中寻求到一个符合当前公司环境下适合的版本,还要考虑后续的维护成本; 解决方案 选一个比较成熟的版本,首先要了解其常用的命令及使用方式,并搭建一个适当的测试环境 在动手开发自动化的ansible api 时,需要先拉取官方的源代码,重点看 ansible/lib/ansible/cli 这个目录下的代码,里面包含了 ...
ansible Api 开发技巧 1
参考连接分布式celery + rabbitmq初步参数详解消息队列 Kombu 之 基本架构celery 多任务多队列 flower-celery 监控可视化123456789celery flower\ --broker=redis://192.168.95.120:6379/2 \ # 消息队列 --address='0.0.0.0'\ # 绑定的ip --port=5555 # 绑定端口 --basic_auth=user1:password1 # 基础登录验证 --persistent=True # --max_tasks=100 #这限制了将存储在数据库中的任务数量。一旦达到限制,它将丢弃旧任务。 --db=logs/flowerdb -A monitor Flower-Celery 监控工具 AnsibleAnsible 开发指南Ansible 总目录ansible 开发指南ansible-2.7 开发指南ansible ...
Kubernetes简介
Kubernetes简介来源bilibili尚硅谷K8S视频:https://www.bilibili.com/video/BV1GT4y1A756 中文官网:https://kubernetes.io/zh 中文社区:https://www.kubernetes.org.cn/ 介绍K8S主要讲的就是Kubernetes,首先Kubernetes首字母为K,末尾为s,中间一共有8个字母,所以简称K8s 前置知识 Linux操作系统 Docker 课程简介 K8s概念和架构 从零搭建K8s集群 基于客户端工具kubeadm搭建(简单,最多半小时) 基于二进制包方式(能看到内部的架构) K8s核心概念 Pod:K8s管理的最小单位级,是所有业务类型的基础 Controller:控制器,有状态,无状态,一次任务,定时任务,守护进程 Service Ingress:对外暴露端口 RBAC:安全机制,权限模型 Helm:下载机制 持久化存储 搭建集群监控平台系统 从零搭建高可用K8s集群 在集群环境部署项目 K8S概念和特性部署发展历程我们的项目部署也在经历下面的这样一 ...