大型分布式网站架构设计与实践2

第2章 分布式系统基础设施

1、搭建分布式的基础设施:

1)分布式协作及配置管理系统---zookeeper

2)分布式缓存系统

3)持久化存储

4)分布式消息系统

5)搜索引擎

6)CDN系统

7)负载均衡系统

8)运维自动化系统

9)实时计算机系统

10)离线计算系统

11)分布式文件系统

12)日志收集系统

13)监控系统

14)数据仓库

2、NoSql提供了更高的查询效率及吞吐,能方便扩展,存储海量数据,自动进行数据的复制和备份

2.1 分布式缓存

2.1.1 memcache简介及安装

1、memcache使用key-value形式存储和访问数据,在内存中维护一张巨大的HashTable

2、内存不够时,memcache使用LRU算法,淘汰不常访问的数据,来存储新的数据

3、对象----序列化----二进制数据---缓存服务器中,获取时,进行反序列化。

4、memcache的安装

1)安装libevent

wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz

tar -zxvf libevent-2.1.11-stable.tar.gz

./configure

make

sudo make install

2)下载memcache安装

wget https://memcached.org/files/memcached-1.5.22.tar.gz

tar -zxvf memcached-1.5.22.tar.gz

./configure

make

sudo make install

3)启动与关闭memcache

2.1.2 memcache API 与分布式

1、memcache客户端与服务端通过构建在TCP协议之上的memcache协议来进行通信,协议支持两各数据的传递

1)文本行

2)非结构化数据

2、memcache的分布式是由访问它的客户端来实现的,一种比较简单的实现方式是根据缓存的Key来进行Hash-----consistent hash

2.1.3 分布式session

1、在一个分布式集群中,传统网站规避分布式环境的session操作,是将一部分cookie中

2、系统可靠性要求较高的用户,session的存储方法:

1)存储到DB中,但影响吞吐

2)放在缓存集群中,但并发量大

3、将session以sessionid为key,保存到后端的缓存集群中,使得不管请求如何分配,即便是webserver宕机,也不会影响其他webserver通过sessionid从cache server中获得session,这样即实现了集群间的session同步,又提高了webserver的容错性

4、memcached-session-manager是一个开源的高可用的tomcat session共享解决方案,支持sticky模式和Non-sticky模式。

2.2 持久化存储

常见的三种存储方式,包括关系型数据库 Mysql、bigtable概念、Hbase、Key-Value类型的Redis

2.2.1 Mysql扩展

1、业务拆分

2、复制策略:

1)master-slaves复制架构:构建Mysql集群,Slave从master获取binary log进行复制操作,读由Slave分担

2)dual-master架构

3、分表与分库:

1)分表:用户id是最常用的分表字段(用户ID取模),解决单表数据量过大带来的查询效率下降问题

2)分库:同样也是取模的方式,提高并发处理能力

2.2.2 HBase

1、HBase是以Google BigTable为原型,设计实现了高可靠,高可扩展性、实时读写的列存储数据库。

2、HBase集群中通常包含两种角色,HMaster和HRegionServer。

3、HBase的安装

2.2.3 Redis

1、Redis安装

2.3 消息系统

1、开源的消息系统:ActiveMq、Kafka、RabbitMQ、memcacheQ

2.3.1 ActiveMQ&JMS

1、JMS是一组JAVA应用程序接口,提供消息的创建、发送、接收、读取等一系列服务

2、安装ActiveMQ

3、ActiveMQ集群部署

Master-Slave架构

2.4 垂直化搜索引擎

垂直化搜索引擎,主要针对企业内部的自有数据的检索,它既能满足用户对于全文检索、模糊匹配的需求,解决数据Like查询效率低下的问题,又能够解决分布式环境下,由于采用分库表或者使用NoSql数据库,导致无法进行多表关联或者进行复杂查询的问题

2.4.1 Lucene简介

1、Lucene是Apache旗下的一款高性能、可伸缩的开源的信息检索库

2、索引的构建过程:通过指定的数据格式,将Lucene的Document传递给分词器Analyzer进行分词,经过分词器分词之后,通过索引写入工具indexwriter将索引写入到指定的目录

3、索引的查询过程:首先构建查询的Query,通过IndexSearcher进行查询,得到命中的TopDocs,然后通过TopDocs的ScoreDocs方法,拿到ScoreDoc,通过ScoreDoc,得到对应的文档编号,IndexSearcher通过文档编号,使用IndexReader对指定目录下的索引内容进行读取,得到命中的文档后返回

2.4.2 Lucene的使用

1、创建索引

2、索引更新与删除

3、条件查询

4、结果排序

5、高亮

6、中文分词

7、索引优化

8、分布式扩展

2.4.3 Solr

1、Solr是一个基于Lucene、功能强大的搜索引擎工具,它对Lucene进行了扩展,提供一系列功能强大的HTTP操作接口,支持通过Data Schemea来定义字段、类型和设置文本分析,使得用户可以通过HTTP POST请求,向服务器提交Document,生成索引,以及进行索引的更新和删除操作。

1、Solr的配置

2、构建索引

3、条件查询

2.5 其他基础设施

除前面外,包括实时计算、离线计算、分布式文件系统、日志收集系统、监控系统、数据仓库、CDN系统、负载均衡系统、消息推送系统、自动化运维系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值