2020年10月31日星期六

美国空军曾追踪不明飞行物UFO事件,其中一名飞行员驾驶的飞机坠毁

在1948年1月7日,美国空军曾追踪一架不明飞行物,当时出动了数辆飞机追踪,其中一名飞行员曼特尔在追踪不明飞行物的时候,驾驶的飞机发生了坠毁事件。当时在梅斯维尔附近出现了怪异的不明飞行物,通过观察这个不明飞行物体型非常硕大,很多人看到这个不明飞行物移动速度很快,有目击者看到在诺克斯堡附近远处的草地上有一个白色的不明物体,通过望远镜观察到这个白色的不明物体还伴随着红色,大约停留了有半个小时,就突然散发出绿色的光芒,周围一直围绕着红色的烟雾,迅速的升向高空。
图片7.png
在肯塔基州发生的UFO事件非常的奇异,当时空军警卫队正在进行军事训练,突然被通知要去追踪这架不明飞行物,很多飞行员之间通过信息交流一起追踪这架不明飞行物,但是在追踪的过程中他们发现,越靠近这架不明飞行物,飞行员之间传输的信号越弱,而且这架不明飞行物看似是金属物体,体型非常巨大。曼特尔一直在追踪这架不明飞行物,但是由于飞行物升空太快太高,曼特尔在追踪的过程中由于缺氧陷入了昏迷,驾驶的飞机也坠毁了。

美国空军追踪不明飞行物UFO事件受到了广大的关注,有飞行员报告说他们看到了一个非常小的物体,但是却无法识别,当时雷达无法检测不明飞行物,他们猜测极有可能是未知的外星生物


原文转载:http://tech.shaoqun.com/a/298254.html

ishare:https://www.ikjzd.com/w/2308

铭宣:https://www.ikjzd.com/w/1551.html

blibli:https://www.ikjzd.com/w/1676


在1948年1月7日,美国空军曾追踪一架不明飞行物,当时出动了数辆飞机追踪,其中一名飞行员曼特尔在追踪不明飞行物的时候,驾驶的飞机发生了坠毁事件。当时在梅斯维尔附近出现了怪异的不明飞行物,通过观察这个不明飞行物体型非常硕大,很多人看到这个不明飞行物移动速度很快,有目击者看到在诺克斯堡附近远处的草地上有一个白色的不明物体,通过望远镜观察到这个白色的不明物体还伴随着红色,大约停留了有半个小时,就突然散
pocket:https://www.ikjzd.com/w/1903
邓白氏集团:https://www.ikjzd.com/w/582
乳源云门山水上乐园娱乐项目多吗?云门山水上乐园好不好玩?:http://tour.shaoqun.com/a/63572.html
珠海拱北到深圳机场最晚的班车是几点?:http://tour.shaoqun.com/a/2362.html
亚马逊有哪些"捷径"可以提高产品排名?:https://www.ikjzd.com/home/114079

1976年德黑兰UFO事件,战斗机疯狂追逐UFO

今天讲述的UFO事件发生在1976年9月18日晚上伊朗首都德黑兰市中心有个机场叫梅赫拉巴德国际机场,当晚正在机场塔楼直行的交通管制员侯赛因皮鲁兹接到一个女士的电话,说在机场东北部看到一个发出耀眼红色黄色光的物体,几分钟后他又接到一个民众的电话,也说是看到了物体。当晚一共有4个人打电话,说了同样的事情,有的人说是一个会发光的鸟,挂下电话,皮鲁斯就拿起了双筒望远镜,朝机场东北方向望去,惊讶的是他真的看到了发光物体,离地大概2公里左右,正在缓慢的移动,他联系上了伊朗空军的助理副指挥官,报告了此事。

图片1.png 

起初认为这种现象一般都是星星,但是在皮鲁兹的一再坚持下,他也用望远镜看到该物体然后立刻引起了他的重视。因为这种亮度,这种颜色和移动速度显然不是星星,而且该空域当晚没有任何军用直升机在执行。指挥官通知了离德黑兰100多公里外马丹的一个空军基地,这个空军基地是离首都德黑兰最近的空军基地,基地紧急升空了一架战斗机前去调查,这是当时一种很先进的战斗机,出动的时间是凌晨1:30,也就是说过去了三个小时,这个物体还在夜空中,而且由于该物体亮度极高,100公里以外也能看得很清楚,当时的飞行员叫雅迪,刚升空就报告了目测能发现该物体的位置,但是由于太亮了他看不清物体的形状,通过飞机的雷达发现该物体距离地面3.6公里。

当时飞行员接到的命令,是对该物体的外观进行观测但是当它靠近离该物体20海里的时候,该物体瞬间离他更远了,这个时候他使用F4E的最大速度两马赫去追击这个物体但当他再一次靠近该物体的时候,突然战斗机的导航和无线电设备全部丧失了功能,这个时候他感觉到了一种恐惧,于是立刻掉头返回基地,但他没想到的是,当他调头飞行了一段距离后,飞机的航电设备又恢复运转了。直到最后也没有人知道那个发出亮光的东西是什么?这就是后来的德黑兰UFO事件

 


原文转载:http://tech.shaoqun.com/a/298252.html

启明星软件:https://www.ikjzd.com/w/1436

