Synchrony

对PBFT算法的理解

时光总嘲笑我的痴心妄想 提交于 2020-08-07 21:39:39
PBFT论文断断续续读了几遍,每次读或多或少都会有新的理解,结合最近的项目代码,对于共识的原理有了更清晰的认识。虽然之前写过一篇整理PBFT论文的博客,但是当时只是知道了怎么做,却不理解为什么。现在整理下思路,写一篇关于PBFT的理解。 1. 前提假定 1.1 同步模型 在分布式系统中谈论共识,首先需要明确系统同步模型是 synchrony , asynchrony 还是 partial synchrony ? synchrony : 节点所发出的消息,在一个确定的时间内,肯定会到达目标节点; asynchrony : 节点所发出的消息,不能确定一定会到达目标节点; partial synchrony : 节点发出的消息,虽然会有延迟,但是最终会到达目标节点。 synchrony是十分理想的情况,如果假设分布式系统是一个同步系统,那么共识算法的设计可以简化很多,在同步系统中只要超时没收到消息就可以认为节点除了问题。asynchrony是更为贴近实际的模型,但是根据 FLP Impossibility 原理,在asynchrony假定下,共识算法不可能同时满足 safety 和 liveness 。为了设计能够符合实际场景的共识算法,目前的BFT类共识算法多是基于 partial synchrony 假定,这在PBFT论文中被称为"weak synchrony"。

对PBFT算法的理解

删除回忆录丶 提交于 2020-08-07 15:06:28
PBFT论文断断续续读了几遍,每次读或多或少都会有新的理解,结合最近的项目代码,对于共识的原理有了更清晰的认识。虽然之前写过一篇整理PBFT论文的博客,但是当时只是知道了怎么做,却不理解为什么。现在整理下思路,写一篇关于PBFT的理解。 1. 前提假定 1.1 同步模型 在分布式系统中谈论共识,首先需要明确系统同步模型是 synchrony , asynchrony 还是 partial synchrony ? synchrony : 节点所发出的消息,在一个确定的时间内,肯定会到达目标节点; asynchrony : 节点所发出的消息,不能确定一定会到达目标节点; partial synchrony : 节点发出的消息,虽然会有延迟,但是最终会到达目标节点。 synchrony是十分理想的情况,如果假设分布式系统是一个同步系统,那么共识算法的设计可以简化很多,在同步系统中只要超时没收到消息就可以认为节点除了问题。asynchrony是更为贴近实际的模型,但是根据 FLP Impossibility 原理,在asynchrony假定下,共识算法不可能同时满足 safety 和 liveness 。为了设计能够符合实际场景的共识算法,目前的BFT类共识算法多是基于 partial synchrony 假定,这在PBFT论文中被称为"weak synchrony"。

Confluence 6 通过 SSL 或 HTTPS 运行

馋奶兔 提交于 2019-12-04 09:27:06
下一步你需要配置 Confluence 来使用 HTTPS: 编辑 < install-directory>/conf/server.xml 文件。 取消注释下面的行: < Connector port = "8443" maxHttpHeaderSize = "8192" maxThreads = "150" minSpareThreads = "25" protocol = " org.apache.coyote.http11.Http11NioProtocol " enableLookups = "false" disableUploadTimeout = "true" acceptCount = "100" scheme = "https" secure = "true" clientAuth = "false" sslProtocols = "TLSv1, TLSv1.1,TLSv1.2 " sslEnabledProtocols = "TLSv1, TLSv1.1,TLSv1.2 " SSLEnabled = "true" URIEncoding = "UTF-8" keystorePass="<MY_CERTIFICATE_PASSWORD>"/> 替换 < MY_CERTIFICATE_PASSWORD> 为你在证书中使用的密码。 确定 attribute

Confluence 6 管理协同编辑

