Monday, July 15, 2019

TestNG

TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器)。


@BeforeSuite:        被注释的方法将在所有测试运行前运行
@AfterSuite:        被注释的方法将在所有测试运行后运行
@BeforeTest:        被注释的方法将在测试运行前运行
@AfterTest:        被注释的方法将在测试运行后运行
@BeforeGroups:        被配置的方法将在列表中的gourp前运行。这个方法保证在第一个属于这些组的测试方法调用前立即执行。
@AfterGroups:        被配置的方法将在列表中的gourp后运行。这个方法保证在最后一个属于这些组的测试方法调用后立即执行。
@BeforeClass:        被注释的方法将在当前类的第一个测试方法调用前运行。
@AfterClass:        被注释的方法将在当前类的所有测试方法调用后运行。
@BeforeMethod:        被注释的方法将在每一个测试方法调用前运行。
@AfterMethod:        被注释的方法将在每一个测试方法调用后运行。


Ref:
https://blog.csdn.net/chaoren2011/article/details/38932967

Monday, July 8, 2019

AWS Athena

用SQL直接在S3中轻松分析数据。类似于Redshift,文件存在硬盘,然后写SQL去query。当然Athena也并不需要source一定要在S3,可以直接写SQL创表。

功能
Athena是无服务器的,因此您无需设置或管理任何基础设施,且只需为您运行的查询付费
Athena分析在S3中存储的非结构化、半结构化和结构化数据包括CSV、JSON 或列式数据格式
Athena 可与 Amazon QuickSight 集成,轻松实现数据可视化。

Athena采用称作基于读取的架构的方法,这意味着,架构将在您执行查询时投影到您的数据上。
这样就无需加载或转换数据。
Athena 不会修改您在 Amazon S3 中的数据。

底层API
用Apache Hive实现
jobId改成int会出错

CREATE EXTERNAL TABLE IF NOT EXISTS default.docu_jobs (
  `jobId` string,
  `title` string,
  `url` string,
  `location` string,
  `runDate` string,
  `createdTime` string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = ",",
   "quoteChar"     = "\"",
   "skip.header.line.count" = "1" 
) LOCATION 's3://jctech-data/docu/'
TBLPROPERTIES ('has_encrypted_data'='false');


Ref
官方文档
https://aws.amazon.com/blogs/aws/amazon-athena-interactive-sql-queries-for-data-in-amazon-s3/

Sunday, July 7, 2019

AWS SES

电子邮件平台

功能
* Amazon SES 控制台 — 此方法是设置系统和发送一些测试电子邮件的最快方法,但在您准备好开始电子邮件活动后,将主要使用控制台来监控发送活动。例如,您可以快速查看您已发送的电子邮件数和您收到的退回邮件和投诉邮件数。类似于GoDaddy的console
* SMTP 接口 — 可通过 SMTP 接口以两种方式访问 Amazon SES。第一种方式是将任何支持 SMTP 的软件配置为通过 Amazon SES 发送电子邮件,此方式不需要编码。例如,您可以将现有电子邮件客户端或软件程序配置为连接到 Amazon SES SMTP 终端节点,而不是当前出站电子邮件服务器。第二种方式是使用与 SMTP 兼容的编程语言 (例如 Java) 并使用该语言的内置 SMTP 函数和数据类型访问 Amazon SES SMTP 接口。
* Amazon SES API — 您可以直接通过 HTTPS 调用 Amazon SES 查询 API

Ref
官方文档

AWS CloudTrail

AWS账户进行监管、API调用活动

功能
利用事件历史记录,您可以查看、搜索和下载 AWS 账户中过去 90 天的活动。此外,您还可以创建一个 CloudTrail 跟踪来存档、分析和响应您的 AWS 资源的变化

有两类事件可以记录在 CloudTrail 中:管理事件和数据事件。默认情况下,跟踪记录管理事件,但不记录数据事件。
* 管理事件提供对在您 AWS 账户内的资源上执行的管理操作的见解。这些也称为控制层面操作。
* 数据事件提供对在资源上或资源内执行的资源操作的见解。这些也称为数据层面操作。数据事件通常是高容量活动。示例数据事件包括:Amazon S3 对象级别 API 活动(例如,GetObject)

CloudTrail 事件历史记录提供过去 90 天的 CloudTrail 事件的可查看、可搜索和可下载记录
与 CloudWatch Logs 集成使 CloudTrail 能够将您的 AWS 账户中包含 API 活动的事件发送到
CloudWatch Logs 日志组。

比如CloudTrail可以记录谁在Lambda中删除某个policy

Ref
官方文档

AWS CloudWatch

实时监控您的AWS资源以及您在 AWS 中运行的应用程序。我用过的是用CloudWatch来自定义面板来显示dynamoDB和SQS,RDS的指标,以及管理应用程序的日志文件。

应用场景
自定义控制面板,以显示有关自定义应用程序的指标
创建警报,例如,您可以监控您的 Amazon EC2 实例的 CPU 使用率以及磁盘读写情况

最佳实践
与 Amazon CloudWatch 一起使用:
* Amazon SNS用于协调和管理向订阅终端节点或客户交付或发送消息的过程。
 可结合使用 Amazon SNS 与 CloudWatch 以便在达到警报阈值时发送消息。