tenso:https://www.ikjzd.com/w/1552

stylenanda官网:https://www.ikjzd.com/w/1675.html


今天讲述的UFO事件发生在1976年9月18日晚上伊朗首都德黑兰市中心有个机场叫梅赫拉巴德国际机场,当晚正在机场塔楼直行的交通管制员侯赛因皮鲁兹接到一个女士的电话,说在机场东北部看到一个发出耀眼红色黄色光的物体,几分钟后他又接到一个民众的电话,也说是看到了物体。当晚一共有4个人打电话,说了同样的事情,有的人说是一个会发光的鸟,挂下电话,皮鲁斯就拿起了双筒望远镜,朝机场东北方向望去,惊讶的是他真的看
东杰智能:https://www.ikjzd.com/w/1967
欧舒丹:https://www.ikjzd.com/w/1756
从广州到深圳西冲怎么走?:http://tour.shaoqun.com/a/1501.html
去广州岭南印象园的自驾游路线是怎样的?:http://tour.shaoqun.com/a/2921.html
泰国特产有什么呢:http://tour.shaoqun.com/a/48519.html

蚂蚁金服首发887页Java面试宝典!还原真实面试情景+面试题

最近从蚂蚁金服首发了一份887页的Java面试宝典,还原了几十个面试场景和面试题,同时还总结出了面试必问的知识点和源码,让大家体验到足不出户也可以面试的感觉!

最近从蚂蚁金服首发了一份887页的Java面试宝典,还原了几十个面试场景和面试题,同时还总结出了面试必问的知识点和源码,让大家体验到足不出户也可以面试的感觉!

这份Java面试宝典划分为了:Java篇、面试篇、容器篇、并发&多线程、Spring篇、Spring Boot、开发利器、灵魂拷问、带你精进,带你飞、软技能篇!

下面为大家呈现部分内容,完整版的PDF版免费获取方式在文末!

Java篇

面试篇

容器篇、并发&多线程

Spring篇

Spring Boot

开发利器、灵魂拷问

带你精进,带你飞

软技能篇

这份蚂蚁金服内部的887页面试宝典免费获取方式:转发这篇文章+关注我,然后扫码获取!

 

原文转载:http://www.shaoqun.com/a/485856.html

凹凸曼:https://www.ikjzd.com/w/1392

cicpa:https://www.ikjzd.com/w/1375

心怡科技:https://www.ikjzd.com/w/1327


最近从蚂蚁金服首发了一份887页的Java面试宝典,还原了几十个面试场景和面试题,同时还总结出了面试必问的知识点和源码,让大家体验到足不出户也可以面试的感觉!最近从蚂蚁金服首发了一份887页的Java面试宝典,还原了几十个面试场景和面试题,同时还总结出了面试必问的知识点和源码,让大家体验到足不出户也可以面试的感觉!这份Java面试宝典划分为了:Java篇、面试篇、容器篇、并发&多线程、Sp
法瑞儿:https://www.ikjzd.com/w/412
logo免费制作:https://www.ikjzd.com/w/1998
龙田世居在哪里?它是属于哪个区的?:http://tour.shaoqun.com/a/581.html
亚马逊玩具类目销售额同比增长了400%!:https://www.ikjzd.com/home/120389
中国游客去巴厘岛需要签证吗?:http://tour.shaoqun.com/a/64583.html

卖家发货被敲诈?!平台的底线到底在哪里

卖家发货被敲诈?!平台的底线到底在哪里

小分身前言:

最近大家应该都在为黑五网一做发货准备吧,近期我们接到了一个学员卖家的反映,讲述了自己在发货的途中被平台和司机坑上了一把,甚至还被司机敲诈勒索的事。我收集了一些截图和详情,今天给大家曝光一下。为了方便大家理解,我下面会用当事卖家的视角来讲述。

标题  

为了赶船期,匆忙发货却遇上敲诈

我自己是今去年底刚刚做日本亚马逊,其实还是比较新手。因为日本站今年逆算的问题,已经来回换了好多个货代了。现在合作的这个货代因为在我的城市没有收货点,需要我自己把大货发到他们仓库。

因为才刚合作不久,他们的船期和我日常到货时间还在磨合,所以这两次发过去都卡在截单的前一天,只能找货拉拉师傅拉去他们的仓库。因为货拉拉本身运输价格就比物流高好几倍,加上要拉到货代仓库需要走高速,按照货拉拉平台规定我需要承担单程高速费(因为没有货回来所以是单程),导致整体拉货的成本很高。

虽然很贵但是找货拉拉能保证当天送到,就能在截单前赶上船期,跨境卖家应该有感触,尤其是现在这个旺季刚过卖断货的情况下,早一天补上货早一天有销量。所以这个拉货成本高我也能接受。

前几次找的货拉拉师傅还算是正常,我也放松了一些戒备,结果就在最近的一次,居然被货拉拉师傅扣货勒索了!让我对这个平台的监管和审核力度产生了严重的怀疑。

标题  

被坑经过

这次我依旧是包好了货在货拉拉app上直接下了订单,而在把货装上车的过程中,这次的货拉拉师傅就让我感到了不爽,一般货拉拉师傅都会帮着搬一下,至少我把箱子搬到车上,车内的空间他自己理一下把箱子堆起来,这次这师傅倒好,不但不帮忙,甚至还要我帮他堆好车子上的箱子。

