ratis - 整体概念

ratis - 整体概念,第1张

    ratis是raft协议java版本的开源实现项目,位于Apache项目下。项目git地址:https://github.com/apache/ratis。raft协议是基于日志的强领导模型的共识算法。leader选举、集群数据同步都离不离开日志。ratis最终目的是为了实现分布式系统的高可用性,对于具体的应用程序,ratis使用状态机(StateMachineUpdater)对具体的应用程序抽象隔离,保证ratis实现raft协议的纯粹性和可移植性。

客户端向raftServerImpl提交请求,请求最终由 RaftLog、LogAppender、LeaderState、StateMachineUpdater、StateMachine共同完成。具体步骤如下:

    1、客户端向RaftServerImpl发送请求

     2、RaftServerImpl将请求发送给RaftLog,构建日志并写入日志文件。

    3、RaftServerImpl将请求提交给LeaderState(返回一个CompelableFuture),等待请求处理完成。

    4、LogAppender检测到新增日志,复制日志到对应的Follower节点,并等待节点的响应。

    5、LogAppender接收到Follower节点日志提交成功响应后,将日志发送给LeaderState提交。

    6、LeaderState检测到大所属节点都已经同步成功后,提交日志,并通知StateMachineUpdater服务

    7、StateMachineUpdater服务检测到新提交的日志,读取日志并发送给StateMachine(应用程序通过该步骤接收到客户请求)并处理日志。

    8、StateMachine处理完成提交的日志,将对应日志在LeaderState中的CompletableFuture状态更新为完成。

    9、RaftServerImpl通过CompletableFuture接收到处理结果,并返回给客户端。

    ratis启动可以分解成三个部分:1、初始化;2、leader选举;3、启动leader;

    初始化部分是指Ratis正常工作的必要模块的初始化和启动。其中就包括:1、RaftServerImpl的初始化;2、LifeCycle生命周期管理器初始化;3、StateMachineUpdater应用日志服务器的初始化和启动,以及作为初始角色Follower对应的服务FollowerState的初始化和启动。其中RaftServerImpl、LifeCycle、StateMachineUpdater不论节点属于什么角色,这三个服务都是必要服务。

启动顺序为:

    1、有代理服务初始化LifeCycle生命周期控制器

    2、构建RaftServerImpl服务实例,调用start方法启动该服务(这里的star并不是启动一个单独线程)

    3、由RaftServerImpl初始节点角色管理服务,并将Follower作为初始角色启动(设置角色为:follower,启动角色对应的后台服务FoloowerState)。

    4、设置集群为运行状态(更新LifeCycle的状态)    

    ratis的leader选举是由Follower后台服务FollowerState触发,在指定的超时时间范围内没有接收到Leader心跳请求,就触发节点角色的变更(由Follower角色变更为 Candidate角色,并启动Candidate角色对应的后台服务LeaderElection),开启Raft 候选人的leader选举流程。

如1.2图:

    第10步:指Follower角色对应的后台服务FollowerState在指定时间内没有接收到Leader的心跳信息,于是触发角色变更。

    第11步:FollowerState ->RaftServerImpl#changeToCandidate指FollowerState通过Raft顶层服务RaftServerImpl变更节点角色,并结束当前服务(结束FollowerState服务)

    第12步:RaftServerImpl ->RoleInfo#startLeaderElection指RaftServerImpl通知RoleInfo将节点角色变更为:Candidate

    第13步:并启动leader选举(也就是Candidate角色对应的后台服务 - LeaderElection服务)

       LeaderElection服务启动后,就开始向配置文件中配置的其它节点发送投票请求。正常清情况下投票请求分为两个阶段:

            1、预选阶段 - Phase.PRE_VOTE

                预选阶段抓哟是检查当前集群是否存在合法的leader,该步骤可以通过配置:raft.server.leaderelection.pre-vote 关闭该步骤。  

            2、竞选阶段 - Phase.ELECTION

                竞选阶段就是正式leader竞选,candidate向各节点开始拉票,并在指定节时间内统计得到的投票情况。

