分布式部署

为什么分布式一定要有redis,redis的一些优缺点

ε祈祈猫儿з 提交于 2019-11-30 10:24:50
2019-09-24 1、为什么使用redis 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发。当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件(如zookpeer等)代替,并不是非要使用redis。因此,这个问题主要从性能和并发两个角度去答。 回答:如下所示,分为两点 (一)性能 如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。 题外话:忽然想聊一下这个迅速响应的标准。其实根据交互效果的不同,这个响应时间没有固定标准。不过曾经有人这么告诉我:"在理想状态下,我们的页面跳转需要在瞬间解决,对于页内操作则需要在刹那间解决。另外,超过一弹指的耗时操作要有进度提示,并且可以随时中止或取消,这样才能给用户最好的体验。" 那么瞬间、刹那、一弹指具体是多少时间呢? 根据《摩诃僧祗律》记载 一刹那者为一念,二十念为一瞬,二十瞬为一弹指,二十弹指为一罗预,二十罗预为一须臾,一日一夜有三十须臾。 那么,经过周密的计算,一瞬间为0.36 秒,一刹那有 0.018 秒.一弹指长达 7.2 秒。 (二)并发 如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候

【10】MySQL:MyCAT 分布式架构

人盡茶涼 提交于 2019-11-30 10:20:15
写在前面的话 在学习的索引的时候,有提到,当数据表数据达到 800W 的时候,索引的性能就开始逐步下降。对于一个公司而言,主要业务数据表达到 1000W 都很容易。同时这张表一般都是业务常用的表,操作还比较频繁。所以为了提升用户体验,需要采用另外的方式对数据库进行优化,那就是分库分表。而 MyCAT 就是能够帮助我们管理分库分表的这样一个中间件。 MyCAT 环境基础架构准备 架构图 1: 架构图 2: 【1】搭建基础环境: 1. 在 db01 :192.168.100.111 上面安装数据库多实例: # 创建基础目录 mkdir -p /data/{data,logs,backup,conf}/mysql-33{07,08,09,10} mkdir -p /data/logs/mysql-33{07,08,09,10}/{bin-log,slow-log,error-log,relay-log} mkdir -p /data/packages/mysql mkdir -p /data/services # 添加用户 useradd -s /sbin/nologin mysql # 修改目录权限 chown -R mysql.mysql /data/logs/mysql-33* chown -R mysql.mysql /data/data/mysql-33* # 清理默认配置文件

solrcloud分布式集群部署&zookeeper集群安装

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 08:02:49
Solrcloud集群搭建 使用solrcloud 有几点需要注意的: 索引数据量比较大;配置是统一的(zookeeper 会保持配置信息的一致性) 如果索引数据量不大,并且需求变动比较多,field 要经常变动的可以考虑用multicore 的模式。 规划 虚拟机环境centos6.2 64位系统 三台1G内存的虚机 网卡模式是NAT(测试环境推荐使用NAT) 192.168.139.121 master 192.168.139.122 slave1 192.168.139.123 slave2 修改 /etc/hosts 文件加入上面的域名 修改主机名 vi /etc/sysconfig/network 切记关闭防火墙(否则zookeeper启动 zkServer.sh status查看状态会找不到各自的角色) 首先要搭建的是zookeeper集群 Zookeeper集群的机器个数推荐是奇数台,半数机器挂掉,服务是可以正常提供的 所有需要的软件首先上传到 /soft下 使用的zookeeper.3.4.5.tar.gz 稳定版 tar –zxvf zookeeper.3.4.5.tar.gz cd zookeeper.3.4.5/conf mv zoo_sample.cfg zoo.cfg //修改配置文件名 mkdir /soft/zookeeper-data /

多级缓存的分层架构