我当时就婉拒了,心里虽然不舒服但是也没多想,这次补的货也不多就22箱,很快装完运到货代仓库,估计快的话6、7点就能到了,正好能赶上最近的船期。

到了晚上师傅发来消息到了并且发来了高速的票据,我按票据给他打过去118,但是他突然说要来回两趟的高速费,我坚决不同意,之前都是单程的高速,轮到这个师傅怎么就坐地起价了!结果他就发来照片,说扣了我一箱货没有放进货代仓库,如果我不付他双倍高速费这箱货他就拉走了。

高速票据

坐地起价还要扣我的货勒索,我当场就气炸了,马上和他说报警,没想到他一听报警反而来劲了,疯狂地挑衅我说巴不得我报。

我当场立刻打了电话报警,并且和货拉拉平台联系客服发起投诉。



然后我和货代的仓库那边也联系了,这个师傅竟然是偷偷回到他们仓库拿走了一箱货,本来货代入仓的箱数是对的,我在说了之后他们去核实才发现少了一箱。

此时我都已经气笑了,为了赶上船期我才特地发的货拉拉,现在被搞这么一出,难道这个师傅真没想过我投诉和报警会怎么样吗?难道货拉拉平台对他们这些师傅就没有惩罚吗?

结果没想到师傅果然是有点底气的,货拉拉在和我通电话的时候竟然还想和稀泥,让我乖乖出钱消灾。这个时候我甚至都气不起来了,真是啥奇葩都能遇上,当即要了货拉拉客服的工号,在平台找到了其他的投诉入口,连带着这个客服和师傅一起投诉。

现在已经不是一箱货的问题了,跨境卖家多少都用过货拉拉,这件事反映这个平台对入驻师傅的管理明显有漏洞,对于这种扣货要价的师傅竟然还有客服会和稀泥让顾客出钱,虽然最后我的事情解决了,但是这种对师傅的纵容和对顾客的漠视到底是个例,还是已经在水面下发生过无数次了呢?

今天来投稿这件事,就想提醒大家,千万别因为是大平台就放松警惕,在下单拉货的过程中,一定录音截图留好证据。(现在我的投诉记录在货拉拉app后台也查不到了,只有当时和客服的对话)

小分身结语:

货拉拉在跨境卖家中还是比较常用的平台,但是和滴滴一样,作为司机和用户中间的平台方,都需要做好对司机的筛选和监督,显然这个案例里面货拉拉这方面的工作是缺失的。

我查了一些网上的案例,也咨询了一些用过货拉拉的学员,发现这样的冲突并不是个例,而且卖家作为委托方居然经常是利益受损的一方。我也在此和大家建议,货拉拉肯定是可以用,但是为了自己的利益,一定要留好证据。

你有遇到过什么发货或者其他环节遇到的奇葩想要曝光或者分享吗?欢迎大家到留言区回复,或者找我曝光。


来源:跨境者商学院

文章来源:https://www.ikjzd.com/home/132706

贝恩投资公司:https://www.ikjzd.com/w/1336

google correlate:https://www.ikjzd.com/w/1887

东西网:https://www.ikjzd.com/w/1238

camel:https://www.ikjzd.com/w/331.html

启明星软件:https://www.ikjzd.com/w/1436

卖家发货被敲诈?!平台的底线到底在哪里

为了赶船期,匆忙发货却遇上敲诈

windows安装redis__redis临时服务__redis自定义安装__redis主从服务器

客户端以及服务端安装

https://github.com/MicrosoftArchive/redis/releases/tag/win-3.2.100

 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 D 盘redis文件夹下。

 

 

添加php扩展

extension = php_redis.dll

注意:extension = php_igbinary.dll一定要放在extension = php_redis.dll的前面,否则此扩展不会生效

 

一.Redis临时服务

1.打开cmd,进入到刚才解压到的目录,启动临时服务:redis-server.exe redis.windows.conf  (备注:通过这个命令,会创建Redis临时服务,不会在window Service列表出现Redis服务名称和状态,此窗口关闭,服务会自动关闭。)

 

 

 

 注意:一开始我直接在路径下使用powershell,结果报错:

无法将"redis-server"项识别为 cmdlet、函数、脚本文件或可运行程 序的名称

 

 换cmd完美支持,win10的windows powershell还是有些兼容性问题

 

2.打开另一个cmd窗口,客户端调用:redis-cli.exe -h 127.0.0.1 -p 6379

 

 

 二.Redis自定义windows服务安装

1.进入Redis安装包目录,安装服务:redis-server.exe --service-install redis.windows.conf --service-name redisserver1 --loglevel verbose

 

 win+r -> services.msc,可以看到服务安装成功

 

 

安装服务:redis-server.exe --service-install redis.windows.conf --service-name redisserver1 --loglevel verbose

启动服务:redis-server.exe  --service-start --service-name redisserver1

停止服务:redis-server.exe  --service-stop --service-name redisserver1

卸载服务:redis-server.exe  --service-uninstall--service-name redisserver1

 

补充:我在启动服务的时候出现报错:

命令行报错是这个样子滴

 

