• 关于

    数据扩展怎么用

    的搜索结果

问题

请问大家如何设计多平台应用报错 

kun坤 2020-06-10 10:19:56 13 浏览量 回答数 1

问题

Java Web项目设计数据库时是否需要在表中加备用字段

蛮大人123 2019-12-01 19:52:08 1510 浏览量 回答数 1

问题

求助!请大神来帮我一下!

小小的菜鸟 2019-12-01 20:54:34 5204 浏览量 回答数 7

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

回答

Re这样的配置应该怎么升级? 1核 1G 2M足以,我的一个wp博客 每天也在2000-8000IP左右,另外还装了java和mono 主要看你怎么优化了,如果静态文件 等等多,可以使用varnish做前端,如果动态PHP多,可以使用varnish做php缓存,如果操作数据库量大,可以用memcached 用所谓的面板,灵活性和扩展性太差了,其实在linux架构方面想用好还是学着自己去编译

买醉 2019-12-02 02:42:29 0 浏览量 回答数 0

回答

这个要具体业务具体分析了。 如果把品牌名设置成 ObjectId 的话,就说明有另外一个 collection 存放着品牌。这么做是典型的关系型数据库的方式,对于 mongodb 来说,每次要获得商品的品牌名,就要多一次读操作。如果设置成 String ,一次操作即可取出全部商品信息和品牌名,但修改品牌的时候却非常麻烦,如果在一次请求中还要获得品牌的一些信息,比如品牌所在的国家,那么还是要再做一次查询,扩展性不够好。如果设置成 Object 比如: { item:"", price:100, brand:{ name: "micorsoft", country: "US" } }这么做可以解决扩展性的问题,而且查询速度也很快,如果商品品牌信息不怎么更新的话,那么我建议这么做。虽然增加了数据冗余程度,但是提高了查询速度,这就是反范式。 如果品牌信息经常更新的话,那么用 ObjectId 还是好的,虽然多了一次查询,但是提高了可靠性。

蛮大人123 2019-12-02 01:49:08 0 浏览量 回答数 0

回答

回 1楼51干警网的帖子 请问下,怎么查找最新的挂载状态?用什么命令? ------------------------- 回 3楼51干警网的帖子 可能是我写错了,我想查看数据盘写入后的那个状态。 /etc/fstab 之前有重复的,现在没有处理之前,我都不敢操作下去了。 ------------------------- 回 5楼51干警网的帖子 今天删除好了。我原来的系统是7.X,用不了Wdcp。刚才更换了系统,数据盘挂载已经不对了,怎么操作?谢谢 ------------------------- 回 7楼51干警网的帖子 你是说,现在我的系统和数据盘都是还原了对吧? ------------------------- 回 9楼51干警网的帖子 现在我只做了两个分区,一个主的,一个是扩展的(虽然不知道有什么用,留一点)。那么,你说回归到初始化,我原来分好,格式好的分区,是不是重新挂载就可以了? 我看了很多帖子说,在云服务器自建的数据库有时候会坏,就你做网站的经验,是不是要用到RDS? ------------------------- 回 11楼51干警网的帖子 我也想做个论坛,哈哈。 回到正题:我把原来的分区删除了,系统换成CentOS6.5,在再次分区主区时,提示说分区“1”无效?该怎么处理。 ------------------------- 回 13楼51干警网的帖子 另外买的数据盘,有必要做扩展分区不?还是直接分区成一个主区就可以了? ------------------------- 回 16楼鬼才神兵的帖子 多谢,昨天我重新初始化弄好的。 问下两个问题: 1、平时创建扩展分区是用来做什么的? 2、我想用服务器来做多个网站,那么我“mount -a”挂载的数据盘,是不是要改挂载目录?如果要创建,怎么操作?(我用的是WdCP) ------------------------- 回 13楼51干警网的帖子 我今天弄了WdCP,原来挂载的数据盘是“mount -a”完成的,用不用改? 如果改,要怎么操作? ------------------------- 回 19楼51干警网的帖子 我就是按照官方教程来弄的,里面就只有挂载新分区“mount -a”。后来我才安装WdCP,我又看到其他的教程说做网站要把数据盘挂载在“www"目录下,还有一说是”home",所以想问一下,之前那样挂载的数据盘有没有影响? ------------------------- 回 21楼51干警网的帖子 我不会改,看来只能提交工单了。 ------------------------- 回 23楼(51干警网) 的帖子 我按照官方教程挂载了数据盘,然后在服务器里面安装了wdcp。 我的问题是:数据盘挂载在mnt目录,而wdcp创建站点根目录是www,是不是要改? ------------------------- 回 25楼(51干警网) 的帖子 原来如此,现在我已经修改好了。还要看昨天安装了的wdcp,FTP帐户会不会正常了。

