分类归档

Docker教程

FWQ
Docker教程
mongodb中的管理实用命令
Mongodb中的操作方法的命令非常标准,这有助于我们能够理解、更好记住这些方法,达到熟练掌握。 1、用户 常识操作,无非包含了添、删、改、查。但有一个非常有意思的事情是,这些操作只能在相对应的db中,怎么理解呢?打比方说要给guohu库添加新用户,必需先执行use guohu,然后使用db.createUser()的方法,其他的方式类似。   db.createUser({user:"root",pwd:"root",roles:["root"]}) db.createUser({user:"guohu",pwd:"123456",roles:["readWrite"]}) db.dropUser("guohu") db.updateUser("guohu",{roles:["dbAdmin"]}) db.updateUser("wanda",{pwd:"wanda"}) db.getUser("guohu") db.getUsers() #提供了一种修改密码方法,这种方法和使用updateUser修改,可能是因为缓存的问题,会出现一点小插曲,但如果修改完后,重启mongod,就没有问题了。 db.changeUserPassword("guohu","123456") #添加、移除角色,也可以使用updateUser的方法 db.grantRolesToUser("wanda",["dbAdmin"]) db.revokeRolesFromUser("wanda",["dbAdmin"]) 2、角色 这一块用的相对少,所以就简单罗列一下方法,本人比较懒,方法也是添、删、改、查,在加上一些快捷的延伸操作 db.createRole() db.dropRole() db.dropRoles() db.updateRole() db.getRole() db.getRoles() db.grantPrivilegesToRole() db.revokePrivilegesFromRole() db.grantRolesToRole()…
2024-11-24 阅读全文 →
FWQ
Docker教程
mongodb中的集群配置
mongodb中的集群配置,无法通过mongod.conf中配置,只能在mogo通过命令配置,下面介绍下在mogo中的定义的config.   基本语法:config={….} ,也就是说config是一个json的数组。请注意哪些配置是必须的、非必须、建议使用、不建议使用。 _id:副本集的名称,该值必需和mongod.conf配置文件中的 replication.replSetName 一致,或者在mongod启动命令中的–replSet保持一致。[必须的] version:复制集的版本。[非必须] configsvr:分片集群服务的复制集,需要设置为true,否则设置为false。默认为false,3.2版本默认为true,3.4版本才默认为false 。这里坑了我两天。 protocolVersion:协议版本,3.2后默认为1,[非必须,采用默认值即可] writeConcernMajorityJournalDefault:3.4的新功能设置,等同于writeConcern中设置的{ w: “majority” } ,需要注意的是,如果protocolVersion=1,默认为true,protocolVersion=0,默认为false members:成员。是一个json的数组 members[n]._id:_id是一个从0-255的整型数。在更新副本集节点配置时,将用到这个_id,也是节点的唯一标识。[必须] members[n].host:可以是host或者IP:port,默认端口27017 [必须] members[n].arbiterOnly:默认false,仲裁节点,也可以使用方法rs.addArb() 直接添加。[非必须] members[n].buildIndexes:默认true,节点是否创建索引。这个建议设置为true,采用默认设置即可。如果该值设置为false,那需要注意同时该节点的值priority也需要设置为0,否则投票将无法创建索引的节点,升级为premary节点,客户端的情况将会出错。 members[n].hidden:设置为隐藏节点。客户端的情况不会到达隐藏节点,不管readPrefence如何设置。一般情况下,隐藏节点做为备份节点,延迟节点也属于隐藏节点。[非必须] members[n].priority:选举premary的权重,默认值是1,值可以从1-1000,改值只是一个相对值。如果像让某一个节点无法成为主节点,该值设置为0 members[n].tags: members[n].slaveDelay:设置延迟节点,改值的单位是秒。默认是0 members[n].votes:默认值1,单个节点的最大投票数。副本集的最大节点数是50,但最多只有7个投票节点,除这7个之外,其他的投票数应该为0.…
2024-11-24 阅读全文 →
FWQ
Docker教程
RabbitMQ的安装
rabbitMQ的下载地址: http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm erlang的下载地址: http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm   如果要选择其他的版本,请在这里查看下载: http://www.rabbitmq.com/releases/erlang/ http://www.rabbitmq.com/releases/rabbitmq-server/ 以上的地址都是rabbitmat官方提供的地址,尽量使用这里的安装包,虽然erlang官方也有安装包,但和rabbitMQ官方的还是有些许区别。 1、RabbitMQ的依赖: 错误:依赖检测失败: erlang >= R16B-03 被 rabbitmq-server-3.6.6-1.el7.noarch 需要 socat 被 rabbitmq-server-3.6.6-1.el7.noarch 需要 2、安装 socat yum install socat.x86_64 3、安装 erlang…
2024-11-24 阅读全文 →
FWQ
Docker教程
RabbitMQ中5个shell脚本的本质 – 推荐
从文章中可以看到,5个shell脚本中的rabbitmqctl、rabbitmq-server、rabbitmq-plugins都include了rabbitmq-env脚本,而rabbitmq-env脚本include了rabbitmq-defaults。rabbitmq-defaults的默认设置,而且rabbitmq-env是rabbmitmq的真正配置shell(并非配置文件)。结合该文章,注释了rabbit 3.6.6的5个文件。   1、rabbitmq-defaults #!/bin/sh -e #参数-e表示一旦出错,就退出当前的shell # RABBITMQ_HOME变量在rabbitmq-env脚本中定义了,rabbitmq-env脚本include了该文件。 SYS_PREFIX=${RABBITMQ_HOME} ### next line will be updated when generating a standalone release ERL_DIR= CLEAN_BOOT_FILE=start_clean SASL_BOOT_FILE=start_sasl if [ -f "${RABBITMQ_HOME}/erlang.mk"…
2024-11-24 阅读全文 →
FWQ
Docker教程
PHP安装 AMQP扩展
PHP安装 AMQP扩展 AMQP扩展能够支持rabbitMQ,AMQP是rabbitMQ的协议(Advanced Message Queue Protocol 高级消息队列协议)这个可自行百度。   1、安装rabbitmq-c-0.8.0 为什么要安装这个,不知道原因,PHP的官方网站上是怎么说滴。 下载地址:https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz cd rabbitmq-c-0.8.0 ./configure --prefix=/usr/local/rabbitmq-c make make install 2、安装amqp 下载地址:https://pecl.php.net/package/amqp # cd amqp-1.7.1 # phpize # ./configure --with-php-config=/usr/local/php7/bin/php-config --with-amqp…
2024-11-24 阅读全文 →
FWQ
Docker教程
RabbitMQ中的AMQP协议规范
一、概述 1.1 本文档的目标 此文档定义了一个网络协议-高级消息队列协议(AMQP), 它使一致的客户端程序可以与一致的消息中间件服务器进行通信. 我们面对的是这个领域有经验的技术读者,同时还提供了足够的规范和指南.技术工程师可以根据这些文档,在任何硬件平台上使用各种编程语言来构建遵从该协议的解决方案。   1.2 摘要 1.2.1 为什么使用AMQP? AMQP在一致性客户端和消息中间件(也称为”brokers”)之间创建了全功能的互操作. 我们的目标是实现一种在全行业广泛使用的标准消息中间件技术,以降低企业和系统集成的开销,并且向大众提供工业级的集成服务。 我们的宗旨是通过AMQP,让消息中间件的能力最终被网络本身所具有,并且通过消息中间件的广泛使用发展出一系列有用的应用程序. 1.2.2 AMQP范围 为了完全实现消息中间件的互操作性,需要充分定义网络协议和消息代理服务的功能语义。 因此,AMQP通过如下来定义了网络协议(AMQP是协议!)和服务端服务: 一套确定的消息交换功能,也就是“高级消息交换协议模型”。AMQP模型包括一套用于路由和存储消息的功能模块,以及一套在这些模块之间交换消息的规则 一个网络线级协议(数据传输格式),AMQP促使客户端可使用AMQ模型来与服务器交互. 可以只实现AMQP协议规范中的的部分语义,但是我们相信这些明确的语义有助于理解这个协议。 1.2.3 高级消息队列模型(AMQ 模型) 我们需要明确定义服务器语义,因为所有服务器实现都应该与这些语义保持一致性,否则就无法进行互操作.  因此AMQ 模型定义了一系列模块化组件和标准规则来进行协作. 有三种类型的组件可以连接服务器处理链来创建预期的功能:…
2024-11-24 阅读全文 →
FWQ
Docker教程
PHP中的AMQP类
一定要注意php安装AMQP的版本,版本不同使用的方法不一样。在官方网站就有2个版本的AMQP 千万不要出现这种情况,找到一个官方的版本,然后按照example,怎么调试都不通….按照PHP安装 AMQP扩展 安装的AMQP扩展是最新的,现在和PHP官方给出的第二版本,也有一些区别。主要体现在exchange和queue中有个declare的方法,分别更改成declarExchange()和declarQueue().   一、AMQPConnection ::__construct ([ array $credentials = array() ] ) 这方法比较简单,credentials的英文含义是“凭证”,但我喜欢把它理解为config。这些配置包括如下: host、vhost、port、login、password、read_timeout、write_timeout、connect_timeout,如果config省略,php会使用默认的这5个值,初始化,强烈建议带上config初始化,其中read_timeout、write_timeout、connect_timeout这三个值是最新版本才有的,PHP官方现在还没有,单位都是(秒) ::connect ( void )  、  ::pconnect ( void ) ::disconnect ( void )  …
2024-11-24 阅读全文 →
FWQ
Docker教程
RabbitMQ的原理与操作示例
AMPQ协议为了能够满足各种消息队列需求,在概念上比较复杂。首先,rabbitMQ启动默认是没有任何配置的,需要客户端连接上去,设置交换机等才能工作。不把这些基础概念弄清楚,后面程序设计就容易产生问题。   vhosts : 虚拟主机。 一个RabbitMQ的实体上可以有多个vhosts,用户与权限设置就是依附于vhosts。对一般PHP应用,不需要用户权限设定,直接使用默认就存在的”/”就可以了,用户可以使用默认就存在的”guest”。一个简单的配置示例: $conn_args = array(     'host' => '127.0.0.1',     'port' => '5672',     'login' => 'guest',     'password' => 'guest',     'vhost'=>'/' );…
2024-11-24 阅读全文 →
FWQ
Docker教程
RabbitMQ AMQP 消息模型攻略
AMQP 的消息模型如下图所示: 通过此图我们可以知道, 一个消息的发送流程有如下几个步骤: 消息生产者将消息发布(Publish)到 Exchange 中. Exchange 根据队列的绑定关系将消息分发到不同的 Queue 中. AMQP broker 根据订阅规则将消息发送给消费者 或 消费者自行根据需要从消息队列中获取消息.   Exchange 和 Exchange 类型 Exchange 的主要任务是接收消息并将消息路由到0个或多个 Queue 中, 而路由的算法受 Exchange 类型和绑定(binding) 关系的影响. AMQP 0-9-1…
2024-11-24 阅读全文 →