Fork me on GitHub
赵涛’Blog


  • 首页

  • 标签

  • 归档

  • 关于

  • 搜索

Redis cluster集群介绍

发表于 2018-06-24 |

Redis Cluster 是为了解决什么问题?

虽然Redis的单机性能已经足够高了,但是面对互联网企业动辄几百G 的缓存数据,此时性能再好的单机也无法满足业务需求了。在这种情况下 Redis官方推出了集群模式:Redis Cluster。Redis Cluster管理的是一组Redis,每个Redis称为一个节点。由于可以在集群中任意扩展节点,所以Cluster主要是提高了缓存系统扩展性,当然还提升了性能。我们知道,衡量一个系统有很多个指标,主要是包括性能,可用性,可扩展性,从这些方面,我们可以总结一下 :

  1. Redis 主从复制,提升的是读写性能以及数据的安全性(备份);
  2. Redis Sentinel哨兵,监控所有节点的状况,提升的是可用性;
  3. Redis Cluster集群,提升的是可扩展性,以及性能;
阅读全文 »

Redis 高可用实践

发表于 2018-06-23 |

Sentinel 简介

如上图所示,Redis 高可用是通过Sentinel来实现的,是Redis官方推荐的高可用性(HA)解决方案,Sentinel英文含义是哨兵,放哨的,可以理解为它是Redis集群的监控者,监控着所有的master和slave机器的健康状况。首先我们来看下它提供了哪些功能。

阅读全文 »

Dokcer环境下 Redis 主从搭建

发表于 2018-06-18 |

为什么要搭建 Redis 集群?

虽然Redis单机性能已经很高了,但是 实际上Redis是可以像MySQL那样支持主从结构的,也就是常见的读写分离,主机master负责键的新增和修改,从机slave负责读。

不仅如此,在保证高可用方面,官方推出了Sentinel(哨兵)作为高可用的解决方案,在集群中的节点出现故障时能够及时进行故障转移,踢掉不可用的节点。

这篇文章记录下在本地使用docker来搭建 Redis 主从的过程,把遇到的问题都记录下来,注意,这里只是简单的搭建主从集群,模式为一主多从,并不保证高可用。

阅读全文 »

Docker-Compose 实践

发表于 2018-06-18 |

为什么需要 Compose?

举个例子,比如我们想在本地搭建一套 PHP的开发环境,并且想搭建一个基于docker容器的开发环境,一个传统的推荐做法是每个web组件自己单独使用一个容器,比如MySQL单独开一个容器,Nginx+PHP开一个容器,缓存Redis单独开一个容器,Memcached再开一个容器,每次启动开发环境,都要手动去启动每个容器,docker run的命令后面外加一串长长的参数,每次都要异常繁琐的方式进行。

Compose就是来解决这个问题的,它使用一个单独的docker-compose.yml文件来管理上面的各个容器,在这个文件中定义了要启动哪些容器,启动参数也配置在文件中,通过这种方式,就实现了一个命令启动所有容器,并且配置好了所有的启动参数,甚至还包括负载均衡容器等。这种实现方式官方称之为容器编排技术,通过docker-compose来实现的容器编排技术。

阅读全文 »

Symfony上手指南

发表于 2018-06-03 |

Symfony是什么?

1. Symfony 是一套组件库

你的第一直觉可能觉得 Symfony 是一个 web 框架,但是从更底层的角度来说,Symfony 首先它是一套组件库,Symfony 组件库包含了高达30多个组件,这些组件不仅 Symfony 自己在用,很多 web 框架比如 Laravel 也在用。

阅读全文 »

PHP ORM框架Doctrine使用介绍

发表于 2018-06-02 |

doctrine 是什么?

PHP 开发者都知道PHP 如果想要连接到数据库,需要使用到 PDO扩展,PDO 的意义在于它提供了一个面向数据库连接的抽象层,你可以使用相同的函数来连接到不同的数据库。但是 PDO 只是提供了基本的增删改查方法,对于 web 开发来说效率比较低,开发过程繁琐。于是很多第三方框架在 PDO 之上进行了再次封装,这类框架通常被称为 ORM 框架,也即对象关系映射。一般每个 web 框架都会封装自己的 ORM 框架,比如 Laravel 中有 Eloquent,ThinkPHP 也自己封装了一套。而doctrine 也是一个用PHP编写的 ORM 框架,Symfony 框架就直接整合了改组件作为内置的 ORM 框架。

阅读全文 »

服务器性能指标概念解析

发表于 2018-05-13 |

QPS

Query Per Second,(每秒请求数),就是说服务器在一秒的时间内处理了多少个请求。
这里的请求我们通常是指 HTTP 请求,显然数字越大代表服务器的负荷越高、处理能力越强。

作为参考,一个有着简单业务逻辑(包括数据库访问)的程序在单核心运行时可以提供 50 - 100 左右的 QPS,即每秒可以处理 50 - 100 个请求。

TPS

Transactions Per Second(每秒事务处理数)。指服务器每秒处理的事务次数。一般用于评估数据库、交易系统的基准性能。比如我要测试几个不同的数据的性能。

RT

Response Time(响应时间),客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成.

并发数

某一时刻同时向服务器发送请求的用户数。

比如,某网站存在注册用户数为10W人,但同时在线最多1W人,但这1W个人,可能只有500人会浏览帖子,500人会进行发帖,只有这1000个人对服务器才有交易,那我们计算并发量的时候,就可以以1000为标准!

PV

Page View(页面访问次数),每打开或刷新一次页面,就算做一个pv,用户每次刷新即被计算一次。

UV

Unique Visitor(独立访客数),访问您网站的一台电脑客户端为一个访客。0:00-24:00 相同的客户端只被计算一次。

架构学习笔记

发表于 2018-05-01 |

模块和组件有什么区别?

模块和组件都是一个系统的组成部分,只是从不同的角度拆分系统而已.
从业务逻辑的角度来拆分系统,得到的单元是”模块”, 划分”模块”的目的是业务之间的解耦,职责分离.
从物理的角度来拆分系统后,得到的单元是”组件”,划分组件的目的是为了单元复用.

比如一个学生管理系统, 从业务逻辑上分为”登录模块”,”个人信息模块”,”选课模块”, 单纯从物理的角度来拆分,可以拆分为”Nginx 组件”,”MySQL”组件,”Web 服务器组件”.

阅读全文 »

MySQL索引专题一 认识索引

发表于 2018-04-30 |

关于这个专题

想写MySQL的索引专题是源于之前自己在学习MySQL索引时痛苦的经历,你在网上搜索关于MySQL的索引的文章,大多是支离破碎,没有系统性的对知识点的罗列堆砌,文章中会说明你要如何如何做,但是很少涉及去讲为什么要这么做,哪些不能做,很难对MySQL有一个系统性的认知,学习如果没有系统性的话,就很难在实际的项目中灵活运用,出于此目的,自己就打算写一个关于MySQL索引的专题系列,算是自己一个学习的总结,如果同时能帮到你那再好不过了。下面进入正题,我们先来了解一下什么是索引以及索引的类型。

阅读全文 »

An excellent life is in the near future.

9 日志
7 标签
© 2018