qq推广工具,简述seo对各类网站的作用,丹东网站建设公司,logo设计哪里做得好分布式和集群分布式一定是集群#xff0c;但是集群不一定是分布式#xff08;可能是复制的#xff09;集群是多个实例一起工作#xff0c;分布式将一个系统拆分之后那就是多个实例分布式应用结构#xff1a;Hash算法适用于在加密#xff0c;数据存储和查找方面有hash表但是集群不一定是分布式可能是复制的集群是多个实例一起工作分布式将一个系统拆分之后那就是多个实例分布式应用结构Hash算法适用于在加密数据存储和查找方面有hash表效率高最理想的时间复杂度接近O(1)例如直接寻址法存储的数据和数组下标绑定到一起 H(key)a*key b(a,b是常量)除留余数法存储的数据对空间长度求模确定存储位置普通Hash算法存在问题扩容缩容都需要影响全局重新计算因此引入一致性Hash一致性Hash算法 一致性Hash算法将整个Hash空间组织成一个虚拟的圆环Hash函数的值空间为0 - 2^32 -1 整形如图所示一致性Hash算法对于节点的增减都只需重定位环空间中的一小部分数据具有较好的容错性和可扩展性。在节点少时容易出现资源倾斜解决这种问题使用虚拟节点机制每个节点对应多个hash通过虚拟节点映射真实节点集群时钟同步方案如果所有服务器都能联网可以分别同步国家时间服务器使用命令ntpdate -u ntp.api.bz 如果存在不能联网的的机器定时同步局域网内能联网的其他服务器时间如果全部不能联网就指定设置一台同步分布式ID生成方案UUID 重复概率低独立数据库自增id 性能和可靠性都低 SnowFlake 雪花算法 二进制 由41位时间戳 10位机器码 12位序列号组成Redis incr分布式调度1.运行在分布式集群环境下的调度任务(同一个定时任务程序部署多份只应该有一个定时任务在执行)2.分布式调度—定时任务的分布式—定时任务的拆分(即为把一个大的作业任务拆分为多个小的作业任务同时执行)定时任务与消息队列的区别共同点异步处理2. 应用解耦3. 流量削峰不同点定时任务作业是时间驱动而MQ是事件驱动2. 定时任务作业更倾向于批处理MQ倾向于逐条处理分布式调度框架Elastic-Job分布式调度协调 基于 Zookeeper 实现 在分布式环境中任务能够按指定的调度策略执行并且能够避免同一任务多实例重复执行丰富的调度策略 基于成熟的定时任务作业框架Quartz cron表达式执行定时任务弹性扩容缩容 当集群中增加某一个实例它应当也能够被选举并执行任务;当集群减少一个实例 时它所执行的任务能被转移到别的实例来执行。失效转移 某实例在任务执行失败后会被转移到其他实例执行错过执行作业重触发 若因某种原因导致作业错过执行自动记录错过执行的作业并在上次作业 完成后自动触发。支持并行调度 支持任务分片任务分片是指将一个任务分为多个小任务项在多个实例同时执行。 作业分片一致性 当任务被分片后保证同一分片在分布式环境中仅一个执行实例。Leader节点选举机制每个Elastic-Job的任务执行实例App作为Zookeeper的客户端来操作ZooKeeper的znode1.多个实例同时创建leader节点2.leader节点只能创建一个后创建的会失败创建成功的实例会被选为leader节点 执行任务任务分片处理数据量过大时ElasticJob可以把作业分为多个的task(每一个task就是一个任务分片)每一个task交给具体的一个机器实例去处理(一个机器实例是可以处理多个task的)但是具体每个task 执行什么逻辑由我们自己来指定。 当扩容或者缩容时Zookeeper或通知Elastic-Job 重新分片Session共享一致性解决方案 Nginx的 IP_Hash 策略 同一个客户端IP的请求都会被路由到同一个目标服务器 缺陷服务器重启Session丢失存在单点负载高的⻛险单点故障问题2. Session复制Tomcat修改配置文件达到Session之间的复制缺陷性能低延迟3. Session共享使用缓存中间件 Spring Session 使用仅需要引入依赖配置redis开启注解原理如下图作业基于SpringBoot实现一个登陆功能含有拦截验证使用Spring session保持session一致性打成war包将war包部署到tomcat集群中要求1个Nginx节点、2个Tomcat节点使用Nginx轮询访问两个tomcat主要代码及配置登录Controller拦截器此处简易实现配置拦截登录之外的请求Nginx配置