2021年1月26日

源码学习-Number类

作者:大董

java.lang.Number是一个抽象的,在java的数字生态系统中至关重要的类。该类主要被定义用来进行对基础数值类型进行包装,以使其具有一个对象的各种属性。Number类的源码去掉注释后如下:

从类的定义看,Number类的子类必须提供将某个数值转换为 double、float、int、long、byte 和 short 的方法。类关系如图:

Number类是数值类BigDecimal、BigInteger、Byte、Double、Float、Integer、Long 和 Short 类的超类。以Integer类为例,打开In[……]


进一步了解
2021年1月23日

SQS队列延迟那些事

由于各种”另类“的需求,有时候消息不能直接扔到Queue里去。

于是就有了下面这几个概念:

Message Timer

Visibility Timeout

Delay Queue

先从Delay Queue来说。

你可以理解为他是和正常Queue完全”不相关“的另一个Queue。

如果Delay Queue被启用的话,那么所有消息都要先在Delay Queue里停留规定的时间,才被移动到正常的Queue中,被consumer们看到。

所以启用了Delay Queue后,所有消息都要等。

默认0秒,最长15分钟。

Messag[……]


进一步了解
2021年1月23日

Auto Scale Group对Unhealthy的实例是“先停后启“还是”先启后停“?

这个问题我在学ASG的时候就一直在想了。

对于那些”有问题“的实例,如果”先停后启“的话,会出现能力不足的情况。如果”先启后停“的话,又会出现实例数量超额的情况。

我理解的是,如果一个实例被认为”有问题“,那其实其他实例已经开始承受更多的流量了。那删掉它的过程,并不会影响任何已经在发生的事情。所以应该”先停后启“。

而对于Across AZs来说,情况却是相反的。这里保证的是Balance,因此出现问题后,先想着补上去,然后再处理unhealthy的实例。

此时AWS能够允许资源实例数量小超10%……[……]


进一步了解
2021年1月23日

一条Direct Connect如何最简单地连接多个Region的VPC?

我们知道,想让DC接入VPC的话,就用Private VFI即可。

此时如果我们在另一个Region还有一个VPC想去连接,是需要创建VPC peering吗?

不,最简单的方法就是直接再在那个VPC里创建一个private VFI,即可。

Using Direct Connect Gateway, you do not need to have connections in multiple AWS Regions to access your Amazon VPCs in those AWS Regions, and use one (or more) private v[……]


进一步了解
2021年1月23日

Route 53 Inbound & Outbound Endpoint

上次去考试的时候,有一道题提到了On-Prem DNS Server + Route53。我知道应该使用Route53 Private DNS zone,但问题是,应该使用Inbound还是Outbound Endpoint呢?

有这个问题出现,其实只能说明我本身并不懂Route53 Inbound Endpoint和Outbound Endpoint都是干什么的。

首先我们要知道,Endpoint的出现,其实就是为了更好地连接两个资源或者网络,比如VPC Endpoint啦。那Route53的Endpoint的目的也是更好地连接DNS服务器,让DNS请求可以互通。

再者,我[……]


进一步了解
2021年1月23日

IOPS和Throughput

EBS: 一般容量大小不超过16TB

  • GP2:
    • 【IOPS】100 – 3000, max 16k (+3000/TB)
  • Previsioned IOPS:
    • 【IOPS】100 – 64k <- 要注意,虽然很高,但也就64k
  • Throughput:
    • 【Throughput】500 MB/s

EC2 Instance Store: 物理盘、非常高的IOPS(因为可以是物理,而且可以是SSD)、临时盘。容量大小不超过7.5TB

  • 【IOPS】最低也有32.5k,最高1600k……记成大于100k即可。[……]


进一步了解
2021年1月19日

如何正确地部署AWS证书?

我这个博客的证书要过期了,因此我在阿里云上又申请了DV证书。免费的版本是不支持通配符的(*.daylights.cn),所以还是得一个一个Domain一张一张地去申请。

拿我这个网站举例,我申请了一张www.daylights.cn的证书,又申请了一张www.kevin-wang.com的证书。

在申请这两张证书的同时,我突然想去尝试一下AWS的证书。登陆ACM后发现申请public的证书是免费的,包括可以通配符证书。

不过限制也是有的,只能用在AWS的服务上。

那么哪些服务可以用上证书呢?

