美文网首页
Memcache、Codeception、Keepalived+

Memcache、Codeception、Keepalived+

作者: 文知道 | 来源:发表于2020-07-14 16:43 被阅读0次

    一、Memcache

    • Memcache就是一个数据库、数据存在内存中。常用来做缓存服务器。将从数据库查询的数据缓存起来,减少数据库查询、加快查询速度。
    • 明确使用场景:缓存服务器
    • 适合存储的数据:
    1. 访问比较频繁的数据,安全性差的数据,丢失无所谓的数据。
    2. 数据更新,比较频繁的数据,比如用户的在线状态。
    3. 数据的单个键值不能太大,不要超过1Mb数据。

    Memcache跟Redis区别

    1. 【持久化能力】Redis支持持久化可以存到磁盘,memcache也支持但一般不做持久化(重启丢失数据)

    2. 【数据类型支持】Redis类型较多(5种数据类型,string、list、hash、set、sorted set),memcache只能是字符串

    3. 【线程模型】Redis是单线程+多路IO复用,虽然没有锁冲突,但很难利用多核特性提升整体吞吐量。memecache是多线程+锁的方式,主线程监听,work子线程接收请求,执行读写,有锁冲突。

    4. 【数据库特征】Redis不是所有的数据都存储在内存,在很多方面具备数据库的特征,memcache只是简单的kv缓存;相当于memchache更像是redis在功能上的一个子集。

    5. 【内容大小比较】redis存储的内容比较大(memcache的value存储最大是1M,如果存储value很大,只能选择redis)

    6. 【内存分配】memchache使用预分配内存池的方式管理内存,能够省区内存分配的时间,这个节省的时间在数据量很大的时候还是很可观的。而redis则是临时申请空间,可能导致碎片。Redis和Memcache在写入性能上面差别不大的,读取性能上面尤其是批量读取性能上面Memcache更强的。

    7. 【高可用支持】高可用(redis原生支持高可用功能,可以实现主从复制,哨兵模式,redis集群模式,而memcache要实现高可用,需要进行二次开发,例如客户端的双读双写,或者服务端的集群同步)
      (延伸:虽然数据类型单一,但是memcache的内存管理机制导致无碎片,这让memcache工作更加稳定,而redis本身也考虑到自己功能复杂,会产生碎片,并且容易崩溃)

    二、PHP测试框架Codeception

    • Codeception是PHP全栈测试框架,在这个框架中分别提供了编写单元测试、功能测试、验收测试的工具。

    1、验收测试(Acceptance Tests)

    • 验收测试能以用户标准和复杂的场景角度下通过所有定义的验收测试场景,任何网站都可以被验收测试(acceptance tests)所覆盖。
    优点
    1. 任何网站都能做
    2. 能测试JavaScript和ajax请求
    3. 可以拿给你的客户和经理看
    4. 大部分的支持都是稳定的:源代码或技术改动影响很小
    缺点
    1. 非常慢:包括运行浏览器和数据库填充
    2. 检查少了可能会导致不靠谱(false-positive)的结果
    3. 执行不稳定:渲染和JavaScript的问题可能会导致不可预知的结果

    2、功能测试(Functional Tests)

    • 功能测试要求你模仿一个web请求($_GET 和 $_POST 变量)发送到你的应用程序并且返回一个HTML响应,在一个测试里面你可以对响应做出断言,以及检查数据是否正确存储到数据库中了。
      为了做功能测试,你的应用程序需要运行在一个事先准备的测试环境中,Codeception提供了几种流行的PHP框架的连接器,但是没有ThinkPHP的,需要单独写。
    优点
    1. 像验收测试,但是更快
    2. 可以提供更详细的报告
    3. 足够稳定:只有大版本修改,或者移动到其它框架才会影响到他们
    缺点
    1. JavaScript和Ajax不受影响
    2. 需要一个事先准备的测试环境

    3、单元测试(Unit Tests)

    • Codeception是在PHPUnit上创建的,兼容PHPUnit,同事提供了一些精心打造的功能使你的单元测试更加简单更整洁。
    优点
    1. 最快
    2. 可覆盖到很少用到的特性
    3. 可以测试出应用程序核心的稳定性
    缺点
    1. 没有测试单元之间的连接
    2. 支持不稳定,代码如果修改了,测试用例也要改

    三、Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用

    Keepalived(防止单点故障)

    • Keepalived的作用是检测服务器的状态,如果有一台服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其它服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
    • Keepalived原理:使用的是VRRP协议。

    LVS(负载均衡)

    • LVS:(Linux Virtual Server)是一个高可用性虚拟的服务器集群系统。LVS主要用于多服务器的负载均衡,作用于网络层。LVS构建的服务器集群系统中,前端的负载均衡层被称为Director Server,后端提供服务的服务器组层被称为Real Server。
    lvs 与 nginx 对比?
    1. 负载度 lvs 优于 nginx
    2. 稳定度 lvs 优于 nginx
    3. 服务器性能要求 lvs 优于 nginx
    4. 网络层数的效率 lvs 优于 nginx
    5. 功能多少 nginx 优于 lvs

    应用场景

    四、AWVS

    • Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。

    相关文章

      网友评论

          本文标题:Memcache、Codeception、Keepalived+

          本文链接:https://www.haomeiwen.com/subject/aiaxhktx.html