冷暖自知 提交于 2019-12-04 09:25:34
你不能通过 Confluence UI 修改 Synchrony 的配置。配置的修改是通过系统属性进行修改的。在绝大部分情况下,你不需要对默认的配置进行修改。 修改 Synchrony 运行的端口... 在默认情况下 Synchrony 运行在 8091 端口。如果这个端口在你的系统中已经被其他应用占用了,你可使用 synchrony.port 系统属性来将端口修改到其他可用的端口上。 如果你使用的是 Confluence 6.0.3 及其早期的版本,你需要使用 reza.port 来替代 synchrony.port。 请可参考 Configuring System Properties 页面中的内容来获得如何进行修改的帮助。 针对 Confluence 数据库中,运行 Synchrony 的方式有些不同。请参考 Configuring Synchrony for Data Center 页面中的内容来获得更多信息。 修改 Synchrony 的最大 heap 值 在默认情况下 Synchrony 的最大 heap 大小被设置为 1 GB。 如果你遇到了与 Synchrony 有关的内存溢出的错误,你可以通过修改 synchrony.memory.max 属性来确定 Synchrony 使用的内存大小。 如果你使用的是 Confluence 6.0.3 及其早期的版本,你需要使用

Confluence 6 修改日志文件的目标位置

余生长醉 提交于 2019-12-03 15:12:04
在 log4j 中,一个输出被定义为 'appender'。希望修改 log 文件的目标,你需要停止 Confluence 然后修改设置 log4j.properties 日志配置文件的 ' Logging Location and Appender ' 设置。有关这个文件的路径,请参考 上面 的说明。 在一个标准的配置文件中,你可以找到下面 2 个 appenders。 com.atlassian.confluence.logging.ConfluenceHomeLogAppender – 这个是默认的日志输出器(appender )在 上面 描述得文件中。这个日志输出器有允许下面的设置: MaxFileSize MaxBackupIndex org.apache.log4j.RollingFileAppender – 如果你希望记录日志到不同的位置,取消 RollingFileAppender 行前面的备注,同时修改下面的日志文件路径。注释掉 ConfluenceHomeLogAppender 行的内容。 Synchrony 日志路径也可以通过同样的方式进行修改。 Confluence 绑定了 log4j 提供的所有功能。有关 log4j 日志输出容器的的定义,请参考 log4j documentation 页面中的内容。 https://www.cwiki.us

Confluence 6 代理和 HTTPS 设置连接器

偶尔善良 提交于 2019-12-03 07:13:05
很多用户选择将 Confluence 运行在反向代理的后面,同时还启用了 HTTPS。将你的的 Confluence 反向代理配置正确就显得非常必要了,并且能够避免后期在使用 Confluence 遇到的很多问题。 代理和 HTTPS 访问都已经在 Tomcat 中配置了,Tomcat 是 Confluence 使用的应用服务器。 简单连接器 对 Confluence 进行配置和设置,越简单越好,我们会尽可能的让配置简单。我们已经在 Tomcat 中提供了一系列的连接器样本。这些样本在 <install-directory>/conf/server.xml 文件中。 连接器示例 描述 DEFAULT - 直接连接,不使用代理,针对不使用代理的 HTTP 访问 Confluence 这个是默认的选项。当你没有使用反向代理并且 没有 启用 HTTPS,启用这个选项。 HTTP - 代理访问 Confluence ,通过 Apache 或者 Nginx 通过 HTTP 访问 当你使用了反向代理,并且 没有 启用 HTTPS,选择这个选项。 HTTPS - 直接连接,不使用代理,针对不使用代理的 HTTPS 访问 Confluence 如果你希望使用 HTTPS,但是不配置反向代理,选择这个选项。HTTPS 将会在 Tomcat 中进行配置。 HTTPS - 代理访问 Confluence

Confluence 6 管理协同编辑