简单的回答是CloudFront和ALB。当然证书可以被用在多个地方,但[……]


进一步了解
2021年1月11日

AWS Logs存哪

如图:

几个问题:

  1. 基本所有的log都能存S3,为什么Route 53不能?
  2. CloudWatch是来记录分析告警行为的,这就是为什么CloudTrail、VPC flow、Route53都可以发给CloudWatch,但为什么LB、S3 Access和CloudFront Access 不发?

一些自己的理解:

存CloudWatch一般是要求“实时”。存S3一般不必实时,隔段时间也是可以的,比如每5分钟。

所以我猜,CloudTrail、VPC FLow和DNS查询这样行为,都是“实时”记录的。

NLB本身可以直接有CloudWatch[……]


进一步了解
2021年1月11日

ALB和NLB的区别是什么?如何禁止一个源IP?

我对ALB和NLB的理解一直比较简单:一个是“七层”的LB,一个是“三层”的LB。

也就是说,ALB看的是高层协议里面的内容,比如HTTP的Method。而NLB只能对网络层或者传输层的东西进行判断。

但这里隐含了一点,就是ALB的“七层”的意思中,包含着“网络层中断”的意思。

可以理解为Proxy。

换句话说,用了ALB,那么后边EC2收到流量的时候,看到的是ALB的IP(私有),而不是源客户端的。

而NLB在这里是把网络包转发,相当于路由器。也就是EC2收到流量看到的是源客户端的IP。

这个很重要。这个代表着,EC2自己做针对IP的防护不是很推荐,因为不[……]


进一步了解
2020年12月23日

Kinesis Datastream,Firehose,Agent各是什么?

Kinesis家族,都是为steam而生。

什么是stream?你可以理解为”大量的不间断的数据”。

Kinesis其实有三个成员:Kinesis Data Stream, Kinesis Data Analytic, Kinesis Data Firehose。

如果把他们三个看成给一个整体,我最开始的理解如下:

Stream负责收,Analytic负责分析,Firehose负责存。

但这样说太理想化了。因为这三个里任何一个组件,都是有入和出两个对象。

对于Stream来说,它的producer是AWS SDK、KPL(Kinesis Producer L[……]


进一步了解
2020年12月23日

如何搭建Hybrid?比如DNS怎么配置?AD怎么配置?File Share怎么配置?数据怎么迁移?怎么监控过程?

Hybrid,是很多公司从On-Prem到云的过渡过程。

当然,有些公司会从Hybrid转到pure Cloud,但有些公司永远不会 – 因为有些数据必须要存在本地,不能放到云里。

但只要是从On-Prem开始往云里转移,就必然会遇到如何搭建Hybrid这个问题。

网络

首先如何连接On-Prem和AWS的网络?Direct Connect是第一选择,但DC”特别容易“坏,所以还要有个site-to-site VPN来做备份。

DNS呢,得挪到Route53上,创建Route53 private hosted zone,来解析内部网络的请求。看个图:

图中看[……]


进一步了解
2020年12月23日

RTO和RPO怎么记?AWS的各种组件应该怎么Backup?

这里主要想说明的是DR,即灾难恢复。

什么备份啊、高可用啊,都是为了哪天突然停电了被雷击了地震了外星人入侵了等等特殊情况准备的。

RPO,P是Point。咔叽断电了,重启后,你到底能恢复到哪个”点“。换句听得懂的话,就是你最后一次备份的数据是什么时候。

所以提到RPO,记得看你的备份周期。5分钟?15分钟?还是1小时?

然后RTO,T是Time。咔叽断电了,重启后,你”多久“能恢复服务?

为什么这俩名字总混呢?因为中文里,Time也叫”点“……

所以要想记得清楚,记住,P是备份点,是游戏里的”存档点“,打撸啊撸里面的”出生点“……

T就是多久。[……]


进一步了解
2020年12月23日

Sticky Session是什么?

记得ELB是做什么的么?分发流量给后端的资源。

所以一般来说是平均分配的,也就是下图:

这样做可能有一个坏处:若应用需要所有的数据,比如EC2需要接到Web Browser的所有数据,这样做是有问题的。

sticky session解决的就是这个。它以session为单位,在第一次分配给一个资源后,以后这个session中的所有包,都转向那个资源。

如图:

由于是以session为单位,所以ELB和CLB会有sticky session,而ALB使用cookies的方法,来实现sticky session。[……]


进一步了解