为君一笑 提交于 2019-11-30 06:57:39
多级缓存的分层架构 前言 在互联网高速发展的今天,缓存技术被广泛地应用。无论业内还是业外,只要是提到性能问题,大家都会脱口而出“用缓存解决”。 这种说法带有片面性,甚至是一知半解,但是作为专业人士的我们,需要对缓存有更深、更广的了解。 缓存技术存在于应用场景的方方面面。从浏览器请求,到反向代理服务器,从进程内缓存到分布式缓存。其中缓存策略,算法也是层出不穷,今天就带大家走进缓存。 正文 缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢? 假设一个网站,需要提高性能,缓存可以放在浏览器,可以放在反向代理服务器,还可以放在应用程序进程内,同时可以放在分布式缓存系统中。 从用户请求数据到数据返回,数据经过了浏览器,CDN,代理服务器,应用服务器,以及数据库各个环节。每个环节都可以运用缓存技术。 从浏览器/客户端开始请求数据,通过 HTTP 配合 CDN 获取数据的变更情况,到达代理服务器(Nginx)可以通过反向代理获取静态资源。 再往下来到应用服务器可以通过进程内(堆内)缓存,分布式缓存等递进的方式获取数据。如果以上所有缓存都没有命中数据,才会回源到数据库。 缓存的请求顺序是:用户请求 → HTTP 缓存 → CDN 缓存 → 代理服务器缓存 → 进程内缓存 → 分布式缓存 → 数据库。 看来在技术的架构每个环节都可以加入缓存

Sharding-JDBC 3.x 原理篇之基本介绍

徘徊边缘 提交于 2019-11-30 06:28:31
Sharding-JDBC 3.x 原理篇之基本介绍 简介 功能介绍 Sharding-JDBC Sharding-Proxy Sharding-Sidecar 混合架构 各大版本间的区别与变化 1.x 功能列表 2.x 功能清单 3.x 功能清单 规划线路图 相关文档及实例 简介 Sharding-JDBC是当当开源的数据库水平切分的中间件,其代表了客户端类的分库分表技术框架(这一点与MyCat不同,MyCat本质上是一种数据库代理)。Sharding-JDBC定位为轻量级数据库驱动,由客户端直连数据库,以jar包形式提供服务,未使用中间层,无需额外部署,无其他依赖,业务系统开发人员与数据库运维人员无需改变原有的开发与运维方式。因此Sharding-JDBC即为增强版的JDBC驱动,可以实现旧代码迁移零成本的目标。   目前社区较为活跃。目前已广泛应用于现各大互联网公司。通过社区得知,Sharding-JDBC的作者已去京东做全职的Sharding-JDBC开发,相信未来Sharding-JDBC社区的发展将会更好。 功能介绍 目前Sharding-JDBC共有3个主要模块,分别为Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar Sharding-JDBC 定位为轻量级Java框架,在Java的JDBC层提供的额外服务。

Fastdfs分布式文件系统的应用

别来无恙 提交于 2019-11-30 06:00:41
Fastdfs分布式文件系统的应用 26 MARCH 2016 on fastdfs , 分布式文件系统 我们在实际项目中常常遇到这样的应用场景,用户需要上传图片,小视频或者其它文档,这些文件的大小一般在10M以内。它们很多,而且对用户来说可能还很重要,而且可能还要经常被访问,被下载,如何妥善保存这些文件就是一个需要解决的问题。 解决这个问题需要两点:一个是文件冗余备份,保证用户的文件不会丢失,另一个是高可用性,也就是说当文件服务器出现故障的时候,可以立刻让备份服务器为用户提供服务,使用户感觉不到有什么异常。 那么我们不妨分析下有哪几种解决方案: 1.粗放型: 直接作为blob字段存数据库里,利用数据库的容灾备份和HA来保障文件安全。其实这种方案是最安全的,但是显然数据库不是用来做这个的,因为太占数据库空间。不过由于其安全性最高,笔者在之前某个项目中曾经被要求这么干,因为保存的是客户的合同文件。但是类似社交网络的图片文件是没必要这么做的。 2.简约型: 直接存文件系统。如果有多台应用服务器同时提供文件上传服务,那么就准备一台文件服务器,分别挂载到所有应用服务器的指定路径下,实现多台应用服务器的文件写入,同时还可以配置读取静态文件更高效的nginx或者lighttpd来负责文件的读取。这样的好处是配置简单,管理方便(要不怎么叫简约型),不过缺点也很大,就是实现不了高可用性

Hadoop生态圈