如果在服务中手动开启,报错是:

Redis Windows 服务启动异常 错误码1067

原因是我在phpstudy中也开启了redis,导致冲突了。把phpstudy的redis关掉就好了。

 

 

三. 主从服务器

将g盘下新建一个文件夹叫redis2,把redis文件夹的东西拷贝到redis2文件夹下,将redis.windows.conf配置文件中的ip 和端口号改一下,然后按照上面的步骤安装一个服务即可

 

原文转载:http://www.shaoqun.com/a/485844.html

东西网:https://www.ikjzd.com/w/1238

打折网站:https://www.ikjzd.com/w/74

vincent:https://www.ikjzd.com/w/1642


客户端以及服务端安装https://github.com/MicrosoftArchive/redis/releases/tag/win-3.2.100Redis支持32位和64位。这个需要根据你系统平台的实际情况选择,这里我们下载Redis-x64-xxx.zip压缩包到D盘redis文件夹下。添加php扩展extension=php_redis.dll注意:extension=php_igbi
indiegogo:https://www.ikjzd.com/w/265
韩国naver:https://www.ikjzd.com/w/1727
九州港买船票到蛇口港需要持身份证吗?要不要提前买票?:http://tour.shaoqun.com/a/37725.html
揭秘|关于亚马逊A9算法的几大谜团:https://www.ikjzd.com/home/116522
SocialBook帮你扫除网红营销乱象!:https://www.ikjzd.com/home/98177

通拓Q3财报:前三季度营收56.77亿元,客单价达203元

通拓Q3财报:前三季度营收56.77亿元,客单价达203元

10月28日消息,义乌华鼎锦纶股份有限公司(以下简称"华鼎股份")发布其2020年第三季度财报。

报告显示,今年前三季度华鼎股份营收72亿元,净利润1.19亿元,同比减少53.77%。

image.png

值得注意的是,作为跨境大卖通拓的母公司,通拓本次营收情况也展示出来。首先,在出口电商领域,通拓的主营品类仍然在数码、服饰以及家居。其中家居占到了65%的GMV份额。

image.png

不过需要注意的是,通拓仍然依靠的是第三方电商平台比如亚马逊,自营网站的贡献率很低,总计仅为8000万元。

image.png

同时,在今年的前三季度,通拓的出口订单数达到2.5万个,客单价为203元。

image.png

根据今年8月华鼎股份发布的半年财报,1-6月跨境电商业务板块实现营业收入23.06亿元,同比增长 168.91%,净利润1.03亿元,同比增长 30.55%。根据上述数据对比,Q3华鼎股份跨境业务的营收可能达到了33.71(56.77-23.06)亿元。

但也需要注意的是截至目前,华鼎股份涉及违规借款金额2.59亿元,涉及违规担保金额1.3亿元。因涉嫌违规借 款及违规担保,债权人对公司提起诉讼,涉及诉讼金额共计19,997.50万元,上述违规担保、违规借款事项已进入诉讼程序的,尚未结案。

来源:雨果网

文章来源:https://www.ikjzd.com/home/132719

宝付:https://www.ikjzd.com/w/539

asiabill:https://www.ikjzd.com/w/1014

camel:https://www.ikjzd.com/w/331.html

haofang:https://www.ikjzd.com/w/1046

萌店:https://www.ikjzd.com/w/1538

通拓Q3财报:前三季度营收56.77亿元,客单价达203元

义乌华鼎锦纶股份有限公司(以下简称"华鼎股份")发布其2020年第三季度财报。,报告显示,今年前三季度华鼎股份营收72亿元,净利润1.19亿元,同比减少53.77%。

Hystrix 配置参数全解析

前言


不久前在部门周会上分享了 Hystrix 源码解析之后,就无奈地背上了专家包袱,同事们都认为我对 Hystrix 很熟,我们接触 Hystrix 更多的还是工作中的使用和配置,所以很多人一遇到 Hystrix 的配置问题就会过来问我。为了不让他们失望,我把 Hystrix 的 配置文档 仔细看了一遍,将有疑问的点通过翻源码、查官方 issue、自己实验的方式整理了一遍,这才对 Hystrix 的配置有了一定的了解。

在了解这些配置项的过程中,我也发现了很多坑,平常我们使用中认为理所应当的值并不会让 Hystrix 如期望工作,没有经过斟酌就复制粘贴的配置会让 Hystrix 永远不会起作用。于是写下本文,希望能帮助小伙伴们掌握 Hystrix。

HystrixCommand


配置方式

我们的配置都是基于 HystrixCommand 的,我们通过在方法上添加 @HystrixCommand 注解并配置注解的参数来实现配置,但有的时候一个类里面会有多个 Hystrix 方法,每个方法都是类似配置的话会冗余很多代码,这时候我们可以在类上使用 @DefaultProperties 注解来给整个类的 Hystrix 方法设置一个默认值。

配置项