不问归期 提交于 2019-12-03 07:10:33
对于你如何连接 Synchrony 是与你的环境有关的。我们知道绝大部分的 Confluence 站点是运行在反向代理后面的,同时还使用了 SSL。这里是帮助你在你环境中识别正确的配置的一些信息和一些针对你环境需要做的一些协同合作方面的修改。 SSL Synchrony 运行在一个独立的 JVM,这个并不需要支持直接的 HTTPS 连接。如果你没有使用反向代理,SSL 应该在 Tomcat 中定义,如果你使用了方向代理或者负载均衡。那么 SSL 应该在你的反向代理和负载均衡中进行配置和定义。 Proxies 在下面的图表中,我们使用 Confluence 运行的环境下通常的代理和反向代理配置,同时 Confluence 也运行在 /confluence 上下文路径,(例如, www.mysite.com/confluence )。如果你的 Confluence 没有使用上下文,那么这个概念和配置也是一样的(例如, www.myconfluence.com )。 下面的配置只是特定于 Confluence 服务器,如果你使用的是数据中心,请参考 Configuring Synchrony for Data Center 页面中的内容来获得更多信息。 没有反向代理 如果你没有在 Confluence 中使用反向代理,那么你的会通过 Confluence 的内部 Synchrony

Confluence 6 使用 Apache 的 mod_jk

旧街凉风 提交于 2019-12-03 07:10:03
在 Confluence 6 及其后续版本中,不能使用 mod_jk 来做代理。这是因为 Synchrony 服务导致的这个限制。 Synchrony 在协同编辑的时候需要启动,同时还不能接受 AJP 连接。请参考 Using Apache with mod_proxy 页面中的文档进行配置。 如果你没有办法切换 mod_proxy,请参考 How to configure Apache mod_jk to proxy Confluence 6.x or later 页面中的内容进行配置。 https://www.cwiki.us/display/CONF6ZH/Using+Apache+with+mod_jk 来源: oschina 链接: https://my.oschina.net/u/2344080/blog/1926013

Confluence 6 管理协同编辑

六眼飞鱼酱① 提交于 2019-12-02 00:57:05
编辑模式确定了你站点所有用户使用协同编辑的体验,这个是你对协同编辑进行启用和关闭的地方。 希望修改编辑模式: 进入 > 基本配置( General Configuration) > 协同编辑(Collaborative editing) 。 选择 编辑模式(Change mode)。 选择一个模式,然后选择 修改(Change) 。 修改编辑模式其实是不重要的,一些修改可能会导致你的用户丢失他们的草稿,因此针对某个模式,你最好需要知道修改将会导致那些问题。 有下面的模式可用: 模式(Mode) 提示(Implications) 启用(On) 这个模式允许你的小组可用同时进行编辑和分享操作,同时实时的能够看到其他用户的修改。 这是推荐的编辑模式。 限制(Limited) 如果你需要对 Synchrony 进行问题排除的话,这个模式将会包含你用户分享草稿。建议仅仅在当你觉得你的系统在编辑和发布的时候遇到问题了,选择这个模式。 你用户的编辑体验将会受限: 只有一个用户可以编辑一个共享的草稿,而且仅仅只有这个用户可以编辑。 你不可以在页面的历史中恢复到早期的版本。 你不可以移动页面。 你不可以在页面中进行行标注。 当 Synchrony 再次运行后,我们推荐你将协同编辑设置回启用模式。 关闭(Off) 这个模式意味着你的小组仅仅可以编辑自己的页面草稿。Confluence

Confluence 6 识别系统属性

ぃ、小莉子 提交于 2019-12-01 23:04:10
Confluence 支持一些可以从 Java 系统属性中配置的配置参数和调试(debugging )设置。系统属性通常是使用 -D 为参数选项,这个选项是 Confluence 在运行后设置到 JVM 虚拟机中的。请参考: Configuring System Properties 页面中的内容来获得更多的信息。 开始版本 默认值 模块... 作用和影响 atlassian.forceSchemaUpdate 1.0 false atlassian-config 在默认的情况下,Confluence 只会在侦测到数据库更新后才会运行数据库 schema 更新。这个标志位将会强制 Confluence 在启动的时候对 schema 进行更新。 confluence.home 1.0 任何文件系统路径 Confluence and atlassian-config 如果这个属性被设置,Confluence 将会忽略 confluence-init.properties 属性文件中配置的信息,使用你在启动的时候指定的路径为 Confluence Home 目录。 confluence.dev.mode 1.0 false Confluence 针对 Confluence 开发人员,启用更多的 debugging 选项(这个也可能会修改 spring bean 的默认 lazy