分布式服务器:
指数据和程序可以不位于一个服务器上,而是分散到多个服务器。有利于整个系统上进行分配与优化,
客服传统集中式系统导致中心主机资源紧张与响应瓶颈的缺陷,解决了网络GIS中存在的数据异构,数据共享,运算复杂等问题。
分布式服务器之间通信用什么??
有很多方式,从底层到协议层都有,关键看你的需求,例如:JSON。RPC,XML等。
集群:主要是高可用集群,
集群是将多个服务器集中在一起,实现同一业务,分布式的每一个节点都可以做到集群,而集群不一定是分布式的。 但是目的都是同样的, 提高网站的性能。
memcached是一个不错的分布式内存缓存服务器,因为一个好的缓存系统,能给web应用带来不小的性能
提升。
1.适合与web server安装在同一个server上,memcache可以在n个端口上开n个进程 ,如果在和web server在
同一个机器上的话,还能减少网络开销,配置简单,启动一个进程就可以了,免去了配置文件,我更关心的是memcache的分布式应用应该如何部署,带着这个问题在百度等搜索引擎上做了查找,za8PHP的一个MemcacheClient类最初的想法是perl里api在实现。
Redis:
不仅仅是缓存,也是一个数据库。内存数据库
DAO负责访问数据库:速度比较慢。经常访问的数据可以放到内存中。就是说可以取出来放到redis
放到redis中的数据如果更新了出现数据不一致如何解决:
1.如果对这种数据不是很严格,那么就可以使用定期更新的逻辑来做。
2.也可以在写入或者修改数据的同时写入缓存,那么效率会变低。更新缓存。
触发器监视数据,数据更新了那么redis缓存就会相对应的更新。
Memcached 与redis的区别:
好处:Mysql是适合进行海量数据存储的,通过的Memcachaed将热点数据加载到cache,加速访问速度。
坏处:但是随着业务数据量的不断增加,和访问量的持续成长,遇到了很多问题。
1.Mysql需要不断进行拆库拆表, Memcached也需要不断跟着扩容,那么扩容与维护占据了大量的时间。
2.Memcache与Mysql数据库数据一致性问题。
3.Memcache数据命中率低,或者down机,大量访问直接穿透到DB,Mysql无法支撑。
4.跨机房的Cache同步问题。
Redis好处:
1.Redis不仅支持简单的k/v。类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
2.Redis支持数据的备份,即Master-slave模式的数据备份。
3.Redis支持数据的持久化,可以将内存中的数据报出在磁盘中,重启的时候可以再次加载进行使用。
Redis:
是一个key-value 存储系统。数据库!可以基于内存可持久化的日志性、Key/value数据库。和memcached相似,支持存储的values类型,相对更多。包括字符串,链表,集合,有序集合与hash类型。
与memcached一样,为了保证效率,数据都是缓存在内存中,区别是redis会周期性的把更新的数据写入磁盘或者蟹盖操作写入追加的记录韦恩件,并且再次基础上实现了master-salve 主从同步。
是一个高性能的key-value数据库,他的出现,补偿了memcache这类key-value存储的不足,在部门场合可以对关系数据库起到很好的补充作用,而且提供了Python,ruby,PHP客户端。
支持主从同步,从主服务器向任意数量的从服务器上同步每次难过服务器可以关联其他从服务i期的主服务器,同步对读取操作的可扩展性与数据冗余有很大帮主。
Session让Redis管理:
如何将Session交给redis?
将tomcat和redis的jar包,放到tomcat的 lib 目录下,之后配置只Tomcat,在config文件中进行配置。默认下是注释的,配置redisSessionHandlerValue与RedisSessionManager。将redis服务器的端口,IP配置一下,即可找到Redis。将Session交给Redis.,
如何证明Redis管理Session?
在两个服务器中都连接Redis,配置完成之后,在第一个服务器Session中存取一个字符串,然后在第二个服务器中取出这个Session,如何取出了字符串,即可证明 Session被Redis管理起来。
并发:
采用集群部署的策略进行应对。首先对静态文件进行处理,性能比较高。三台服务器。
静态化已经预先将数据生成在页面上,无需访问数据库,这样访问静态文件就很快。而动态采用代理的服务器Nginx来做代理对后台的操作端做集群,这样可以提升效率,多台服务器做集群,如果有一台服务器danw了。让用户感觉不到,后台人员发现了可以及时处理,而系统又不会出现什么问题。服务器中的Session采用redis服务器来做管理。
服务器:
Apache服务器与Tomcat服务器。
如果客户端请求的静态页面,则只需要Apache服务器响应请求。
如果客户端请求动态页面,则是Tomcat服务器响应。因为jsp是服务器端解释代码的,这样整合可以较少Tom
Cat的服务开销、
Mysql:持久化存储,存放到磁盘中,为了提高效率,于是出现了缓存服,。现在用的最多的是memcached,与redis
如何连接别人的数据库:
1.配置文件修改:在Oracle文件中的tnsnames.ora文件中,增加对方的IP。前面不能有空格,名字不能相同,在连接的时候选择新的连接名,输入对方数据库帐号密码,即可。
2.在datebase中输入对方ip,再输入对方数据库帐号密码也可以连接对方数据库。
例如:192.168.0.42/orcl
页面静态化:FreeaMaker批量网页静态化:
在一次访问的内部循环不行,在外部循环,让每一次循环都是一次完整的http访问。
Apache配置文件也可以实现,自带页面静态化功能,当你 配置后第一次访问时就调用第一次产生的静态页面。
主从复制带来的问题:
就是业务层多双写多个Redis,避开Redis自带的主从复制,但是自己干同步,就会产生一致性问题,为了保证能够
主从复制,需要加入一系列的验证机制,而且这样的做法,会降低系统性能。
当从机从新连接时候,从机发送同步命令给主机,主机收到命令后,把最新的快照文件发送给从机,从机次哦从
快照文件中恢复,主机将Aof文件中该点之后的所以数据同步给从机,达到增量同步的效果。
主从复制好处:
1.稳定性得以提升,如果主服务发生故障,我们可以使用从服务器来提供服务。
2.在主从服务器上分开处理用户的请求,可以提升数据处理效率。
3.将主服务器上的数据赋值到从服务器上,保护数据免收意外的损失。
Mysql支持单向、异步复制,复制过程中一个服务器为主服务器,一个或者多个服务器作为从服务器。
Nginx作用:
一款非常优秀的HTTP服务软件,一款反向代理服务器,可以根据负载均衡算法进行均匀或者自定义的转发。
1.目录保护,防盗链、IP访问限制,下载限速等。
Nginx在web应用中的好处:
转发:
根据不同的请求转发到不同的节点。
缓存加速:
有很多的静态资源可以放感到反向代理服务器上,比如图片、脚本等,可以加速访问
安全:
所有入口都在反向代理服务器上,更容易集中控制。
动静分离。
常见的负载均衡算法有:
最少连接算法、轮转算法、响应速度算法、哈希算法。