下面是 HystrixCommand 支持的参数,除了 commandKey/observableExecutionMode/fallbackMethod 外,都可以使用 @DefaultProperties 配置默认值。

  • commandKey:用来标识一个 Hystrix 命令,默认会取被注解的方法名。需要注意:Hystrix 里同一个键的唯一标识并不包括 groupKey,建议取一个独一二无的名字,防止多个方法之间因为键重复而互相影响。

  • groupKey:一组 Hystrix 命令的集合, 用来统计、报告,默认取类名,可不配置。

  • threadPoolKey:用来标识一个线程池,如果没设置的话会取 groupKey,很多情况下都是同一个类内的方法在共用同一个线程池,如果两个共用同一线程池的方法上配置了同样的属性,在第一个方法被执行后线程池的属性就固定了,所以属性会以第一个被执行的方法上的配置为准。

  • commandProperties:与此命令相关的属性。

  • threadPoolProperties:与线程池相关的属性,

  • observableExecutionMode:当 Hystrix 命令被包装成 RxJava 的 Observer 异步执行时,此配置指定了 Observable 被执行的模式,默认是 ObservableExecutionMode.EAGER,Observable 会在被创建后立刻执行,而 ObservableExecutionMode.EAGER模式下,则会产生一个 Observable 被 subscribe 后执行。我们常见的命令都是同步执行的,此配置项可以不配置。

  • ignoreExceptions:默认 Hystrix 在执行方法时捕获到异常时执行回退,并统计失败率以修改熔断器的状态,而被忽略的异常则会直接抛到外层,不会执行回退方法,也不会影响熔断器的状态。

  • raiseHystrixExceptions:当配置项包括 HystrixRuntimeException 时,所有的未被忽略的异常都会被包装成 HystrixRuntimeException,配置其他种类的异常好像并没有什么影响。

  • fallbackMethod:方法执行时熔断、错误、超时时会执行的回退方法,需要保持此方法与 Hystrix 方法的签名和返回值一致。

  • defaultFallback:默认回退方法,当配置 fallbackMethod 项时此项没有意义,另外,默认回退方法不能有参数,返回值要与 Hystrix方法的返回值相同。

commandProperties


配置方式

Hystrix 的命令属性是由 @HystrixProperty 注解数组构成的,HystrixProperty 由 name 和 value 两个属性,数据类型都是字符串。

以下将所有的命令属性分组来介绍。

线程隔离(Isolation)

  • execution.isolation.strategy: 配置请求隔离的方式,有 threadPool(线程池,默认)和 semaphore(信号量)两种,信号量方式高效但配置不灵活,我们一般采用 Java 里常用的线程池方式。

  • execution.timeout.enabled:是否给方法执行设置超时,默认为 true。

  • execution.isolation.thread.timeoutInMilliseconds:方法执行超时时间,默认值是 1000,即 1秒,此值根据业务场景配置。

  • execution.isolation.thread.interruptOnTimeout: execution.isolation.thread.interruptOnCancel:是否在方法执行超时/被取消时中断方法。需要注意在 JVM 中我们无法强制中断一个线程,如果 Hystrix 方法里没有处理中断信号的逻辑,那么中断会被忽略。

  • execution.isolation.semaphore.maxConcurrentRequests:默认值是 10,此配置项要在 execution.isolation.strategy 配置为 semaphore 时才会生效,它指定了一个 Hystrix 方法使用信号量隔离时的最大并发数,超过此并发数的请求会被拒绝。信号量隔离的配置就这么一个,也是前文说信号量隔离配置不灵活的原因。

统计器(Metrics)

滑动窗口: Hystrix 的统计器是由滑动窗口来实现的,我们可以这么来理解滑动窗口:一位乘客坐在正在行驶的列车的靠窗座位上,列车行驶的公路两侧种着一排挺拔的白杨树,随着列车的前进,路边的白杨树迅速从窗口滑过,我们用每棵树来代表一个请求,用列车的行驶代表时间的流逝,那么,列车上的这个窗口就是一个典型的滑动窗口,这个乘客能通过窗口看到的白杨树就是 Hystrix 要统计的数据。

: bucket 是 Hystrix 统计滑动窗口数据时的最小单位。同样类比列车窗口,在列车速度非常快时,如果每掠过一棵树就统计一次窗口内树的数据,显然开销非常大,如果乘客将窗口分成十分,列车前进行时每掠过窗口的十分之一就统计一次数据,开销就完全可以接受了。 Hystrix 的 bucket (桶)也就是窗口 N分之一 的概念。

  • metrics.rollingStats.timeInMilliseconds:此配置项指定了窗口的大小,单位是 ms,默认值是 1000,即一个滑动窗口默认统计的是 1s 内的请求数据。

  • metrics.healthSnapshot.intervalInMilliseconds:它指定了健康数据统计器(影响 Hystrix 熔断)中每个桶的大小,默认是 500ms,在进行统计时,Hystrix 通过 metrics.rollingStats.timeInMilliseconds / metrics.healthSnapshot.intervalInMilliseconds 计算出桶数,在窗口滑动时,每滑过一个桶的时间间隔时就统计一次当前窗口内请求的失败率。

  • metrics.rollingStats.numBuckets:Hystrix 会将命令执行的结果类型都统计汇总到一块,给上层应用使用或生成统计图表,此配置项即指定了,生成统计数据流时滑动窗口应该拆分的桶数。此配置项最易跟上面的 metrics.healthSnapshot.intervalInMilliseconds 搞混,认为此项影响健康数据流的桶数。 此项默认是 10,并且需要保持此值能被 metrics.rollingStats.timeInMilliseconds 整除。

  • metrics.rollingPercentile.enabled:是否统计方法响应时间百分比,默认为 true 时,Hystrix 会统计方法执行的 1%,10%,50%,90%,99% 等比例请求的平均耗时用以生成统计图表。

  • metrics.rollingPercentile.timeInMilliseconds:统计响应时间百分比时的窗口大小,默认为 60000,即一分钟。

  • metrics.rollingPercentile.numBuckets:统计响应时间百分比时滑动窗口要划分的桶用,默认为6,需要保持能被metrics.rollingPercentile.timeInMilliseconds 整除。

  • metrics.rollingPercentile.bucketSize:统计响应时间百分比时,每个滑动窗口的桶内要保留的请求数,桶内的请求超出这个值后,会覆盖最前面保存的数据。默认值为 100,在统计响应百分比配置全为默认的情况下,每个桶的时间长度为 10s = 60000ms / 6,但这 10s 内只保留最近的 100 条请求的数据。

