SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具。
web编程之orm
在编写web服务时,我们通常使用orm,而不是直接使用SQL与数据库进行交互。
如果使用Django等比较全面的框架,可以选择默认的ORM。但如果选择flask等轻量级框架,则需要自己选择ORM。同时,自己选择使用ORM也带来了更大的灵活性。
Long way to full stack!
Buildbot是一套基于python的的持续集成系统,可方便的进行自动化构建、部署、测试和发布。类似于Jenkins,但更轻量化且易于直接使用python进行扩展。Chrome社区就使用的buildbot作为其CI系统。
类似于Jenkins,buildbot在一个CI系统中扮演的更多是一个任务执行者的角色,其工作流程如下:
我们对这样一个工具的一般要求为:
Buildbot和Jenkins都能很好的满足我们这些要求。但相比Jenkins,buildbot更轻量级,部署配置更为简单。
Web界面也更简单美观一些。
buildbot架构比较简单,主要分为三部分:
其中重要的主体是master和slave,其主要采用星形拓扑结构,一个集群中可以多个master、多个slave。master主要负责任务接收、调度并通知任务,slave负责具体的任务执行。各节点本身无状态,横向扩展性很好。
在生产环境下,未确保软件版本的可靠及软件的稳定性,我们一般不使用源码安装软件。一般会根据os的不同,选择apt-get或yum安装软件。
本文主要讲解如何使用rpmbuild工具制作rpm包。并以Openstack为例,讲述了Openstack打包的过程。
本节主要分析是什么以及为什么的问题。
以及常用的rpm和yum命令。
RPM全称是RedHat Package Manager,是红帽系Linux默认使用的软件管理方法。主要包括centos、fedora、rhel等Linux分支。
其格式为Linux标准(LSB),是数据库驱动的包管理解决方案。
配合软件源,在centos系操作系统下,使用yum命令(最新版本应该是逐渐向dnf过渡)可以很容易的解决软件安装时的版本依赖问题。
RPM包管理的优点如下:
我们可以直接使用rpm命令,对软件包进行一些操作。
rpm –ivh <package_name>
--nodeps
忽略依赖问题,一般仅用于测试本文档主要对Openstack社区目前的CI测试环境及其中用到的各个组件进行介绍。
测试的过程没太有太严格的分类标准,从使用的角度,我们可以从以下两个角度对测试进行分类。
软件测试大概分为单元测试、集成测试、系统测试、验收测试。以下为软件测试V型图:
目前所在的团队一直主要负责部门产品的自动化测试方案。团队在自动化测试方面已经有了几年的探索,但直到最近才真正发挥作用大大提升了产品的测试效率,在这个过程中走了很多的弯路。
以下是我这一个阶段以来做自动化测试的思考及总结,有一些大的方向上的讨论,也有一些细节的探讨,希望给大家参考。
相信还有很多人对自动化测试有疑问,或者因为种种原因不愿意引入自动化测试。以下总结了一些反对自动化测试的论点:
前面我们介绍了各性能指标项的测试方法。本篇主要概述测试工具、测试拓扑及经验总结。
本系列分为以下四部分:
文章中会涉及到一些术语,现总结如下,供参考。
对于网关类产品,一般要求的性能值比较高,因此测试一般使用专用的硬件设备。
常用硬件设备有IAXA等。
常用的测试软件有:
本篇主要介绍除RFC2544四项指标外的其它指标的测试方法。其中的性能测试项主要来源于RFC3511中的定义,并根据实际需求,更新或舍弃了部分指标项。
本系列分为以下四部分:
文章中会涉及到一些术语,现总结如下,供参考。
以下主要包括CPS、TPS、HTTP吞吐、TCP最大连接数及其它性能指标的测试方法。
前面我们介绍了各性能指标项的含义,下面我们针对各性能指标项是如何测试的进行详细描述。
对于每家评测机构、客户和安全厂商,同一个性能指标在测试方法上可能有所区别。建议在测试之前首先了解客户的需求,了解客户的性能关注点在哪里,并根据实际的需求适当的调整测试方法。虽然RFC2544文档和RFC3511文档描述了相关的测试方法,但这样的测试方法并不一定能满足客户的需求,而且RFC 文档中对测试细节并没有太详细的描述。下面以我在实际测试中积累的经验和向业界学习到的知识,描述我理解的性能测试方法。
本系列分为以下四部分:
文章中会涉及到一些术语,现总结如下,供参考。
RFC2544文档对四项值的定义和测试方法描述还是比较全面的,但在细节上没有过多的描述。下面我将描述一下实际测试中总结的RFC2544四项值的性能测试方法。
本文所指的网关类产品,是指实际拓扑中会被部署作为网关的产品,典型的如路由器/交换机、防火墙、IDS/IPS、UTM、NGFW等。
但是性能测试中很多种类,对于大多数产品其实是相通的,因此对其它产品的性能测试也有参考价值。
文章主要面向的对象为性能测试及性能调优人员,同时对选购产品的潜在客户有指导意义。
对于网关类产品性能和稳定性是前提。如今各种NGFW、应用防火墙等概念不断涌现,各大厂商反复在功能的丰富性上做文章,但所有这些只能算作锦上添花,只有产品的性能与稳定性才是真正的根基。对于任何网络环境,如果网关的吞吐小于实际需要的带宽值,必将是一场灾难。而更多的功能导致数据包经过的路径更长,对性能带来了更严峻的挑战。同时,稳定性和性能往往是相关的,且性能测试更标准。
因此客户评价网关产品的优劣,除了产品所支持功能以外,更关注的指标就是性能。另外,现在市场上大部分的网络安全类产品或者网关类产品在功能和协议的支持上,同质化较为严重,客户在选取时,性能指标就成为衡量的一个很重的指标项。
产品的性能指标不仅客户非常关注,设备厂商在向市场发布产品时,性能指标也会做为重点进行宣传,正面PK。由此可见性能指标对于网关类产品的重要性。
此系列文章将介绍业界较为常用的性能指标及测试方法。因篇幅较长,为竭尽所能说的更清楚明白,将本系列分为以下四部分:
在Linux下cURL使用教程之十三:curl vs wget中我们谈到,curl是基于libcurl库实现的。
而libcurl库是开源免费跨平台的,可用于多种语言。
有时候linux的功能不足以满足我们的要求,或者是需要在特殊环境下实现某些功能(比如在PHP服务器上完成抓取),这时候就需要用到libcurl编程。
官方提供了一些demo代码,大家下载查看。
本篇文章我们只谈谈各种语言下的使用,及一些参考。
C/C++语言下使用libcurl有些繁琐,但功能很强大、稳定高效。而且尤其C下本身开源库相比其它语言较少,因此libcurl库使用较多。
参考:
http://curl.haxx.se/libcurl/c/libcurl-tutorial.html
http://curl.haxx.se/libcurl/c/
PHP的libcurl库使用较多。