徘徊边缘 提交于 2019-11-30 05:49:40
一:基本构成:HDFS(Hadoop分布式文件系统);Mapreduce(分布式计算框架);HBASE(分布式列存数据库); Zookeeper(分布式协作服务); HIVE(数据仓库);Pig(ad-hoc脚本)等。 二:详细了解一下其特性: Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 具有可靠、高效、可伸缩的特点。 Hadoop的核心是YARN,HDFS和Mapreduce 下图是hadoop生态系统,集成spark生态圈。在未来一段时间内,hadoop将于spark共存,hadoop与spark 都能部署在yarn、mesos的资源管理系统之上 组件简介: 1.HDFS(Hadoop分布式文件系统) 源自于Google的GFS论文,发表于2003年10月,HDFS是GFS克隆版。 HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。 HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。 它提供了一次写入多次读取的机制,数据以块的形式,同时分布在集群不同物理机器上。 2.Mapreduce (分布式计算框架)

Redis:Redis的概念及各项功能

时光怂恿深爱的人放手 提交于 2019-11-30 05:45:11
Redis:简述Redis 的概念及各项功能 一、Redis简介 官方简介:Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。 同时支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等数据类型。 它还内建了复制,lua脚本,LRU,事务等功能,通过redis sentinel实现高可用,通过redis cluster实现了自动分片。以及事务,发布/订阅,自动故障转移等等。 综上所述,Redis提供了丰富的功能,这些功能都是干嘛用的?都解决了什么问题?什么情况下才会用到相应的功能?那么下面来粗略的解释下。 二、面临的需求(问题)及解决方案 需求(问题) :我们有一个提供热点新闻列表的api接口,api的消费者抱怨说每次请求都要2秒左右才能返回结果。随后我们就着手于如何提升一下api消费者感知的性能。 基于HTTP的缓存控制 很快最简单粗暴的第一个方案就出来了:为API的响应加上基于HTTP的缓存控制 cache-control:max-age=600 ,即让消费者可以缓存这个响应十分钟。如果api消费者如果有效的利用了响应中的缓存控制信息,则可以有效的改善其感知的性能(10分钟以内)。

分布式跟踪系统-cicada

好久不见. 提交于 2019-11-30 04:49:14
https://github.com/Yirendai/cicada/blob/master/cicada-docs/cicada_design.md 背景与目标 面对日趋复杂的分布式系统,如服务框架、消息中间件、缓存、数据层等,我司在业务性能瓶颈定位、故障排除等方面效率低下,生产环境中没有成熟的Trace工具,我们认为分布式跟踪系统适合且急需引入公司内部。 Trace系统需要能够透明的传递调用上下文,理解系统行为,理清后端调用关系,实现调用链跟踪,调用路径分析,帮助业务人员定位性能瓶颈,排查故障原因等;同时,需要对用户尽量透明,减少对业务代码的侵入性。 我们的Trace系统为解决以上问题而设计。 理论依据 目前可查的分布式跟踪系统,设计思想都源于Google的论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》。 现有Trace系统调研 调研期间,我们同时参考了其他互联网企业分布式跟踪系统的原理以及应用场景,例如阿里的Eagle eye,Twitter的Zipkin,京东的hydra以及点评的CAT。 Google Dapper && Alibaba Eagle eye 从实现来看,阿里的实现最接近Dapper论文中提到的方式。 Eagle eye架构如下图所示: 日志收集方式 记录本地文件

分布式集群

て烟熏妆下的殇ゞ 提交于 2019-11-30 04:25:30
集中式(centralization): 是指由一台主计算机组成中心节点,数据集中存储在这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统所有功能均有其集中处理。 集中式系统最大特点就是部署结构简单,集中式系统往往基于底层性能卓越的大型主机,因此无需考虑如何对服务进行多个节点的部署,也就不用考虑多个节点之间的分布式协作问题。 集群(cluster): 是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。 分布式(distributed): 是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。 阿里Dubbo/HSF 京东JSF 新浪微博Motan 当当网DubboX dubbo+zookeeper RPC cloud:eureke+zuul+feign RESTFul SOA:面向服务(WebService 微服务) Springcloud: restful风格 Eureka:服务注册发现 Ribbon:客户端RestTemplate负载均衡,默认轮询 Feign:面向接口(类似WebService),客户端负载均衡 Hystrix:服务器熔断、降级 Hystrixdashboard:服务监控(先要访问下被监控服务) Admin:监控 Zuul:网关 Config:配置中心 我们到一家小饭店