leader的启动由LeaderElection选举通过触发。如图1.2时序图所示:

    第14步:由LeaderElection调用RaftServerImpl#changeToLeader,开启leader上位。

    第15步:RaftServerImpl调用RoleInfo#shutDownElection,关闭LeaderElection后台服务。

    第17步:RaftServerImpl调用RoleInfo#becomeLeader,将节点的角色设置为:leader,并初始化启动LeaderStateImpl。

    第18步:LeaderState初始化并启动LogAppender,开启leader日志同步后台服务。

至此,Ratis服务leader上位就结束,可以开启正常的服务请求处理了。

漏洞名称: Apache Log4j任意代码执行漏洞

漏洞性质: 任意代码执行

漏洞描述:

Apache Log4j 是 Apache 的一个开源项目,Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。该日志框架被大量用于业务系统开发,用来记录日志信息。log4j2是全球使用广泛的java日志框架,同时该漏洞还影响很多全球使用量的Top序列的通用开源组件,例如 Apache Struts2、Apache Solr、Apache Druid、Apache Flink等。

漏洞危害:

Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据被日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码,可能对用户造成不可挽回的损失。

危害等级:严重

漏洞复现:

影响版本:

Apache Log4j 2.x <= 2.14.1

临时修复方案:

1.修改jvm参数 -Dlog4j2.formatMsgNoLookups=true

2.修改配置

log4j2.formatMsgNoLookups=True

3.将系统环境变量

FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true

修复建议:

1、厂商已发布升级修复漏洞,用户请尽快更新至安全版本:log4j-2.15.0-rc1

下载链接:

https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1

2、升级已知受影响的应用及组件,如srping-boot-strater-log4j2/Apache Solr/Apache Flink/Apache Druid

3、手动替换 log4j2 版本为 2.15.1-SNAPSHOT

log4j-core: https://repository.apache.org/content/groups/snapshots/org/apache/logging/log4j/log4j-core/2.15.1-SNAPSHOT/log4j-core-2.15.1-20211209.191737-4.jar

log4j-api:

https://repository.apache.org/content/groups/snapshots/org/apache/logging/log4j/log4j-api/2.15.1-SNAPSHOT/log4j-api-2.15.1-20211209.191737-4.jar

log4j-slf4j18-impl: https://repository.apache.org/content/groups/snapshots/org/apache/logging/log4j/log4j-slf4j18-impl/2.15.1-SNAPSHOT/log4j-slf4j18-impl-2.15.1-20211209.191737-4.jar

4、做好资产自查以及预防工作,以免遭受黑客攻击

FileZilla是一个免费开源的FTP客户端软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性、有条理的界面和管理多站点的简化方式使得Filezilla客户端版成为一个方便高效的FTP客户端工具,而FileZilla Server则是一个小巧并且可靠的支持FTP&SFTP的FTP服务器软件.

1. 功能强大。和CuteFTP和LeechFTP很像。支持多线程下载(不过考虑到各位FTP管理员的感受,我把这个功能关闭了,呵呵),支持raw FTP指令。

2. 界面简洁。界面其实也和CuteFTP很像的,嘻嘻,而且我很欣赏它的“目录树视图”,在FTP站点目录结构复杂的时候不用转来转去了。不过不能像FlashFXP那样用ShellFolder视图是一个遗憾,要到“我的文档”之类的shell文件夹就比较麻烦了。什么时候看能不能把这个改过来。

好在我是用惯了LeapFTP的,所以这些小问题还不是很介意,呵呵。

3. 绿色!不用安装就可以直接运行,当然FileZilla也提供了一个安装版的。FileZilla的参数设置还可以选择保存在注册表还是保存到一个XML文件,如果选择保存到XML文件,就不用担心污染注册表了。

下面是使用方法:

填写好服务器地址,端口,用户名,密码,就能用了,以前没用过flashfxp或cuteftp吗

你是上传到自己的空间吧,网页要显示的话,需要传到对应的文件夹,pulic html,http doc之类的文件夹,看具体的,

远程登入这个我得看下,我没装filezilla,等我装下

远程站点是不是填写远程空间地址的,可以不填写吧,应该是这样的,因为有时候需要进入里面的文件夹,这样先填好了,连接上后就不要点了


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/141215.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-18
下一篇2023-03-18

发表评论

登录后才能评论

评论列表(0条)

    保存