魔君 2019-12-02 02:23:28 0 浏览量 回答数 0

回答

1.数据库还是原来的数据库,只是oauth2对应用增加了几个表记录应用的信息权限等。2.url请求也是一般的 Servlet请求而已,不同只是加了个oauth2的access_token 参数作为认证。3.和oauth2结合也不复杂,弄清楚oauth2的原理流程再去实现就好。水平有限,只能回答到这儿了~######回复 @seau : 看你自己的需求吧######回复 @oscfox : 用oauth-server的话是否要有自己的资源api?只有用户注册信息行不行?######回复 @seau : 1.数据库设计与原有平台为主,数据库方面开发平台只需要在原有数据库增加一些表就好,具体怎么存储看具体情况了。2.url请求也是在原有平台的action上扩展就好,只是需要增加一个oauth2的accesstoken 认证而已。3.如果开发平台提供数据提交的接口,第三方产生的数据当然可以存入原有平台的数据库######水平有限,理解不到这. 数据是字符存入的么?设计一个容器应对url请求?第三方应用产生的数据能不能存入资源所有者数据库?######当然,也可以搭建一个独立的应用作为开发平台,设计原平台数据就用同一个数据库即可,只是这样要写多点代码而已

爱吃鱼的程序员 2020-06-01 10:27:14 0 浏览量 回答数 0

问题

云数据库RDS MySQL版【问答合集】

马铭芳 2019-12-01 20:19:32 41532 浏览量 回答数 15

回答

hello, 最近正在做这方面的工作,就是统计websocket的在线连接数量,一开始也是统计在redis的,后来采用日志对接storm实时处理去做了。因为一旦在多进程多机器的集群模式下,不管是数据库还是redis缓存,复杂度就很高了,某一个进程崩溃了,怎么清空他对应的连接呢?用最小的成本去解决这个问题就是在连接创建跟关闭的时候在日志里面打印出自己的连接数。storm平台实时收集日志就可以计算出总的在线连接了,并且可以动态扩展伸缩进程和集群数量,这是数据库跟缓存不好实现的地方。

爵霸 2019-12-02 02:01:02 0 浏览量 回答数 0

问题

Mongodb能够支持复杂项目的数据库吗?

蛮大人123 2019-12-01 19:59:43 1329 浏览量 回答数 1

回答

  JFinalModel提供了put方法,当初是为了方便开发者在前端显示非数据库字段数据,从数据库查到List<YourModel>以后,可以先在后端循环对每个modelput点需要在前端显示的数据。   如果考虑再加个put方法,那么肯定不能叫putAttrs,因为attrs是属性,是与数据库字段对应的,只能考虑加个putMap或者什么别的有不需要和table对应的put(String,Object)方法啊,不过你是想一次设置多个吧,这个还真没有。你可以自己继承扩展一下 这种需求如果多的话,还是在框架层来封装吧,自己再整一层只是为了做一些小的修改,代码不太好看    CPI.getAttrs(Modelmodel)可以得到Mapattrs,然后attrs.putAll(map)就可以了。JFinal目前的设计是为了尽可能避免开发者犯错,如果想打破规则也是可以的,用CPI就可以。   不过从API的一致性来说,既然有了 model.put(...)那么添加一个model.putMap(...)可以考虑 其实我不是太支持向model里面放非数据库字段,我觉得尽量去遵循语义,model就是一个table的映射。 一般有这样的需求我都用record.最后落实到入库肯定是用model。。这样的话把无关的字段放进去model没意义,如果是相当vo来使用的话,那么record可以满足的 引用来自“绝望的八皮”的答案 其实我不是太支持向model里面放非数据库字段,我觉得尽量去遵循语义,model就是一个table的映射。 一般有这样的需求我都用record. ar模式的一个含义是: 每一个数据库表对应创建一个类.类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的Field 我是比较坚持这个原则的。避免语义被异化。 当然同时我也不是很学术的,觉得怎么好用就怎么来吧。