* Amazon EC2 Auto Scaling 根据用户定义的策略、运行状况检查和时间表自动启动或终止
   Amazon EC2 实例。可将 CloudWatch 警报与 Amazon EC2 Auto Scaling 一起使用以根据需求扩     展 EC2 实例。
* AWS CloudTrail 可用于监控对您的账户的 Amazon CloudWatch API 的调用(包括由 AWS 管理控制台、
* AWS CLI 和其他服务进行的调用)。开启 CloudTrail 日志记录后,CloudWatch 将日志文件写入到您在配置 CloudTrail 时指定的 Amazon S3 存储桶。
* AWS Identity and Access Management (IAM) 是一项 Web 服务,可帮助您安全地控制用户对 AWS 资源的访问权限。通过 IAM 可以控制哪些人可以使用您的 AWS 资源(身份验证)以及他们可以使用的资源和采用的方式(授权)。

架构
AWS资源周期性地将指标上传到CloudWath

SQS Metrics
DLQ: ApproximateNumberOfMessagesVisible, 15min, Sum

CloudWatch Events

近乎实时的系统事件流,这些系统事件描述 Amazon Web Services (AWS) 资源的变化。通过使用可快速设置的简单规则,您可以匹配事件并将事件路由到一个或多个目标函数或流。
还可以用来计划使用 cron 或 rate 表达式在某些时间自行触发的自动化操作

最佳实践
计划自动化 EBS 快照
当文件上传至 Amazon S3 存储桶时运行 Amazon ECS 任务
在 AWS 账户之间发送和接收事件

架构
事件 —事件表示 AWS 环境中的更改。AWS 资源可以在其状态更改时生成事件。例如,Amazon EC2 在 EC2 实例的状态从待处理更改为正在运行时生成事件
目标—目标负责处理事件。目标可包括 Amazon EC2 实例、AWS Lambda 函数、Kinesis 流、Amazon ECS 任务、Step Functions 状态机、Amazon SNS 主题、Amazon SQS 队列和内置目标。目标接收 JSON 格式的事件。
规则—规则匹配传入事件并将其路由到目标进行处理。

Amazon CloudWatch Logs

日志文件服务。应用程序的日志可上传到此,可以统一搜索,统计

搜索日志表达式
如果日志是json
{ ($.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = nonmatch) && $.actions[2] = nomatch }


功能
CloudWatch Logs Insights 分析日志数据。这个可以用于cross query多个service的log
CW的query支持一些aggregation操作如stats count(user_operation) by user
count_distinct 只返回估计值如果cardinality太高

CloudWatch Synthetic
Canary用于检测UI和API,replay traffic

AWS ElastiCache

分布式内存数据存储

使用场景
游戏排行榜
消息发送 (Redis Pub/Sub),Publisher和subcriber间的缓存
推荐数据(Redis 哈希)

功能
缓存节点故障的自动检测和恢复。
在支持复制的 Redis 集群中,将失败的主集群自动故障转移到只读副本的多可用区。
Redis (已启用集群模式)支持将数据划分到最多 90 个分片。

比较 Memcached 和 Redis
1. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
2. Redis支持数据的备份,即master-slave模式的数据备份。
3. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
抛开这些,可以深入到Redis内部构造去观察更加本质的区别,理解Redis的设计。
在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别。
Redis只会缓存所有的 key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作

Ref
官方文档

AWS Elasticsearch

ES的AWS封装云服务,开源搜索和分析引擎

使用场景
适用于日志分析、实时应用程序监控、点击流分析等使用案例

ES的意思是Full text search也就是一个text box根据词频用or来连接这些词来返回结果。
read-what-was-just-written performance. Search engines are better at really quick search with additional tricks like all kinds of normalization: lowercase, ä->a or ae, prefix matches, ngram matches (if indexed respectively)
另一个search是用户选择不同的field或者多个来search这种其实是query,不需要ES来实现。

最佳实践
Amazon S3(trigger->lambda)、Amazon Kinesis(data streams, firehose->lambda)和Amazon DynamoDB的CloudWatch, IoT集成,用于将流数据加载到 Amazon ES
DyanmoDB->stream->Lambda加载数据到ES
Kibana数据可视化

功能
Amazon ES 为您的 Elasticsearch 集群预置所有资源并启动集群。
它还自动检测和替换失败的 Elasticsearch 节点,减少与自管理基础设施相关的开销。
您只需调用一次 API 或在控制台中单击几下就可扩展集群

最多3 PB实例存储,常用Elasticsearch准则是不超过每个分片 50 GB
Amazon EBS存储卷
用于Kibana的Amazon Cognito 身份验证
自动快照用于备份和还原 Amazon ES 域
使用 Kibana 实现数据可视化

Domain
Elasticsearch 域名

EBS
带自动备份的云硬盘

快照
快照是群集的数据和状态的备份。状态包含集群设置、节点信息、索引设置和分片分配。

Logstash提供一种便捷的方式,通过 S3 插件使用批量 API 来上传数据到您的 Amazon ES 域

SQL支持

用Curator轮换数据
删除名称中包含的时间戳指示数据已超过 30 天的任何索引

底层API
AWS Elasticsearch原理

Ref
官方文档