分布式部署

分布式可扩展存储系统 BaikalDB

邮差的信 提交于 2019-12-04 22:02:08
BaikalDB是一个分布式可扩展的存储系统,支持PB级结构化数据的随机实时读写。 提供MySQL接口,支持常用的SELECT,UPDATE,INSERT,DELETE语法。提供各种WHERE过滤、GROUP BY聚合,HAVING过滤,ORDER BY排序等功能,用户可以组合实现各种在线OLAP需求,具备秒级别的亿级数据扫描聚合能力。另外,为了满足各种业务的检索需求,该系统内置全文检索需求,满足大部分快速检索的业务场景。 在虚拟化部署方面,该系统采用share-nothing的架构,可部署在容器中,也实现了多租户隔离,有自定义用户的身份识别和权限访问控制等功能。 BaikalDB 的主要特性如下: 全自主化的容量管理,可以自动扩容和自动数据均衡,支持自动故障迁移,无单点,很容易实现云化,目前运行在Paas虚拟化平台之上。 面向查询优化,支持各种二级索引,包括全文索引,支持常用的 OLAP 需求,支持层级模型。 兼容 mysql 协议,对应用方提供 SQL 界面,支持高性能的Schema 加列。 基于 RocksDB 实现单机存储,基于Multi Raft 协议(我们使用braft库)保障副本数据一致性,基于brpc实现节点通讯交互。 支持多租户,meta 信息共享,数据存储完全隔离。 其中 BaikalStore 负责数据存储,用 region 组织,三个 Store 的

分布式搜索elasticsearch 安装

让人想犯罪 __ 提交于 2019-12-04 21:04:35
单机安装 安装我就以自己的项目为主我自己本身就是一下小项目从部署向下 安装步骤: 1. 安装jdk或者jre,然后设置好环境变更JAVA_HOME; 2. 下载elasticsearch,将之解压,到你项目文件下 我的ubuntu 12.4 创建的文件目录 /home/kuvplus/elasticsearch 你可以通过工具下载上传 到文件上然后解压 http://www.elasticsearch.org/download/ 我用命令切换到上面路径 wget http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.10.tar.gz ./bin/elasticsearch -f 查看状态 浏览器 http://ip/9200 若要使用前台方式运行,执行 elasticsearch console 若要使用后台方式运行,执行: elasticsearch start 若要停止正在运行的elasticsearch,执行 elasticsearch stop 若要安装elasticsearch到系统启动项,执行: elasticsearch install 若要从系统启动项里面移除elasticsearch,执行 elasticsearch remove 服务器安装 1.

分布式中几种服务注册与发现组件的原理与比较

ε祈祈猫儿з 提交于 2019-12-04 20:11:06
Eureka、Consul、Zookeeper的基本原理与比较。 前言 在云计算和容器化技术发展火热的当下,对于微服务架构,服务注册与发现组件是必不可少的。在传统的服务架构中,服务的规模处于运维人员的可控范围内。当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定。在微服务应用中,服务实例的数量和网络地址都是动态变化的,这对系统运维提出了巨大的挑战。因此,动态的服务注册与发现就显得尤为重要。 解决的问题 在一个分布式系统中,服务注册与发现组件主要解决两个问题:服务注册和服务发现。 服务注册:服务实例将自身服务信息注册到注册中心。这部分服务信息包括服务所在主机IP和提供服务的Port,以及暴露服务自身状态以及访问协议等信息。 服务发现:服务实例请求注册中心获取所依赖服务信息。服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。 除此之外,服务注册与发现需要关注监控服务实例运行状态、负载均衡等问题。 监控:微服务应用中,服务处于动态变化的情况,需要一定机制处理无效的服务实例。一般来讲,服务实例与注册中心在注册后通过心跳的方式维系联系,一旦心跳缺少,对应的服务实例会被注册中心剔除。 负载均衡:同一服务可能同时存在多个实例,需要正确处理对该服务的负载均衡。 CAP CAP原则,指的是在一个分布式系统中,Consistency(一致性)

2.监控系统-Nagios(难够死)

假装没事ソ 提交于 2019-12-04 18:39:43
什么是Nagios? Nagios是一款开源的网络及服务的监控工具,功能强大,灵活性强,需要注意的是,其服务端只能在linux上面安装。 Nagios可以进行分布式监控。 这里主要解释一下什么叫分布式?什么是集群?什么是分布式计算? 分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题。 集群:同一个业务部署在多台机器上,提高系统可用性。 所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。 打个比方,一个任务由5个子任务组成,暂且五个子任务都是独立的,异步的。一个子任务如果需要1个小时完成,那么我只需要将5个子任务分配到5个机器上,那么就是一小时完成了这个任务,这就是分布式,解决的是高并发。 那么集群,就是将一群机器集合起来,完成一个任务。如果一个任务的机器跨了,可以通过其他机器替代,讲究的是可用性。 在网上看到,现在讲的各种云计算,说白了就是集群和分布式的一些应用。 分布式是指将不同的业务分布在不同的地方。 而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。(也可以是分布式,比如你布置多个集群咯!) 举个例子:

[转帖]关于分布式

