P2P架构

最近参与了一款P2P产品的开发工作,本文简要说明其架构。

1.Nginx+Keepalived

对tomcat集群做负载均衡的是Nginx+Keepalived。两台Nginx服务器共享一个虚拟IP(VIP),同一时间只有一台Nginx服务器占用VIP对外提供服务,若当前服务器不可用,虚拟IP则漂移至另一台服务器对外提供服务,保证了高可用。

keepalived介绍可参考:http://magicwt.com/2013/06/30/keepalived%E4%BB%8B%E7%BB%8D/

2.tomcat集群

nginx作为tomcat集群的负载均衡器,会对tomcat节点返回情况进行异常判断,如果返回结果不正常,则重新请求另一个节点,并自动剔除返回异常的主机。

3.MySQL一主多从、读写分离

一个Master,多个Slave,保证数据库高可用。主从的原理就是Master不断地写二进制日志,Slave去读取日志,按照里面的SQL记录去执行。从库之间不会进行通信。

读写分析的实现可以有几个层面:

1)应用层
通过spring管理datasource的route,由aop或程序控制读写数据源;

2)中间件
中间件维护主从数据关系,对应用层提供统一访问接口.完全解除程序耦合,对程序而言是透明的;

我们采用的是第2)种方案。

主从配置,可参考:http://www.linuxidc.com/Linux/2014-10/108435.htm

读写分离,在主库上写,在从库上读。主库和从库之间的同步有延迟,可能出现数据不一致的问题,比如向主库insert一条记录,很短的时间间隔后,从从库中查询不到。

参考:http://www.linuxidc.com/Linux/2014-05/101450.htm

4.LVS+SSDB

NoSQL数据库使用的是SSDB,采用的是双主策略。SSDB 的主从同步策略非常简单, 就是把主(Master)上的所有写操作(Binlogs), 在从(Slave)上再执行一遍. MySQL 的主从同步也是一样. 而多主可以理解为互为主从。

lvs起负载均衡的作用,比如set请求负载均衡到ssdb1上,因为是双主(可以理解为互为主从),所以ssdb2会同步(把在ssdb1的写操作再执行一遍);因为两个ssdb的数据相同,所以get请求负载到哪个上面都是一样的。

1)主从和多主同步原理:http://www.ideawu.net/blog/archives/849.html
2)SSDB双主或多主的配置 http://www.ideawu.net/blog/archives/770.html

5.RabbitMQ集群

http://www.cnblogs.com/flat_peach/archive/2013/04/07/3004008.html

6.Dubbo+ZooKeeper拆分服务

参考 http://blog.csdn.net/u012006689/article/details/51068812

7.监控平台Nagios

你可能感兴趣的:(P2P架构)