爱吃鱼的程序员 2020-06-22 17:38:52 0 浏览量 回答数 0

问题

ECS自建数据库CPU过高,切换到RDS能解决问题吗?

williamoj 2019-12-01 20:22:06 1505 浏览量 回答数 2

问题

阿里云centos下挂载和扩展多块硬盘解决方案

sniucom 2019-12-01 21:13:32 40533 浏览量 回答数 15

问题

论坛回复贴中,”楼“的概念在数据库表中如何设计?

a123456678 2019-12-01 20:13:56 876 浏览量 回答数 1

回答

你貌似是做那种类似新闻的文章吧,这个问题应该没必要这么纠结,我推荐你使用CKEDITOR吧,不熟悉编辑器的话,这个还可以,而且dedecms那个后台添加文章的内容的时候也是用的这个编辑器(他就支持你图文并茂的效果,好像还有视频之类的,这个是官网:http://ckeditor.com/,你去看下吧) 简单说下怎么用吧,先下载到解压放到你的站点中去。 一、引用CKEDITOR的JS文件 <script type="text/javascript" src="ckeditor/ckeditor.js"></script> 注意:1.src的路径。 2.不要写成<script type="text/javascript" src="ckeditor/ckeditor.js />样式,在现有的3.0.1版本中会出现CKEDITOR未定义的脚本错误提示,致使不能生成编辑器。 二、替换TEXTAREA标签: <textarea rows="30" cols="50" name="editor01">请输入.</textarea> <script type="text/javascript">CKEDITOR.replace('editor01');</script> 正常情况下,你应该之前只用了个textarea。注意:要在textarea后面加入javascript.如果要在HEAD区写javasript,那么采用如下代码: <script type="text/javascript"> window.onload = function(){ CKEDITOR.replace( 'editor01' ); }; </script> 好了到此一个默认的CKEDITOR就配置完毕了,可以去页面看看它的模样了,至于其他的扩展属性配置我就不说多了,你自己去官网看手册了个性化配置。三、下面就是要说下怎么保存数据了 其实跟你正常使用textarea的时候是一样的直接使用:$_POST['editor01'],这里的editor0也就是你那个textarea的名字。 <?php //接值,当然你可以用htmlspecialchars转下也行 $editor01 = $_POST['editor01']; //插入数据到数据库 $sql = "INSERT INTO 表 (字段1,字段2,内容字段)VALUES('字段一的值','字段2的值','{$editor01}')"; mysql_query($sql); ?> 然后你在前台读取数据的时候把读出来的数组用print_r()打印出来不就知道数据结构了。估计你纠结的是不是要把那些图片用二进制什么的存起来吧?一般也没比较去把图片、视频转换成二进制的了再存到数据库去,我们只需要知道它们存放的路径就行了,而这个编辑器提交后的post数据就是只存它们的路径。 不知道你明白没有?希望采纳。

小旋风柴进 2019-12-02 02:03:53 0 浏览量 回答数 0

问题

RDS使用前的一些疑问,求帮助

一尘 2019-12-01 21:46:28 8733 浏览量 回答数 6

问题

阿里云上安装php5.5.14mysql的问题

heyewei 2019-12-01 22:05:53 9134 浏览量 回答数 5

问题

阿里云虚拟主机【问答合集】

马铭芳 2019-12-01 20:19:31 7842 浏览量 回答数 1

回答

Java架构师,首先要是一个高级java攻城狮,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池……    Java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是”直接内存”的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。    熟练使用各种数据结构和算法,数组、哈希、链表、排序树…,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题。    熟练使用linux操作系统,必备,没什么好说的 。    熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化; 熟悉http协议,尤其是http头,我发现好多工作五年以上的都弄不清session和cookie的生命周期以及它们之间的关联。    系统集群、负载均衡、反向代理、动静分离,网站静态化 。    分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景 。    分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash 。    工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。    数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。    还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。   以上纯粹是常用的技术,还有很多自己慢慢去摸索吧;因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。    想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。    架构师要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。    架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。Java架构师学习路线图如:https://yq.aliyun.com/articles/225941?spm=5176.8091938.0.0.qyp0tC

zwt9000 2019-12-02 00:25:32 0 浏览量 回答数 0

回答

引用来自“Inthend”的答案 最后,我参照mybatis,写了公司自己的mybatis。底层还是spring/dbutil,外层套个dao接口+xml,自己定制,感觉比mybatis灵活很多。 我最后的处理方式。 ###### dao 个球 数据操作只有流程 ,没有object. ######分层的目的是为了使软件后期更好维护和扩展,dao层也一样!######你好像没有正面回答我的问题。统一dao也可以扩展,没有不让自己搞。维护?就我这个架构拼接一堆的sql好维护?######可以试试mybatis,它是把sql语句写到xml文件中的######嗯,我有看。主要是公司用的就是spring jdbc,我没有能力改变那么多,让大家都用mybatis,我只是想让现有的问题更简化一些。###### 活生生的看着你们把一个简单的东西弄成如此复杂。 自从 “复用”被滥用以后,我再也无法直视比代码还多,比代码还难,比代码还复杂的各路配置文件,包含但不限于 XML,propertise ######sql不可能是那样的,动态查询怎么弄?######想要提取数据,直接把sql写死,然后使用预编译语句。简单干脆######为什么要这么说?sql只是java和数据库沟通的桥梁而已,在java里的stringbuilder 拼接的那一大堆,你不觉得繁琐吗?######String  struts2  mybatis,dao层用的是公共的!可以封装为一个Dao,service也可以封装业BaseService,能节省好多代码! ######回复 @Inthend : service基类可以和Dao基类一样。写成泛型,没有个service实现接口时可以继承这个基类嘛######service怎么封装?你不是transaction吗######非常赞同你的说法,dao封装一个基础类,service封装个基础类。######最后,我参照mybatis,写了公司自己的mybatis。底层还是spring/dbutil,外层套个dao接口+xml,自己定制,感觉比mybatis灵活很多。

爱吃鱼的程序员 2020-06-04 16:26:44 0 浏览量 回答数 0

回答

不明觉厉啊######只是针对了mysql的插件开发解决,标题挂的是数据库会不会有点大了######请教下,这个思路能不能推广应用到其他几个主流数据库?如果可以,这标题就不仅不大,而且还很准确。######呵呵,不好意思,我正在写自己的数据库,所以你这个文我很喜欢。######好的,我抽时间学习研究下你这个。正好我很可能会用上。谢谢。######目前来说,很多数据库都很开放,都提供扩展开发,例如mysql开发一个插件,甚至数据库存储引擎都并非难事。######回复 @wharf_zhang : 我对oracle了解不多,oracle 官方应该有example 例子,下载下来改改,编译一下,就行了######oracle能弄个博文介绍下吗?商业的和开源的数据库,我个人感觉血统关系很弱,如果也能成立,则更能证明你这个思路具有普适性。######如果一个插件就搞定了 Mysql 的Cluster、 Oracle的OGG怎么活。######只能说你没有异构平台的通信需求,对实时性要求不高。######这个与Mysql 的Cluster、 Oracle的OGG没半毛关系######应用场景不同

kun坤 2020-06-09 09:27:52 0 浏览量 回答数 0

回答

硬盘读写速度现在怎么都达不到千兆, ssd读也达不到。(特殊设备除外,貌似看到新闻说有实验室的产品读写速度可以过G) 不过可以采取,写入缓冲的方式,数据先保存在内存,再写入到硬盘,不过缺点怕掉电。 读的话,采取分布式的读,可以达到很高的吞吐量。 网络传输的话,问题在于怎么保证传输稳定和不出错######这对内存的要求很高啊,而且还不能耽误其他程序对内存的使用,这个内存我觉得应该很大吧###### 引用来自“十一文”的答案 硬盘读写速度现在怎么都达不到千兆, ssd读也达不到。(特殊设备除外,貌似看到新闻说有实验室的产品读写速度可以过G) 不过可以采取,写入缓冲的方式,数据先保存在内存,再写入到硬盘,不过缺点怕掉电。 读的话,采取分布式的读,可以达到很高的吞吐量。 网络传输的话,问题在于怎么保证传输稳定和不出错 这么说来, 在顺序存取方面 , 网络传输速度相对与硬盘 io 速度还是有优势的,不知道这么理解是否成立。 因为机放内部设备间千兆网卡很常见,传输速度相当快,并且成本相对硬盘少许多。 ######看贴不跟帖,帖子要沉了。需要顶。 无论对错。发表点个人观点也好。不能让它沉。 ###### "千兆网卡很常见", 這裡 “ 千兆” 是指1000M bits, 大概也就100M Bytes。 Intel SSD 520 Sequential Read 已经可高达550M Bytes per second, 顺序写可高达275M Bytes per second.######回复 @十一文 : 现在的HBA卡4G的已经很通用了,好像12G的都出来了,一般服务器都有好几个接口的,再来个负载均很啥的,网络传输不是问题######汗 查了哈 还真是这样。擦我out了!######网络允许帮定双网卡。所以,网络传输可以更快点,相对来说,速度提升技术性难度小点。 磁盘阵列是否回更好? 光线通讯用的网卡是否会更快点。 ###### 顺便提点应用。 是这样的, 排序在信息处理方面很常见。 无论用什么算法。都是在一个相对平等的环境中。 现实中应用,比如1g内容的排序和1T内容排序难点还是数据交换上。 1g可以全部加载进内存玩。1T就要涉及到信息交换了。如果一个系统界面,把存储信息部分扩展到近乎无限空间大小。 就好比内存数据交换比磁盘数据交换要快许多。 比如1T大小数据做排序。 只要一个设备顺序读取数据,按照开头部分把数据通过网络分发给N 台机器,处理除了开头部分数据,后面的数据排序。这样就可以N多设备协同工作。效率达到 1+1 > 2 的目的。 否则如果是1台设备需要 加载数据,排序, 临时存储, 加载另外数据,处理,临时存储,加载.... 汇总分结果,获得总结果。 1台设备这么处理,做了很多重复劳动。如果网络够快 多台设备 避免了重复加载。 达到 1+1>2######回复 @十一文 : 差不多的意思。######hadoop是把数据分成分成多个部分,每部分各自处理结果,然后汇总处理。即把你的1t的数据分成n份,然后每份分发给不同机器处理。然后汇总结果。不知道适用你的场景不?######貌似这中数据分析,现在流行用hadoop。楼主可以调研哈######这么说不好理解。形象一点说一下:假设有1000个数据样本,每个样本里有1T条数据内容。 一知每个样本内数据条目重复率为0.001%.目的,找出这1000个样本内,每个样本中重复的样本。并统计所有样本中重复的次数。 这个如果算复杂运算,不如说是大数据处理。 假设 每个设备 一次能加载1G条数据。######硬盘技术感觉好多年都在原地踏步没有质的飞跃啊###### @johnzhang68 毕竟转速有影响######磁性硬盘在容量方面还是有明显的飞跃。速度方面提高得慢一些。######或许未来,存储虚拟化是条路子。  数据处理和数据交互关系密切。 以数据处理为目的,建立多系统群集方式在处理上或许会比高计算系统群集更有优势。 ######又没落了。顶起 ######没有试过,关注一下######再看了哈貌似你真的很需要hadoop

kun坤 2020-06-07 22:18:40 0 浏览量 回答数 0

回答

面试官心理分析 如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ 的那些缺点怎么来解决了。 要是你傻乎乎的就干用了一个 MQ,各种问题从来没考虑过,那你就杯具了,面试官对你的感觉就是,只会简单使用一些技术,没任何思考,马上对你的印象就不太好了。这样的同学招进来要是做个 20k 薪资以内的普通小弟还凑合,要是做薪资 20k+ 的高工,那就惨了,让你设计个系统,里面肯定一堆坑,出了事故公司受损失,团队一起背锅。 面试题剖析 这个问题这么问是很好的,因为不能问你 Kafka 的高可用性怎么保证?ActiveMQ 的高可用性怎么保证?一个面试官要是这么问就显得很没水平,人家可能用的就是 RabbitMQ,没用过 Kafka,你上来问人家 Kafka 干什么?这不是摆明了刁难人么。 所以有水平的面试官,问的是 MQ 的高可用性怎么保证?这样就是你用过哪个 MQ,你就说说你对那个 MQ 的高可用性的理解。 RabbitMQ 的高可用性 RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以 RabbitMQ 为例子讲解第一种 MQ 的高可用性怎么实现。 RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。 单机模式 单机模式,就是 Demo 级别的,一般就是你本地启动了玩玩儿的,没人生产用单机模式。 普通集群模式(无高可用性) 普通集群模式,意思就是在多台机器上启动多个 RabbitMQ 实例,每个机器启动一个。你创建的 queue,只会放在一个 RabbitMQ 实例上,但是每个实例都同步 queue 的元数据(元数据可以认为是 queue 的一些配置信息,通过元数据,可以找到 queue 所在实例)。你消费的时候,实际上如果连接到了另外一个实例,那么那个实例会从 queue 所在实例上拉取数据过来。 这种方式确实很麻烦,也不怎么好,没做到所谓的分布式,就是个普通集群。因为这导致你要么消费者每次随机连接一个实例然后拉取数据,要么固定连接那个 queue 所在实例消费数据,前者有数据拉取的开销,后者导致单实例性能瓶颈。 而且如果那个放 queue 的实例宕机了,会导致接下来其他实例就无法从那个实例拉取,如果你开启了消息持久化,让 RabbitMQ 落地存储消息的话,消息不一定会丢,得等这个实例恢复了,然后才可以继续从这个 queue 拉取数据。 所以这个事儿就比较尴尬了,这就没有什么所谓的高可用性,这方案主要是提高吞吐量的,就是说让集群中多个节点来服务某个 queue 的读写操作。 镜像集群模式(高可用性) 这种模式,才是所谓的 RabbitMQ 的高可用模式。跟普通集群模式不一样的是,在镜像集群模式下,你创建的 queue,无论元数据还是 queue 里的消息都会存在于多个实例上,就是说,每个 RabbitMQ 节点都有这个 queue 的一个完整镜像,包含 queue 的全部数据的意思。然后每次你写消息到 queue 的时候,都会自动把消息同步到多个实例的 queue 上。 那么如何开启这个镜像集群模式呢?其实很简单,RabbitMQ 有很好的管理控制台,就是在后台新增一个策略,这个策略是镜像集群模式的策略,指定的时候是可以要求数据同步到所有节点的,也可以要求同步到指定数量的节点,再次创建 queue 的时候,应用这个策略,就会自动将数据同步到其他的节点上去了。 这样的话,好处在于,你任何一个机器宕机了,没事儿,其它机器(节点)还包含了这个 queue 的完整数据,别的 consumer 都可以到其它节点上去消费数据。坏处在于,第一,这个性能开销也太大了吧,消息需要同步到所有机器上,导致网络带宽压力和消耗很重!第二,这么玩儿,不是分布式的,就没有扩展性可言了,如果某个 queue 负载很重,你加机器,新增的机器也包含了这个 queue 的所有数据,并没有办法线性扩展你的 queue。你想,如果这个 queue 的数据量很大,大到这个机器上的容量无法容纳了,此时该怎么办呢? Kafka 的高可用性 Kafka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点;你创建一个 topic,这个 topic 可以划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个 partition 就放一部分数据。 这就是天然的分布式消息队列,就是说一个 topic 的数据,是分散放在多个机器上的,每个机器就放一部分数据。 实际上 RabbitMQ 之类的,并不是分布式消息队列,它就是传统的消息队列,只不过提供了一些集群、HA(High Availability, 高可用性) 的机制而已,因为无论怎么玩儿,RabbitMQ 一个 queue 的数据都是放在一个节点里的,镜像集群下,也是每个节点都放这个 queue 的完整数据。 Kafka 0.8 以前,是没有 HA 机制的,就是任何一个 broker 宕机了,那个 broker 上的 partition 就废了,没法写也没法读,没有什么高可用性可言。 比如说,我们假设创建了一个 topic,指定其 partition 数量是 3 个,分别在三台机器上。但是,如果第二台机器宕机了,会导致这个 topic 的 1/3 的数据就丢了,因此这个是做不到高可用的。 Kafka 0.8 以后,提供了 HA 机制,就是 replica(复制品) 副本机制。每个 partition 的数据都会同步到其它机器上,形成自己的多个 replica 副本。所有 replica 会选举一个 leader 出来,那么生产和消费都跟这个 leader 打交道,然后其他 replica 就是 follower。写的时候,leader 会负责把数据同步到所有 follower 上去,读的时候就直接读 leader 上的数据即可。只能读写 leader?很简单,要是你可以随意读写每个 follower,那么就要 care 数据一致性的问题,系统复杂度太高,很容易出问题。Kafka 会均匀地将一个 partition 的所有 replica 分布在不同的机器上,这样才可以提高容错性。 这么搞,就有所谓的高可用性了,因为如果某个 broker 宕机了,没事儿,那个 broker上面的 partition 在其他机器上都有副本的。如果这个宕机的 broker 上面有某个 partition 的 leader,那么此时会从 follower 中重新选举一个新的 leader 出来,大家继续读写那个新的 leader 即可。这就有所谓的高可用性了。 写数据的时候,生产者就写 leader,然后 leader 将数据落地写本地磁盘,接着其他 follower 自己主动从 leader 来 pull 数据。一旦所有 follower 同步好数据了,就会发送 ack 给 leader,leader 收到所有 follower 的 ack 之后,就会返回写成功的消息给生产者。(当然,这只是其中一种模式,还可以适当调整这个行为) 消费的时候,只会从 leader 去读,但是只有当一个消息已经被所有 follower 都同步成功返回 ack 的时候,这个消息才会被消费者读到。 看到这里,相信你大致明白了 Kafka 是如何保证高可用机制的了,对吧?不至于一无所知,现场还能给面试官画画图。要是遇上面试官确实是 Kafka 高手,深挖了问,那你只能说不好意思,太深入的你没研究过。

剑曼红尘 2020-04-17 09:31:13 0 浏览量 回答数 0

问题

【Java问答学堂】2期 如何保证消息队列的高可用?

剑曼红尘 2020-04-17 09:04:32 75 浏览量 回答数 2

问题

如何在win10上安装mysqlwww.6669988.coml332O489200数据库

1488530837846321 2020-10-09 18:34:11 0 浏览量 回答数 0

回答

Re【客户案例展示】博客园-不用再操心硬件资源的按需扩展 好像之前我看到过一篇文章啊,不知道怎么解决的! http://www.blogzhan.com/thread-111-1-1.html ------------------------- 回19楼cnblogs的帖子 就看了你发表的那篇文章,我对阿里云有点怀疑,因为我之前买过一台服务器(后来退款了),关闭远程连接的时候提示Connection closed by foreign host。我也不是很了解主机的事,官网也没给出合适的原因,所以我一直在观望状态! ------------------------- Re【客户案例展示】博客园-不用再操心硬件资源的按需扩展 就给了压力测试结果,没有说明Connection closed by foreign host.是什么原因 ------------------------- Re【客户案例展示】博客园-不用再操心硬件资源的按需扩展 ------------------------- Re【客户案例展示】博客园-不用再操心硬件资源的按需扩展 恩 ------------------------- 回31楼cnblogs的帖子 可能是这问题吧,我也没太仔细看,因为我用的wordpress程序测试,总是链接不上数据库,而且总体效果较年前试用差很多,所以决定先退了服务器再观察一段时间 ------------------------- 回34楼cnblogs的帖子 在观察一段时间吧,感觉阿里的客服还不够完善 ------------------------- Re【客户案例展示】博客园-不用再操心硬件资源的按需扩展 可能他们的技术客服也不善于沟通吧,不过态度确实不错,希望不要让站长失望,祝福他们! ------------------------- 回40楼cnblogs的帖子 程序员的沟通问题有待开发啊

禅道 2019-12-02 00:49:20 0 浏览量 回答数 0

问题

基础语言百问-Python

薯条酱 2019-12-01 20:12:27 56807 浏览量 回答数 30

问题

阿里云服务器 如何处理网站高并发流量问题?(含教程)

元芳啊 2019-12-01 21:54:35 1511 浏览量 回答数 1

问题

dubbo 的 spi 思想是什么?【Java问答学堂】50期

剑曼红尘 2020-07-07 09:48:29 25 浏览量 回答数 1

问题

greenplum扩容计算节点时出的一个问题

精神院里病最重的人 2019-12-01 19:38:01 366 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站