强颜欢笑 提交于 2019-12-04 16:25:12
https://www.cnblogs.com/wupeixuan/p/9302496.html 第一章主要讲的是分布式架构,主要包含以下内容: 集中式的特点 分布式的特点 分布式环境的各种问题 ACID 分布式事务 CAP和BASE理论 1 | 1 集中式与分布式的特点 集中式的特点:部署结构简单(因为基于底层性能卓越的大型主机,不需考虑对服务多个节点的部署,也就不用考虑多个节点之间分布式协调问题) 分布式的特点: 分布性 对等性 并发性 缺乏全局时钟 故障总是会发生 1 | 2 分布式环境的各种问题 分布式环境的各种问题: 通信异常:主要是因为网络本身的不可靠性 网络分区:当网络发生异常时,导致部分节点之间的网络延时不断增大,最终导致部分节点可以通信,而另一部分节点不能。 三态(成功、失败与超时) 节点故障:组成分布式系统的服务器节点出现宕机或“僵死”现象 1 | 3 ACID与分布式事务 事务是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元,狭义上的事务特指数据库事务。 事务有四个特性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),简称为事务的ACID特性。 原子性(Atomicity):必须是一个原子的操作序列单元,只允许出现两种状态之一(全部成功执行,全部不执行)。

【Zookeeper系列一】Zookeeper应用介绍与安装部署

心不动则不痛 提交于 2019-12-04 15:37:28
#0 系列目录# Zookeeper系列 【Zookeeper系列一】Zookeeper应用介绍与安装部署 【Zookeeper系列二】ZooKeeper典型应用场景实践 【Zookeeper系列三】ZooKeeper Java API使用 【Zookeeper系列四】ZooKeeper 分布式锁实现 【Zookeeper系列五】ZooKeeper 实时更新server列表 【Zookeeper系列六】Zookeeper 工作原理 Zookeeper源码 【Zookeeper源码一】Zookeeper 源码环境搭建 【Zookeeper源码二】Zookeeper 客户端创建连接过程分析 【Zookeeper源码三】Zookeeper 单机版服务器介绍 【Zookeeper源码四】Zookeeper 集群版服务器介绍 【Zookeeper源码五】Zookeeper 集群版建立连接过程 Zookeeper应用 基于ZooKeeper的分布式Session实现 #1 Zookeeper概述# ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是 用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务 。ZooKeeper本身可以 以Standalone模式安装运行 ,不过

Redis 分布式锁的正确实现方式(Java版)[转]

▼魔方 西西 提交于 2019-12-04 11:07:53
本文来源: https://www.cnblogs.com/linjiqin/p/8003838.html 前言 分布式锁一般有三种实现方式: 数据库乐观锁; 基于Redis的分布式锁; 基于ZooKeeper的分布式锁 本篇博客将介绍第二种方式,基于Redis实现分布式锁。 虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。 可靠性 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性 。在任意时刻,只有一个客户端能持有锁。 不会发生死锁 。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 具有容错性 。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。 解铃还须系铃人 。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。 代码实现 组件依赖 首先我们要通过Maven引入Jedis开源组件,在pom.xml文件加入下面的代码: < dependency> < groupId>redis.clientsgroupId> < artifactId>jedisartifactId> < version>2.9.0version> > 加锁代码 正确姿势 Talk is cheap, show me

mfs分布式文件系统,分布式存储,高可用(pacemaker+corosync+pcs),磁盘共享(iscsi),fence解决脑裂问题

痴心易碎 提交于 2019-12-04 11:05:15
一.MFS概述 MooseFS是一个分布式存储的框架,其具有如下特性: (1)通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs很麻烦!)。 (2)可以在线扩容,体系架构可伸缩性极强。(官方的case可以扩到70台了!) (3)部署简单。 (4)高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别,而绝对不会影响读或者写的性能,只会加速!) (5)可回收在指定时间内删除的文件(“回收站”提供的是系统级别的服务,不怕误操作了,提供类似oralce 的闪回等高级dbms的即时回滚特性!) (6)提供netapp,emc,ibm等商业存储的snapshot特性。(可以对整个文件甚至在正在写入的文件创建文件的快照) (7)google filesystem的一个c实现。 (8)提供web gui监控接口。 # 读写原理 1.MFS的读数据过程 (1) client当需要一个数据时,首先向master server发起查询请求; (2)管理服务器检索自己的数据,获取到数据所在的可用数据服务器位置ip|port|chunkid; (3)管理服务器将数据服务器的地址发送给客户端; (4)客户端向具体的数据服务器发起数据获取请求; (5)数据服务器将数据发送给客户端; 2.MFS的写数据过程 (1)当客户端有数据写需求时

Zookeeper实现简单的分布式RPC框架

╄→гoц情女王★ 提交于 2019-12-04 08:32:32
在分布式系统中,为了提供系统的可用性和稳定性一般都会将服务部署在多台服务器上,为了实现自动注册自动发现远程服务,通过ZK,和ProtocolBuffe 以及Nettyr实现一个简单的分布式RPC框架。 首先简单介绍一下Zookeeper和ProtocalBuffer Zookeeper 是由Apache Handoop的子项目发展而来。是知名的互联网公司Yahoo创建的。Zookeeper为分布式应用提供了高效且可靠的分布式协调服务。 ProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。 RPC 就是Remote Procedure Call Protocol 远程过程调用协议。 JAVA对象要能够在网络上传输都必须序列化,使用高效的序列化框架ProtocolBuffer实现序列化。 /** * 序列化工具 * @author zhangwei_david * @version $Id: SerializationUtil.java, v 0.1 2014年12月31日 下午5:41:35 zhangwei_david Exp $ */ public class SerializationUtil

测试分布式部署页面sso

折月煮酒 提交于 2019-12-04 08:13:22
测试分布式部署页面sso index.jsp ---------- <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <h1>这个是第1个页面</h1><br> <% if (session.getAttribute("ss") == null) { session.setAttribute("ss", "page1 session"); } out.print("session ss is " + session.getAttribute("ss").toString()+"<br/>