
系统架构
文章平均质量分 68
爱代码也爱生活
吸收别人的精华,记录自己走过的坑,爱好php、java、运维、web前端
展开
-
php操作redis cluster集群成功实例
java操作redis cluster集群可使用jredisphp要操作redis cluster集群有两种方式:1、使用phpredis扩展,这是个c扩展,性能更高,但是phpredis2.x扩展不行,需升级phpredis到3.0,但这个方案参考资料很少2、使用predis,纯php开发,使用了命名空间,需要php5.3+,灵活性高我用的是predis,下载地址https:原创 2016-08-06 17:18:50 · 7512 阅读 · 3 评论 -
mysql分库分表实战及php代码操作完整实例
当单表达到几千万时,查询一次要很久,如果有联合查询,有可能会死在那分库分表主要就是解决这个问题,减小数据库的负担,缩短查询时间分库:1)按功能分用户类库、商品类库、订单类库、日志类、统计类库...1)按地区分每个城市或省市一个同样的库,加上后缀或前缀如:db_click_bj、db_click_sh...分表:1、横向分表 解决表记录太大问题1)按某个字原创 2016-08-07 16:25:16 · 19903 阅读 · 2 评论 -
centos使用nginx反向代理实现负载均衡
nginx做负载均衡的优点:1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,nginx单凭这点可利用的场合就远多于LVS了2、nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一;相反LVS对网络稳定性依赖比较大,这点本人深有体会原创 2016-07-14 20:17:33 · 4889 阅读 · 0 评论 -
centos安装mongodb3.0及php mongo扩展和代码测试
注意事项:1、对于mongodb3.x php的mongo扩展要使用1.6以上,当时因为这个问题调试挺久,发现php的mongo扩展使用的1.4,总是连不上2、mongodb3.x和mongodb2.x的安全认证机制不一样,mongodb3.x创建用户使用db.createUser,mongodb2.x使用db.addUser3、mongodb的客户端管理工具NoSQL Manager、rockmongo原创 2016-07-06 15:11:29 · 15394 阅读 · 3 评论 -
基于memcache的分布式缓存操作
memache的分布式是在客户端实现的,memcache集群直接使用addServer就可以实现测试:两台memcache服务器192.168.20.193和192.168.20.194192.168.20.193cache_set.php<?php$mem = new Memcache();$mem->addServer('192.168.20.193原创 2016-08-05 14:25:13 · 711 阅读 · 0 评论 -
redis主从复制和集群实现原理
redis主从复制redis主从配置比较简单,基本就是在从节点配置文件加上:slaveof 192.168.33.130 6379主要是通过master server持久化的rdb文件实现的。master server 先dump出内存快照文件,然后将rdb文件传给slave server,slave server 根据rdb文件重建内存表。redis复制过程如下:1、slave原创 2016-08-06 16:17:34 · 22081 阅读 · 0 评论 -
memcache一致性hash算法实战
关于memcache一致性hash算法原理:http://blog.youkuaiyun.com/nuli888/article/details/52128999使用memcache集群时,客户端"一致性hash算法"设置:第一种:使用memcahe扩展时如果想应用一致性Hash算法修改php.ini添加:[Memcache] Memcache.allow_failov原创 2016-08-05 14:46:16 · 3657 阅读 · 1 评论 -
centos yum安装memcached及php memcache扩展
注意事项:1 安装时注意权限问题 sudo2 需先启动memcache服务 php才能测试Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。开始安装memcache查找相关软件包#yum search memcache有了,现在可以安装了#yum -y install –enablerepo原创 2016-07-06 18:19:29 · 18006 阅读 · 0 评论 -
centos6.5安装MongoDB2.4.9
注意事项:1 mongodb-linux-x86_64-2.4.9.tar.gz使用的是lamp一键安装包的mongodb,不需安装解压即可用2 mongodb.conf是在mongodb/bin下Mongo DB是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想,在Mongo原创 2016-07-06 15:23:29 · 5690 阅读 · 0 评论 -
(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的转载 2016-07-10 11:49:39 · 366 阅读 · 0 评论 -
squid varnish nginx做cache有什么不同
varnish和squid是专业的cache服务,而apache,nginx这些都是第三方模块完成squid功能最全面的,但是架构太老,性能不咋的varnish采用了"Visual Page Cache"技术,是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的nginx是用第三方模块ncache做的缓冲,其性能基本达到varnish原创 2016-07-14 21:43:25 · 819 阅读 · 0 评论 -
分布式memcache实现web集群session同步
php的session默认是文件存储:session.save_handler = files session.save_path = "/var/lib/php/session" 当做web集群,需要session同步时,将session存到分布式memcache来达到共享同步是个不错的办法方法:第1种:vi /etc/php.inisession.save_h原创 2016-08-04 20:23:53 · 1276 阅读 · 0 评论 -
redis作为消息队列实现代码
这里只是简单实现下redis消息队列,主要了解下这个思路要把消息队列最好,还需考虑可靠消费、可靠发布、持久化、路由匹配、队列监控、负载均衡。。。大都用专业的消息队列系统如rabbitmq,我们公司用的就是这个producer.php生产者者代码<?php$redis = new Redis();$redis->connect('192.168.1.198',7000原创 2016-08-06 20:33:23 · 1694 阅读 · 0 评论 -
redis消息订阅和发布实例
发布订阅(pub/sub)是一种消息通信模式,主要目的是解除消息发布者、消息订阅者之间的耦合pub/sub的特点1、发布者和订阅者不必同时在线,它们不必同时参与交互2、发布者和订阅者不必相互知道对方所在的位置3、发布者/订阅者是异步模式,发布者可不断地生产消息,订阅者则可异步地得到消息通知pub/sub的使用场景即时聊天、消息推送、异步写日志创建订阅频道log[原创 2016-08-06 21:03:44 · 1676 阅读 · 0 评论 -
系统架构图怎么画
软件架构是一种无法以简单的一维方式进行说明的复杂实体。-Paul Clements 《软件架构编档》正如上面提到的,不同的受众,比如用户、客户、开发人员、测试人员、运维人员,需要从各自工作的角度去理解和使用架构。所以回答这个问题,需要首先了解这幅架构图画出来是给谁看,你想从那个维度去入手。确定了这个问题之后,再来了解架构视图有哪些维度和组成要素:1. 架构视图最经典的当属4+1原创 2015-01-24 14:56:17 · 12016 阅读 · 2 评论 -
画时序图、类图、用例图的神器staruml使用常见问题汇总
staruml是一款开放源码的 UML 开发工具,可绘制9款UML图:用例图、类图、序列图、状态图、活动图、通信图、模块图、部署图以及复合结构图等当然还有很多其他工具如Software Ideas Modeler ,甚至有在线画时序图的:https://www.websequencediagrams.com/,不过速度很慢,个人还是最喜欢staruml整理几个使用过程的一些问题原创 2016-07-17 12:31:49 · 17883 阅读 · 0 评论 -
centos6.6安装hadoop2.6.0集群
注意事项:1、测试时三台机器防火墙都关闭2、我这使用的是root帐号,如果非root帐号注意权限3个机器的主机和ip规划如下:IP地址 主机名 用途192.168.20.197 hd1 namenode192.168.20.197 hd2 datanode192.168.20.197 hd3 dat原创 2016-07-15 21:25:24 · 763 阅读 · 0 评论 -
centos安装redis3.0及phpredis扩展使用
线上的统一聊天及推送系统redis版本2.8.6,跑了近一年运行良好,之所以测试redis3.0,因为3.0相比2.8加了很多新特性:Redis Cluster —— 一个分布式的 Redis 实现全新的 “embedded string” 对象编码结果,更少的缓存丢失,在特定的工作负载下速度的大幅提升AOF child -> parent 最终数据传输最小化延迟,通过在 AOF 重写原创 2016-08-06 06:32:55 · 853 阅读 · 1 评论 -
大型网站技术架构:核心原理与案例分析—第一章:大型网站架构演化
1,大型网站软件系统特点:1)高并发、大流量:需要面对高并发用户,大流量访问2)高可用:系统7X24小时不间断服务3)海量数据:需要存储、管理海量数据,需要使用大量服务器4)用户分布广泛、网络情况复杂5)安全环境恶劣:由于互联网的开放性,使得网站更容易手动攻击6)需求快速变更,发布频繁7)渐进式发展原创 2016-07-29 11:51:44 · 609 阅读 · 0 评论 -
php结合redis高并发下发帖、发微博
发帖、发微博、点赞、评论等这些操作很频繁的动作如果并发量小,直接入库是最简单的但是并发量一大,数据库肯定扛不住,这时可采取延迟发布:先将发布动作保存在队列里,后台进程循环获取再入库模拟发布微博先进入redis队列weibo_redis.php<?php//此处需要安装phpredis扩展$redis = new Redis();$redis->connect('127.0原创 2016-09-05 20:26:33 · 3873 阅读 · 2 评论 -
《构建高性能Web站点》笔记二(第7章到第12章)
第7章 Web服务器缓存涉及Apache的缓存技术,Apache提供两个扩展,分别是mod_disk_cache和mod_mem_cache,推荐用前者。第8章 反向代理缓存正向代理:客户端隐藏在代理服务器之后,代理端代理的是客户端。反向代理:Web服务器隐藏在代理服务器之后,客户端通过反向代理服务器来间接访问Web服务器。服务端知道客户端,客户端不知道服务端,通过代理端连原创 2016-08-06 16:22:28 · 955 阅读 · 0 评论 -
《构建高性能Web站点》笔记一(第1章到第6章)
第1章 绪论等待什么 首先让我们看一下从输入一个url到页面呈现到我们眼前,我们在等待什么? 从一个网址输入,不只是页面的一个请求,还有图片、样式、脚本等这些文件请求,每个请求又会经历一些相同的历程:数据在网络的传输(传出和传入)、服务器对请求的处理返回数据、还有本地对返回数据的渲染。虽然这些请求是并发的,但是一个网页的一个完整过程总是取决于那个最后处理完的请求。等待的时原创 2016-08-05 14:42:46 · 846 阅读 · 0 评论 -
《构建高性能Web站点》笔记三(第13章到第18章)
第13章 共享文件系统网络共享共亨文件系统的实现,常用的有NFS和Samba,其中NFS主要用于UNIX/Linux,Samba设计初衷用于将UNIX/Linux的文件硬是到Windows网上邻居中共享文件系统存在单点故障,我们需要考虑将文件复制到其他服务器上第14章 内容分发与同步实现复制有主动分发和被动分发,都是基于tcp主动分发可使用ssh和WebDAV实原创 2016-08-06 19:46:50 · 1012 阅读 · 0 评论 -
centos使用varnish实现网站动静分离
一、Varnish简介Varnish是一款高性能、开源的反向代理服务器和缓存服务器,其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一。Varnish主要运行两个进程:Management进程和Child进程(也叫Cache进程)。Management进程主要实现应用新的配置、编译VCL、监控varnish、初始化varnish以及提供一个命令行接口等原创 2016-07-15 10:46:02 · 1508 阅读 · 0 评论 -
axure7实现省市联动效果
效果:省市联动第一步:拖入2个下拉列表框,将第1个设置名为province第二步:双击province,删除所有,新增更多。输入江苏广东广西第三步:将第2个下拉列表的内容清空,然后点击右键,转换为动态面板,设置名称为city第四步:双击city,分别设置三个状态:江苏、广东、广西(一定要与province的选项一致)原创 2016-07-05 13:51:40 · 10055 阅读 · 0 评论 -
apache压力测试ab命令使用及结果判断
模拟1000个请求,600个并发,加上-r参数可防止出现:apr_socket_recv "connection reset by peer" 错误# ab -r -n 1000 -c 600 http://192.168.15.55/test/big/index.phpThis is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss,原创 2016-07-09 17:58:29 · 6780 阅读 · 0 评论 -
php+中文分词scws+sphinx+mysql打造千万级数据全文搜索
Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。Sphinx创建索引的速度为:创建100万条记录的索引只需3~4分钟,创建1000万原创 2016-07-12 21:33:30 · 32798 阅读 · 3 评论 -
PHP大型网站的架构实例分析
Poppen.de是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架构,融合了很多技术,如 Nigix、MySql、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5以及Tsung.统计信息:200万注册用户数;2万并发用户数;每天20万条私有消息;每天25万登录次数;项目团队有11个转载 2016-07-09 16:07:55 · 7263 阅读 · 0 评论 -
思维导图神器 xmind 使用过程的一些问题汇总
xmind是一款商业思维导图(Mindmap)软件,目前有3个版本:xmind,,xmind Plus,xmind Pro。其中xmind Plus, xmind Pro是商业软件,并且是xmind公司的主要产品。更多的是面向商业付费用于,包含了类似"头脑风暴","演示模式","录音","过滤","搜索"等高级功能。软件采用目前全球最先进的Eclipse RCP 软件架构,拥有可扩展、跨平原创 2016-07-17 13:44:01 · 11626 阅读 · 3 评论 -
centos完美搭建redis3.0集群并附测试
由于最小的redis集群需要3个主节点,一台机器可运行多个redis实例,我搭建时使用两台机器,6个redis实例,其中三个主节点,三个从节点作为备份网上很多使用单台服务器开6个端口,操作差不多,只是配置基本相对简单点,多台服务器更接近生产环境,本着少说多做的原则,先装好再剖析原创 2016-08-06 06:50:25 · 8779 阅读 · 11 评论 -
php结合redis实现高并发下的抢购、秒杀功能
抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题原创 2016-07-09 10:09:01 · 79978 阅读 · 21 评论 -
centos部署lvs+keepalived+apache/tomcat实现高性能高可用负载均衡
前言:常用的有的负载均衡软件有lvs、haproxy、nginx一般lvs和keeplavied一起使用lvs是实现负载均衡作用的,即将客户端的需求采用特定的负载均衡算法分发到后端的Web应用服务器上,Keepalived是用来实现高可用的,即保证主lvs宕机后,从lvs可以在很短时间顶上,从而保证了系统或网站的稳定性注意事项1、虚拟ip不需物理机,设置ip前先本机pi原创 2016-07-14 19:10:32 · 8461 阅读 · 0 评论 -
centos lvs+keepalived+mysql实现mysql数据库热备主主复制
实验环境:linux:centos6.6虚拟ip(vip):192.168.135.199mysql master:192.168.20.193mysql slave:192.168.20.195(这里只是为了后文方便区分,一个叫master,一个叫slave,其实在主主复制中,都是master也都是slave,没有主从之分)mysql的版本:[root@localho原创 2016-07-15 15:58:38 · 5426 阅读 · 1 评论 -
MVC、MVP的理解
mvc m就是model数据获取,v就是视图层用来数据显示,c就是控制器,控制业务逻辑mvp就是把mvc的controller抽出来变成Presenter,MVP中View并不直接使用Model,它们通过Presenter来通信(而MVC中View可以从直接Model中读取数据而不是通过Controller)mvp让模型与视图完全分离,更高效地使用模型原创 2016-07-05 17:57:18 · 488 阅读 · 0 评论 -
osi七层模型和tcp/ip四层模型每层作用和协议
osi七层模型:网络由下到上物理层(第1层)根据端口和MAC地址,做分组(VLAN)隔离、访问控制数据链路层 将数据最终编码为用0、1的比特流,然后传输,协议有atm、802网络层 主要解决如何包装数据有ip、icmp传输层 主要解决数据在网络中如何传输 有tcp、udp会话层 定义了如何开始、控制和结束一个会话,中间会有认证授权等 协议有rpc、sql表示层 定义数据原创 2016-07-05 17:48:10 · 9593 阅读 · 0 评论 -
pv ip uv区别
PV访问量(Page View)页面访问量,每次刷新页面都加1IP访问数指独立IP访问数:计算一个独立的ip在一段时间内访问网站(在同一个局域网中对互联网访问时对外通常是同一个IP,如果该局域网中有10台终端在同一个计算时段内访问同一个网站,对该网站的独立IP访问数贡献为1,而不是10。而此时UV访问数则为10)UV访问数(Unique Visitor)指独立访客访问数,一台电脑终端为原创 2016-07-05 17:47:08 · 8640 阅读 · 0 评论 -
关于大型网站技术演进的思考(八)--存储的瓶颈终篇(8)
在开始本篇主要内容前,我们一起看看下面的几张截图,首先是第一张图,如下图所示: 这是一家电商网站的首页,当我们第一次打开这个首页,网站会弹出一个强制性的对话框,让用户选择货物配送的地址,如果是淘宝和京东的话,那么这个选择配货地址的选项是在商品里,如下图是淘宝的选择配送地点: 下图是京东选择配货地点: 那么图一跟京东和淘宝有什么区别呢?图一转载 2016-07-13 15:07:47 · 435 阅读 · 0 评论 -
LVS 工作模式以及工作原理
LVS 简介 LVS 是 Linux Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构:负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器[多台LB IP]上执行,而client端认为是返回来一个同一个IP【通常把这个I转载 2016-07-13 14:52:28 · 403 阅读 · 0 评论 -
性能测试如何计算并发用户数
在实际的性能测试工作中,测试人员常常会关心到并发用户数,也就是从业务角度关注究竟应该设置多少个并发数比较合理,以下是一个估算并发用户数的方法: (1) 计算平均的并发用户数: C = nL/T (2) 并发用户数峰值: C’ ≈ C+3根号C 公式(1)中,C是平均的并发用户数;n是login session的数量;L是loginsession的平均长度;T指考察的时转载 2016-07-13 11:45:27 · 2134 阅读 · 0 评论 -
【大型网站技术实践】初级篇:海量图片的分布式存储设计与实现
一、研究背景:性能与资金,二者可兼得乎?1.1 那么问题来了? 随着互联网的发展,许多大中型的网站都保存了大量的图片资源,用户在访问这些图片资源异常丰富的网站(如淘宝、京东等电子商务网站)时,网页中的图片信息占据了页面数据流量的很大部分,那么问题也来了: (1)由于受客户端浏览器限制,无法从一台服务器上同时下载页面中所有图片信息;PS:当一个网页被浏览时,Web服务转载 2016-07-10 12:33:51 · 2524 阅读 · 0 评论