客户端向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,等我装下
远程站点是不是填写远程空间地址的,可以不填写吧,应该是这样的,因为有时候需要进入里面的文件夹,这样先填好了,连接上后就不要点了
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)