RLog

Haproxy官方文档翻译(第二章)配置Haproxy 附英文原文

我们两清 提交于 2021-02-11 13:23:04
2.配置 HAProxy 2.1 配置文件格式 Haproxy的配置过程包含了3部分的参数资源: - 命令行中的参数,此种参数总是享有优先权被使用 - 配置文件中global节点中的参数,此种参数是进程范围参数 - 代理节点参数,此种参数是从defaults,listen,frontend,backend节点中读取的 这个手册里,以关键字起始并作为关联引用的行,组成了配置文件的语法结构。后面跟上可选的一个或者几个用空格隔开的参数。 2.2 引用(Quoting)和转义(escaping) Haproxy的配置介绍了一个像大多数编程语言一样的引用和转义的系统。配置文件支持3种类型:用一个反斜杠(\),弱引用用双引号, 强引用用单引号。 如果字符串中必须要加入空格,必须要在它们前面加上反斜杠('\')来转义它们或者用引号引起来。反斜杠也必须用双反斜杠或者强引用来转义它们。 我们在一个特殊字符前面加上反斜杠('\')来表达一个转义: \ 用来表示空格,以区分一个分隔符 \# 用来表示一个#号,以区分注释符号 \\ 表示一个反斜杠 \' 表示一个单引号,以区分强引用 \" 表示一个双引号,以区分弱引用 弱引用使用双引号来实现("")。用来阻止解释语义(使特殊字符变为普通字符,比如让以下特殊字符所表示的特殊意义失效): 空格字符表示参数的分隔符 ‘ 单引号表示强引用的分隔符 #

聊聊rocketmq-client-go的transactionProducer

主宰稳场 提交于 2020-08-15 07:42:40
序 本文主要研究一下rocketmq-client-go的transactionProducer transactionProducer rocketmq-client-go-v2.0.0/producer/producer.go type transactionProducer struct { producer *defaultProducer listener primitive.TransactionListener } transactionProducer定义了producer及listener属性 NewTransactionProducer rocketmq-client-go-v2.0.0/producer/producer.go func NewTransactionProducer(listener primitive.TransactionListener, opts ...Option) (*transactionProducer, error) { producer, err := NewDefaultProducer(opts...) if err != nil { return nil, errors.Wrap(err, "NewDefaultProducer failed.") } return &transactionProducer{

聊聊rocketmq-client-go的remoteBrokerOffsetStore

不打扰是莪最后的温柔 提交于 2020-08-14 16:29:35
序 本文主要研究一下rocketmq-client-go的remoteBrokerOffsetStore remoteBrokerOffsetStore rocketmq-client-go-v2.0.0/consumer/offset_store.go type remoteBrokerOffsetStore struct { group string OffsetTable map[primitive.MessageQueue]int64 `json:"OffsetTable"` client internal.RMQClient namesrv internal.Namesrvs mutex sync.RWMutex } remoteBrokerOffsetStore定义了group、OffsetTable、client、namesrv、mutex属性 NewRemoteOffsetStore rocketmq-client-go-v2.0.0/consumer/offset_store.go func NewRemoteOffsetStore(group string, client internal.RMQClient, namesrv internal.Namesrvs) OffsetStore { return &remoteBrokerOffsetStore{

Linux平台达梦数据库V7之备份与恢复概念说明

两盒软妹~` 提交于 2020-08-11 06:02:26
一 前言 DM7 数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对 DM7 数据库的操作,归根结底都是对某个数据文件页的读写操作。 因此,DM7 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。而在备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中,因此,为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。 还原与恢复是备份的反过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定 LSN。恢复结束以后,数据库中可能存在处于未提交状态的活动事务,这些活动事务在恢复结束后的第一次数据库系统启动时,会由 DM7 数据库服务器自动进行回滚。 备份、还原与恢复的关系如图所示。 二 备份与恢复基本概念 2.1 表空间与数据文件 DM7 数据库的表空间是一个逻辑概念,其目的主要是为了方便数据库的管理,数据库的所有对象在逻辑上都存放在某个表空间中,而物理上都存储在所属表空间的数据文件中。一个表空间由一个或多个数据文件组成。

Linux平台达梦数据库V7之归档模式开启方法

女生的网名这么多〃 提交于 2020-08-11 04:59:58
一 前言 备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小,这是因为一旦出现介质故障如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。 二 归档日志类型 DM 服务器可以运行在两种模式下,即归档模式和非归档模式,这两种模式可以由用户进行设置,系统在归档模式下运行时,会产生归档日志文件,此时系统管理员应该事先预留出足够的磁盘空间以便存储归档日志文件。通过 dm.ini 和 dmarch.ini 可以配置归档。 2.1 本地归档 Redo 日志本地归档(LOCAL),就是将 Redo 日志写入到本地归档日志文件的过程。配置本地归档情况下,Redo 日志刷盘线程将 Redo 日志写入联机 Redo 日志文件后,对应的 RLOG_BUF 由专门的归档线程负责写入本地归档日志文件中。 与联机 Redo 日志文件可以被覆盖重用不同,本地归档日志文件不能被覆盖,写入其中的 Redo 日志信息会一直保留,直到用户主动删除;如果配置了归档日志空间上限,系统会自动删除最早生成的归档 Redo 日志文件,腾出空间。 DM 提供了按指定的时间或指定的 LSN 删除归档日志的系统函数 (SF_ARCH1VELOG_DELETE_BEFORE_TIME 和SF_ARCH1VELOG

聊聊rocketmq-client-go的PullConsumer

ぐ巨炮叔叔 提交于 2020-08-09 11:36:29
序 本文主要研究一下rocketmq-client-go的PullConsumer PullConsumer rocketmq-client-go-v2.0.0/consumer/pull_consumer.go type PullConsumer interface { // Start Start() // Shutdown refuse all new pull operation, finish all submitted. Shutdown() // Pull pull message of topic, selector indicate which queue to pull. Pull(ctx context.Context, topic string, selector MessageSelector, numbers int) (*primitive.PullResult, error) // PullFrom pull messages of queue from the offset to offset + numbers PullFrom(ctx context.Context, queue *primitive.MessageQueue, offset int64, numbers int) (*primitive.PullResult, error)

聊聊rocketmq-client-go的pushConsumer

痴心易碎 提交于 2020-08-04 19:12:02
序 本文主要研究一下rocketmq-client-go的pushConsumer pushConsumer rocketmq-client-go-v2.0.0/consumer/push_consumer.go type pushConsumer struct { *defaultConsumer queueFlowControlTimes int queueMaxSpanFlowControlTimes int consumeFunc utils.Set submitToConsume func(*processQueue, *primitive.MessageQueue) subscribedTopic map[string]string interceptor primitive.Interceptor queueLock *QueueLock done chan struct{} closeOnce sync.Once } pushConsumer定义了queueFlowControlTimes、queueMaxSpanFlowControlTimes、consumeFunc、submitToConsume、subscribedTopic、interceptor、queueLock、done、closeOnce属性 NewPushConsumer rocketmq

聊聊rocketmq-client-go的strategy

大憨熊 提交于 2020-07-26 08:25:54
序 本文主要研究一下rocketmq-client-go的strategy AllocateStrategy rocketmq-client-go-v2.0.0/consumer/strategy.go type AllocateStrategy func(string, string, []*primitive.MessageQueue, []string) []*primitive.MessageQueue AllocateStrategy定义了一个func AllocateByAveragely rocketmq-client-go-v2.0.0/consumer/strategy.go func AllocateByAveragely(consumerGroup, currentCID string, mqAll []*primitive.MessageQueue, cidAll []string) []*primitive.MessageQueue { if currentCID == "" || len(mqAll) == 0 || len(cidAll) == 0 { return nil } var ( find bool index int ) for idx := range cidAll { if cidAll[idx] == currentCID {

python websocket网页实时显示远程服务器日志信息

纵然是瞬间 提交于 2020-04-28 06:23:45
功能:用 websocket技术 ,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看。你还在用 ajax每隔段时间去获取服务器日志?out了,试试用websocket方式吧 我用 bottle框架,写了个 websocket服务端 ,浏览器连接到 websocket server,再用python subprocess获取远程服务器的日志信息,subprocess,就是用Popen调用shell的shell命令而已,这样可以获取到实时的日志了,然后再send到 websocket server 中,那连接到 websocket server的浏览器,就会实时展现出来了 用二台服务器来实现这个场景, A服务器是websocket服务端,B服务器是日志端 A服务器是我浏览器本机,websocket服务端也是这台机,IP是:192.168.2.222 B服务器是要远程查看日志的服务器,我这里用:192.168.2.224 以下是 在 A服务器的 操作 (Python2) 安装 : pip install bottle pip install websocket-client pip install bottle-websocket websocket

AndroidP 本地时间/时区自动更新 – NITZ

半城伤御伤魂 提交于 2020-02-26 14:57:58
NITZ - Network Identity andTime Zone,网络标识和时区,是一种用于自动配置本地时间和日期的机制,同时也通过无线网向移动设备提供运营商信息。NITZ经常被用来自动更新移动电话的系统时钟,Android原有的更新机制就是采用NITZ方式,这是一种运营商的可选服务。其基本原理简单的来说,就是UI根据 Modem主动上报的时间信息,更新终端系统的时间及时区。 初始化:构造函数 ServiceStateTracker() { … mCi.setOnNITZTime(this, EVENT_NITZ_TIME, null); … } 接收到EVENT_NITZ_TIME后,调用 setTimeFromNITZString去设置时间和时区 @Override public void handleMessage (Message msg) { ... case EVENT_NITZ_TIME: ar = (AsyncResult) msg.obj; String nitzString = (String)((Object[])ar.result)[0]; long nitzReceiveTime = ((Long)((Object[])ar.result)[1]).longValue(); setTimeFromNITZString(nitzString,