熔断器(Circuit Breaker)

  • circuitBreaker.enabled:是否启用熔断器,默认为 true;

  • circuitBreaker.forceOpen: circuitBreaker.forceClosed:是否强制启用/关闭熔断器,强制启用关闭都想不到什么应用的场景,保持默认值,不配置即可。

  • circuitBreaker.requestVolumeThreshold:启用熔断器功能窗口时间内的最小请求数。试想如果没有这么一个限制,我们配置了 50% 的请求失败会打开熔断器,窗口时间内只有 3 条请求,恰巧两条都失败了,那么熔断器就被打开了,5s 内的请求都被快速失败。此配置项的值需要根据接口的 QPS 进行计算,值太小会有误打开熔断器的可能,值太大超出了时间窗口内的总请求数,则熔断永远也不会被触发。建议设置为 QPS * 窗口秒数 * 60%

  • circuitBreaker.errorThresholdPercentage:在通过滑动窗口获取到当前时间段内 Hystrix 方法执行的失败率后,就需要根据此配置来判断是否要将熔断器打开了。 此配置项默认值是 50,即窗口时间内超过 50% 的请求失败后会打开熔断器将后续请求快速失败。

  • circuitBreaker.sleepWindowInMilliseconds:熔断器打开后,所有的请求都会快速失败,但何时服务恢复正常就是下一个要面对的问题。熔断器打开时,Hystrix 会在经过一段时间后就放行一条请求,如果这条请求执行成功了,说明此时服务很可能已经恢复了正常,那么会将熔断器关闭,如果此请求执行失败,则认为服务依然不可用,熔断器继续保持打开状态。此配置项指定了熔断器打开后经过多长时间允许一次请求尝试执行,默认值是 5000。

其他(Context/Fallback)

  • requestCache.enabled:是否启用请求结果缓存。默认是 true,但它并不意味着我们的每个请求都会被缓存。缓存请求结果和从缓存中获取结果都需要我们配置 cacheKey,并且在方法上使用 @CacheResult 注解声明一个缓存上下文。

  • requestLog.enabled:是否启用请求日志,默认为 true。

  • fallback.enabled:是否启用方法回退,默认为 true 即可。

  • fallback.isolation.semaphore.maxConcurrentRequests:回退方法执行时的最大并发数,默认是10,如果大量请求的回退方法被执行时,超出此并发数的请求会抛出 REJECTED_SEMAPHORE_FALLBACK 异常。

threadPoolProperties


配置方式

线程池的配置也是由 HystrixProperty 数组构成,配置方式与命令属性一致。

配置项

  • coreSize:核心线程池的大小,默认值是 10,一般根据 QPS * 99% cost + redundancy count 计算得出。

  • allowMaximumSizeToDivergeFromCoreSize:是否允许线程池扩展到最大线程池数量,默认为 false;

  • maximumSize:线程池中线程的最大数量,默认值是 10,此配置项单独配置时并不会生效,需要启用 allowMaximumSizeToDivergeFromCoreSize项。

  • maxQueueSize:作业队列的最大值,默认值为 -1,设置为此值时,队列会使用 SynchronousQueue,此时其 size 为0,Hystrix 不会向队列内存放作业。如果此值设置为一个正的 int 型,队列会使用一个固定 size 的 LinkedBlockingQueue,此时在核心线程池内的线程都在忙碌时,会将作业暂时存放在此队列内,但超出此队列的请求依然会被拒绝。

  • queueSizeRejectionThreshold:由于 maxQueueSize 值在线程池被创建后就固定了大小,如果需要动态修改队列长度的话可以设置此值,即使队列未满,队列内作业达到此值时同样会拒绝请求。此值默认是 5,所以有时候只设置了 maxQueueSize 也不会起作用。

  • keepAliveTimeMinutes:由上面的 maximumSize,我们知道,线程池内核心线程数目都在忙碌,再有新的请求到达时,线程池容量可以被扩充为到最大数量,等到线程池空闲后,多于核心数量的线程还会被回收,此值指定了线程被回收前的存活时间,默认为 2,即两分钟。

工作方式

