因为传统testfor搭配红石比较器最多只能检测15个人,于是当服务器人数超过15人时,就需要指令来辅助了
整个指令就像把玩家的人数类似杯子接水一样,会划分出不同的水位,水少了水位就会下降,无论哪个地方的水位下降,都会被检测到
首先用Scoreboard objectives add … dummy
创建三个计分板 (四十人服务器则需要四个)
在这里计分板以希腊字母举例
α β γ δ
虚拟实体的名字可以自己改,但不能是阿拉伯数字或者其他指令可误识别的符号这个图说明了HSF框架中每个组件在整个框架中扮演的角色,下面分别介绍下:
(1)服务节点对配置服务器列表的获取。伴随着web容器的启动,服务提供者和服务调用者向地址服务器获取配置服务器和Diamond服务器的ip列表信息,过程见上图的1、2步骤。
(2)服务的注册发布。服务提供者获取配置服务器列表后,将服务的相关信息(接口类全名、服务版本等)包含当前服务器的ip地址、端口等信息注册到配置服务器,即上图的3步骤。
(3)服务的订阅。当服务调用者的应用启动并获取配置服务器列表后,发送服务消费的相关信息(服务接口全名、服务版本等)到配置服务器订阅,然后配置服务器会通过“服务接口全名+服务版本”作为条件在内存中搜索,一旦获取到服务注册信息,就将对应的服务提供者的ip和端口发送到服务调用者的节点上,即上图的4 、5步骤。
(4)服务规则推送(如果需要)。如果对服务安全管控和流量控制有需求时,可以通过Diamond服务器提供规则设置界面,对指定的服务提供者和服务调用者设置相关规则,规则保存后,会在5秒内推送到与设置相关的服务器节点上。
(5)服务交互。在应用进行业务请求处理过程中,出现服务调用者对服务提供者的调用时,服务调用者会从已经保存在该应用节点上的服务提供者服务器列表里选择(阿里巴巴内部使用随机模式)其中一台服务进行请求的发送,服务交互期间是调用者和提供者两台服务器间的调用,无需通过中间别的服务器,这就是称为“去中心化”的主要原因,即上图中的步骤7
接下来具体介绍HSF框架的高效交互、高可用性和扩展能力。
1HSF框架的采用Netty+Hession数据序列化协议实现服务交互
HSF采用网络通信框架Netty+Hession数据序列化协议实现服务间的调用,主要考虑点在大并发量时,服务的交互性达到最佳。这类RPC协议采用多路复用的TCP长连接方式,即在服务调用者和服务提供者之间有多个服务请求同时调用时会共用一个长连接,一个长连接交替传输不同请求的字节块。它既避免了反复建立连接开销,也避免了连接的等待闲置从而减少了系统的连接总数,同时还避免了TCP顺序传输中的线头阻塞问题。
2HSF框架的容错机制
为了保证服务的高可用性,在生产环境中相同的服务往往会有很多个应用实例来提供服务,在进行服务调用时,服务调用者端已经保存了它需要调用的服务的服务器列表信。假如有三台服务器提供了相同的服务,当采用随机方式获取其中一台进行服务交互时,不论这台服务器已经发生故障无法回应请求,还是该服务器已经接收了请求,在服务请求处理过程中出现了服务器故障(宕机、网络问题)造成该服务器没有在规定的时间(一般服务调用会设置超时时间)内返回处理结果,则服务调用端会获取服务调用失败的反馈,会立即从剩下的两台机器中选择一台进行服务调用。从而保证了个别服务提供者出现问题,完全不影响该服务提供正常的服务。因为配置服务器是采用长连接的方式与服务器节点进行通信,一旦发现有服务实例出现故障,此时会将这台服务器提供者的信息从服务器的服务列表中删除,然后将更新后的服务列表以推送的方式同步给予该服务相关的所有服务调用者端,这样当下次进行服务调用时,就不会因为随机而对已经停止提供服务的服务器发送请求。
3HSF框架的线性扩展支持
HSF最为重要的一个特性就是服务能力的可扩展性,真正做到某个服务的业务处理能力随着服务器资源的增加得到线性的增长。基于HSF框架的运行机制,面对超级大的服务调用压力时,新增的服务提供实例(即增加一台服务器)可在几秒内(完成服务的注册发布、更新后的服务列表推送到服务调用端)开始进行服务请求处理,达到分担其他服务器实例压力的作用,实现服务能力整体水位恢复到正常的状态。据说双十一的时候阿里的多个服务中心所部署的服务实例节点数量超过2000个,即同一个服务由超过2000个服务实例同时提供负载均衡的服务。w(゚Д゚)ww(゚Д゚)w江西水利厅江河水情水位图打不开的原因是:网络问题,网络不佳或网速太慢。或服务器问题。服务器维护中或服务器登入人数太多。江西水利厅一般指江西省水利厅。根据《中共江西省委、江西省人民政府关于印发〈江西省人民政府机构改革实施方案〉的通知》(赣发〔2009〕5号),保留江西省水利厅,为省人民政府组成部门。
一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利;前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环境搞了一下压测,绝对是没得问题的;但是,就在两个月后的一天,系统突然跑的比乌龟还慢,投诉开始就陆续反馈过来了。
经过排查,原来是频繁执行一条耗时100ms的SQL导致,100ms感觉不长,但就是把系统搞崩了,具体细节如下。
项目采用ABP进行开发,集成统一的认证中心(IDS4),部分数据对接第三方系统,拆分后的这个项目架构相对简单。
考虑并发量不高,就算是高峰期也不会超过1000,于是就搞了个单台的数据库服务器(MySQL),测试环境中经过压测,完全能抗住。
上线时,由于线上资源的关系,DB服务器的配置没有按测试环境的标准来分配,相关人员想着后续看情况进行补配。上线推的比较紧,简单评估了配置风险,初步判断没啥大问题,于是就推上线了。
相关技术栈:ABP、IdentityServer4、Autofac、AutoMapper、QuartzNET、EF Core、Redis、MySQL等,这都不重要,重要的是100ms的SQL把系统搞崩了。
由于系统相对不大,并没有把分布式日志、调度监控,性能监控集成上去。
上线期间,前期处于使用推广阶段,一切正常。两个月后的一天,系统处于使用高峰时段,突然陆续收到反馈:系统有点卡!!!于是赶紧进行排查。
由于系统已经是集群部署的,慢这个问题首先怀疑是数据库服务器,于是让DBA的同事排查了一下,没有锁,只是有大量事务等待提交(waiting for handler commit),通过如下命令可查的:
看到都是插入审计日志记录导致,一看日志记录频率,差不多一秒500条记录。DBA同事说可能是记录插入频繁导致,此时CPU已经爆到100%了,为了快速解决问题,于是就赶紧关掉了一些不必要的日志记录。
这么一改,稍微降了一点,没有事务提交的记录,系统勉强可以撑着用,但是CPU还是在85%~97%波动;
看到这种情况,当然还是不放心,继续排查。 中间有对服务器的配置产生过怀疑,但非常肯定的是这不是主要原因,于是和DBA的同事继续排查。
系统虽然可以正常使用,但时不时的也看看监控屏,CPU一直处于高水位状态,还是有点慌的,因为一有问题,信息和电话都要爆。
突然DBA同事发现有一个单表查询的SQL执行比较频繁,于是单独拿出来试了一下,查询时间150ms左右,这个表的数据量不大,8万左右,但没有加任何索引,因为想着数据量不大,查询时长还可接受,所以当时就没有加相关索引。
定位到这条SQL后,想到的第一步就是增加索引,在测试环境上试了一把,执行效率直接飞速提高到1ms;效果如下:
所以和DBA同事达成一致意见,在生成环境上增加复合索引( 创建索引一定要注意字段顺序 ),在中午时候,系统使用频率不太高,于是就在生成上快速加了索引,我去,CPU一下降到了20%以内,意不意外;就算在使用高峰期,也没超过20%,通过zabbix工具监控看到CPU的效果:
问题算是解决了,总算松了一口气。
这里有个问题: CPU都爆了为什么没有报警提醒,这块DBA同事正在排查相关配置。这里发现CPU爆了,还是无意的远程到服务器,发现很卡,一看CPU才知道爆了。
系统虽小,问题不大,但其实暴露的问题还是挺多。
这次线上小事故暂时分享到这,因为项目不大,所以没有做那么多监控,但以下建议,小伙伴可以参考一下:
文章来自>
服务器冷备用和热备用区别为:运行状态不同、用途不同、自带软件不同。
一、运行状态不同
1、服务器冷备用:服务器冷备用是在主服务器安装软件或者进行配置的时候才开启,不需要的时候就关闭。
2、服务器热备用:服务器热备用同主服务器保持同步,时刻在进行运行。
二、用途不同
1、服务器冷备用:服务器冷备用于防止主服务器出现故障。
2、服务器热备用:服务器热备用于接收定期的更新,并且随时准备着应付系统出现故障的情况。
三、自带软件不同
1、服务器冷备用:服务器有自带的冷备免费软件。
2、服务器热备用:服务器没有自带的热备免费软件,需要使用专门的热备软件。
通过时间来进行变化或者通过开关调节晴天雨天气降水位。水天丛林的水位可以通过时间来进行变化,每6个小时会变化一次水位,也可以通过调节开关进行调节水位,当调节成晴的时候,水位就会上涨,当调节成雨的时候,水位则会下降。《原神》是由上海米哈游制作发行的一款开放世界冒险游戏,于2017年1月底立项,原初测试于2019年6月21日开启,再临测试于2020年3月19日开启,启程测试于2020年6月11日开启,PC版技术性开放测试于9月15日开启,公测于2020年9月28日开启。在数据方面,同在官方服务器的情况下,iOS、PC、Android平台之间的账号数据互通,玩家可以在同一账号下切换设备。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)