您的位置:主页 > 建站新闻 > 建站知识 >

太原网站系统分布式架构设计

日期:2017/09/22     阅读:     来源:未知
下图是一个非常全面的架构蓝图,针对不同的应用系统需要的模块各有不同。此架构方案主要包括以下几个方面的设计:数据存储和读取,基础服务,应用层(APP/业务/Proxy),日志监控等,下面对这些主要的问题提供具体的各项针对性技术方案。 
 
 
 
 
数据的存储和读取 
 
分布式系统应该根据应用对数据不同的一致性、可用性等要求和数据的不同特性,采用不同的数据存储和读取方案,主要有以下几种可选方案: 
 
1) 内存型数据库。内存型的数据库,以高并发高性能为目标,在事务性方面没那么严格,
 
适合进行海量数据的存储和读取。例如开源nosql数据库mongodb、redis等。 2) 关系型数据库。关系型数据库在满足并发性能的同时,也需要满足事务性,可通过
 
读写分离,分库分表来应对高并发大数据量的情况。例如Oracle,Mysql等。 
 
3) 分布式数据库。 对于数据的高并发的访问,传统的关系型数据库提供读写分离的方案,
 
但是带来的确实数据的一致性问题提供的数据切分的方案;对于越来越多的海量数据,传统的数据库采用的是分库分表,实现起来比较复杂,后期要不断的进行迁移维护;对于高可用和伸缩方面,传统数据采用的是主备、主从、多主的方案,但是本身扩展性比较差,增加节点和宕机需要进行数据的迁移。对于以上提出的这些问题,分布式数据库HBase有一套完善的解决方案,适用于高并发海量数据存取的要求。
 
基础服务 
 
基础服务主要是指数据层之上的数据路由,Cache,搜索等服务。 
 
1) 路由Router。对于数据库切分方案中的分库分表问题,需要解决在请求对应的数据时
 
定位需要访问的位置,可根据一致性Hash,维护路由表至内存数据库等方案解决。 2) Cache。对于高并发的系统来讲,使用Cache可以减轻对后端系统的压力,所有Cache
 
可承担大部分热数据的读操作。当前用的比较多的是redis和memcache,redis比memcache有丰富的数据操作的API,redis对数据进行了持久化,而memcache没有这个功能,因此memcache更加适合在关系型数据库之上的数据的缓存。 
 
3) 搜索。搜索可以支持应用系统的按照关键词的检索,搜索提示,搜索排序等功能。开源
 
开源的企业级搜索引擎主要有lucene, sphinx,选择搜索引擎主要考虑以下三个方面: a) 搜索引擎是否支持分布式的索引和搜索,来应对海量的数据,支持读写分离,提高
 
可用性 b) 索引的实时性 c) 搜索引擎的性能 
 
Solr是基于Lucene开发的高性能的全文搜索服务器,满足以上三个方面的考虑,而且目前在企业中应用非常广泛
 
应用层 
 
应用层主要包括面向用户的应用,网站、APP等,还包括相关的业务处理的运算等。 1) 负载均衡-反向代理。一个大型的平台包括很多个业务域,不同的业务域有不同的集群,
 
可以用DNS做域名解析的分发或轮询,DNS方式实现简单。但是因存在cache而缺乏灵活性;一般基于商用的硬件F5、NetScaler或者开源的软负载lvs在做分发,当然会采用做冗余(比如lvs+keepalived)的考虑,采取主备方式。Nginx是基于事件驱动的、异步非阻塞的架构、支持多进程的高并发的负载均衡器/反向代理软件,可用作反向代理的工具。