Hystrix 内线程池的使用是基于 Java 内置线程池的简单包装,通常有以下三种状态:

  • 如果请求量少,达不到 coreSize,通常会使用核心线程来执行任务。

  • 如果设置了 maxQueueSize,当请求数超过了 coreSize, 通常会把请求放到 queue 里,待核心线程有空闲时消费。

  • 如果 queue 长度无法存储请求,则会创建新线程执行直到达到 maximumSize 最大线程数,多出核心线程数的线程会在空闲时回收。

小结

  原文地址:
https://www.cnblogs.com/zhenbianshu/p/9630167.html

原文转载:http://www.shaoqun.com/a/485832.html

ifttt:https://www.ikjzd.com/w/956

自贸区跨境通网站:https://www.ikjzd.com/w/1329

海鹰数据:https://www.ikjzd.com/w/2539


前言不久前在部门周会上分享了Hystrix源码解析之后,就无奈地背上了专家包袱,同事们都认为我对Hystrix很熟,我们接触Hystrix更多的还是工作中的使用和配置,所以很多人一遇到Hystrix的配置问题就会过来问我。为了不让他们失望,我把Hystrix的配置文档仔细看了一遍,将有疑问的点通过翻源码、查官方issue、自己实验的方式整理了一遍,这才对Hystrix的配置有了一定的了解。在了解这
dhl:https://www.ikjzd.com/w/516
鸥鹭:https://www.ikjzd.com/w/2568
春节旅游去梵蒂冈博物馆怎么样?:http://tour.shaoqun.com/a/70401.html
怀集燕岩门票团购价格?肇庆怀集燕岩多少人可以团购?:http://tour.shaoqun.com/a/19046.html
还去卖口罩?赶着成为被收割的韭菜?:https://www.ikjzd.com/home/118151

nacos 作为配置中心

  通过前两篇文章大家也看出nacos从使用角度来说功能强大,我们现有的配置支持较友好,对项目的侵入性较小。这也是我继续研究他的动力,看看到底是否能引入到项目中来。下面三个主题是我接下来研究的主要方向:

  • 选举机制
  • 数据同步机制
  • 性能     

    nacos作为配置中心的功能是基于raft协议来实现的。为什么要选raft呢?

    答案只有两个字:简单。相比paxos协议来说,raft协议要简单的多。我们日常开发做方案时也应如此,简洁有效方案省时省力、易于实现、易于维护。我们逐渐培养自己从复杂的业务中抽象出最简单直接的方案的能力,培养自己化繁为简的能力。

    接下来不在废话,直接上raft协议中选举机制部分。    

    在raft中,任何时候一个服务器可以扮演下面角色之一:

  1. Leader:  所有请求的处理者,Leader副本接受client的更新请求,本地处理后再同步至多个其他副本;
  2. Follower:  请求的被动更新者,从Leader接受更新请求,然后写入本地日志文件
  3. Candidate候选人:  如果Follower副本在一段时间内没有收到Leader副本的心跳,则判断Leader可能已经故障,此时启动选主过程,此时副本会变成Candidate状态,直到选主结束。
  4. term:这根民主社会的选举很像,每一届新的履职期称之为一届任期  
 

    看到了这里,大家觉的raft的选举过程是怎样的呢?此处可以心里默想5分钟,已检验一下自己做方案的能力。然后再看下牛人是怎么实现的,从对比中学习人家的思路。在做事儿之前要现有自己的观念和看法,先思考一番,先思而后行。这样做有两个好处:

    1、不会盲从,能去其缺点,学习有点;

    2、能锻炼自己的做事儿做方案的能力,能让自己更加独立,不依赖别人,成为团队的核心、顶梁柱。

     选举过程如下:

    

  1. 系统刚刚启动,所有节点的任期都是0,大家的role都是follower
  2. 一个启动的节点第一个触发未检测到心跳超时,自增任期为1,并且重新计时(投票开始时间),给自己投一票,然后向所有的其它节点发起投票
  3. 其它节点当前的任期都为0,且日志也没空,肯定会投票给它,而且这些节点因为收到了candidate的投票选举,清零自己的心跳空白等待时间,未超时前不会发起投票,从而避免多重投票导致无效投票的可能性
  4. 第一个发起投票的节点收到半数投票,成为leader。
     

    1、每次follower收到leader的一次HeartBeat,都会清零自己的心跳计时器,重新开始计时,如果当前心跳计时器超时了,仍然未收到leader的心跳,就会从follower变成candidate

    2、自增当前任期,且开始计时(选举计时),向其它节点发起投票

    3、其它节点会比较 任期和日志的序号,至少不能比自己的数据旧才会投票给第一个发起投票的节点

    4、超过半数节点投票成功,才会成为leader,否则要等待选举超时,再发起第二轮投票。

    动态过程: https://raft.github.io/

     看到这里大家是否有疑问?     

    个人的疑问:

        选取出了主节点之后,从节点如何知道谁是主节点?

        任期的时长改怎么设置呢?所有节点都一样?

    从源码给大家解释nacos的实现过程。

    raft协议的实现都在RaftCore这个类中。

    

    Raft中有两个子类分被负责选举和心跳。

    1、选举的入口

 public static final long TICK_PERIOD_MS = TimeUnit.MILLISECONDS.toMillis(500L);

public void init() throws Exception {

//省略其他逻辑代码
....

Loggers.RAFT.info("finish to load data from disk, cost: {} ms.", (System.currentTimeMillis() - start));

GlobalExecutor.registerMasterElection(new MasterElection());
GlobalExecutor.registerHeartbeat(new HeartBeat());

Loggers.RAFT.info("timer started: leader timeout ms: {}, heart-beat timeout ms: {}",
GlobalExecutor.LEADER_TIMEOUT_MS, GlobalExecutor.HEARTBEAT_INTERVAL_MS);
}

public static void registerMasterElection(Runnable runnable) {
NAMING_TIMER_EXECUTOR.scheduleAtFixedRate(runnable, 0, TICK_PERIOD_MS, TimeUnit.MILLISECONDS);
}

public static void registerHeartbeat(Runnable runnable) {
NAMING_TIMER_EXECUTOR.scheduleWithFixedDelay(runnable, 0, TICK_PERIOD_MS, TimeUnit.MILLISECONDS);
}

    可以看出每隔500ms就会触发一次选举任务和心跳任务

    2、接下来看一下心跳是如何做的

   

   

    看源码"1、"处可以发现,在leaderDue(leader任期)内是不会进行选举的。只有leaderDue到期之后才会重置leaderDue和heartBeatDue(心跳检测时长),然后发送起投票。这里有个细节可以关注下,在代码"3、"处有一个随机值,大家有没有想过为什么要加入这个随机值?

    答:随机值是为了让每个节点的leaderDueMs不同,也就是每个节点的leader任期不一样,从而避免大家同时发起投票,提升选举leader的成功率。换一种说法就是,某个节点leaderDueMs先减为0,先自增term,然后后发起投票,这是该节点由于term+1比其他节点term值大,从而成功成为leader。如果不加随机值,大家同时发起头票,同时term+1 这样在这一轮选举中就不会有leader。

    3、选举具体过程

    

    

    发起头票的过程为头票发起方,向不包含自己的其他节点发起头票请求,其他节点接收到请求后,进行上述代码处"3、"处的处理,看一下term是否比自己的term他,大则投给他,然后然后将自己的term设置为要发起头票请求的term,重置leaderDueMs(为了避免自己再发起一轮头票请求)。最后将头票结果返回给头票发起方。头票发起方接收到头票结果,然后根据结果有半数头票的leader成为真正的leader。选举到此结束。

    那么问题来了,其他节点怎么知道这个头票结果呢?如果是你该以何种方式通知其他节点呢?

    这时候其实由于其他节点都选某个节点为主,然后自己leaderDueMs重置,不会发起选举了。

    4、心跳过程

    

    第一步和选举类似,只有heartBeatDueMs到期之后才会发起心跳处理。这里的心跳处理周期远远小于选举的term周期。而且再心跳处理过程中心跳发起方和接收方都会重置选举时间。通过时间的延长来阻止各个节点发起头票请求。

    上面代码地四处解决了某一节点成为leader之后,如何将这个消息通知给其他节点,答案就行通过心跳的方式将leader传给其他节点,其他节点接收到心跳请求之后,更新leader。接收心跳请求的代码如下。

 

    到此选举机制介绍完毕。

    此时有我有产生三个新的问题:

        1、follower 超时,有问题吗?

        2、leader 超时,有哦问题吗?

        3、脑裂问题该如何处理?

    问题一:

        follower超时,自身会重新发起选举,如果与其他节点不通,则会一直处于选举状态,如果超时一段时间后恢复,会通过选举成为新的leader或者(接收心跳消息完成了选举),或者成为原来leader的follower(在发去选举请求之前接收到了心跳消息,成为follower)。这时候会存在两个leader,但是由于旧leader的term较小,发送心跳消息不起效果,最终被新的leader同步为follower。该结论代验证,仅仅是分析结论

        又产生新问题,有两个leader会影响配置信息的发布吗?

    问题二:

        leader超时重新选举,差生新的leader。旧leader如果恢复了,也会通过心跳,被同步为follower。

    问题三:

         脑裂问题通过问题一和问题二的答案可以看出,通过时间续约和term比较最终旧leader被同步为follower。

原文转载:http://www.shaoqun.com/a/485835.html

prime:https://www.ikjzd.com/w/129

1淘网:https://www.ikjzd.com/w/1698

丰趣海淘:https://www.ikjzd.com/w/1716


通过前两篇文章大家也看出nacos从使用角度来说功能强大,我们现有的配置支持较友好,对项目的侵入性较小。这也是我继续研究他的动力,看看到底是否能引入到项目中来。下面三个主题是我接下来研究的主要方向:选举机制数据同步机制性能nacos作为配置中心的功能是基于raft协议来实现的。为什么要选raft呢?答案只有两个字:简单。相比paxos协议来说,raft协议要简单的多。我们日常开发做方案时也应如此,
徐家骏:https://www.ikjzd.com/w/1803
modcloth:https://www.ikjzd.com/w/1271
关于亚马逊美日欧鞋码新规,这份指南一定要看!:https://www.ikjzd.com/home/107696
欢乐谷几点开门,深圳欢乐谷什么时候开门?:http://tour.shaoqun.com/a/40031.html
台湾当局将赴京旅游疫情警示调降为"注意":http://tour.shaoqun.com/a/36793.html