使用wikiextractor 提取wiki数据

使用wikiextractor 提取wiki数据

wikiextractor包链接地址:https://github.com/attardi/wikiextractor
安装wikiextractor: pip install wikiextractor
然后下载wiki语料库,下载地址: https://dumps.wikimedia.org/zhwiki/latest/
我下载的是:zhwiki-latest-pages-articles.xml.bz2
然后使用下面命令:

python -m wikiextractor.WikiExtractor -b 1024M -o /home/work/ljs/wiki/wiki_data /home/work/wiki/zhwiki-latest-pages-articles.xml.bz2
-b 1024M 其中1024M是指单个文件允许的*大的占用硬盘的大小
/home/work/ljs/wiki/wiki_data 指输出数据存放文件夹
/home/work/wiki/zhwiki-latest-pages-articles.xml.bz2 指原始语料存放文件夹

然后就开始提取wiki数据了,如果上述命令执行错误,应该是环境有问题,请检查环境,还有尽量使用ubuntu系统,否则可能出错哦。
运行过程中:

%title插图%num

运算符和变量

运算符和变量

Day 2_总结:
一.运算符
1.数字运算符

常用数字运算符:+(加)、-(减)、*(乘)、/(除)、%(取余、取模)、//(整除)、**(幂运算)

+(加)、-(减)、*(乘)、/(除)和数学中的+(加)、-(减)、×(乘)、÷(除)的功能一样。
#加减乘除
print(2+3);print(2-3);print(2*3);print(2/3)
1
2
% 求余数

x % y – x除以y的余数

#求5除2的余数
print(5%2)

应用1:判断一个数是否能被另一个数整除。(取余后值是否为零)

应用2:取一个数的低位数。(一个数对10,100…等取余)

// 整除(求商,商向小取整)

应用:去掉低位数,保留高位数。(一个数整除10、100…去掉个位,去掉十位…)
** 幂运算

x**y:求x的y次方
#2的3次方
print(2**3)

2.比较运算符

比较运算符:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)

比较运算符的运算结果都是布尔值

print(10 == 10) #True
print(20 == 10) #False

Python中的比较运算符支持表示范围的连写方式(别的语言不支持)

x = 0.3
print(0 < x < 10) #True

3.逻辑运算符

逻辑运算符:and(逻辑与运算),or(逻辑或运算),not(逻辑非运算)

and – 逻辑与运算

应用场景:要求多个条件同时满足就是将多个条件用and连接,相当于生活中的并且。
运算符规则:两个都是True,结果才是True,否则结果是False。
or – 逻辑或运算

应用场景:要求多个条件只需要有一个条件满足,就使用or连接连接多个条件。
运算符规则:两个都是False,结果才是False,否则结果是True。
not – 逻辑非运算

应用场景:对某一个场景进行否定。
运算符规则:not True 为 False;not False 为 True。
逻辑运算符扩展:

短路操作:

逻辑与短路操作:表达式1 and 表达式2 – 如果表达式1的结果是False,那么表达式2的代码不执行。

逻辑或短路操作:表达式1 or 表达式2 – 如果表达式1的结果是True,那么表达式2的代码不执行。

注意:表达式1放教简单的代码,可以减少Cup的使用。

运算对象不是布尔值

表达式1 and 表达式2:如果表达式1的布尔值是True,整个与运算的结果是表达式2;如果表达式1的布尔值False,整个与运算的结果是表达式1。
表达式1 or 表达式2:如果表达式1的布尔值是False,整个与运算的结果是表达式2;如果表达式1的布尔值True,整个与运算的结果是表达式1。

print(7 and 8) #8
print(0 and 9) #0
print(7 or 8) #7
print(9 or 0) #9
print(not 0) #True

补充:数据的布尔值(非常重要)

所有数据都有布尔值,所有零值、空值的布尔值是False,其他都为True。

注:零值和空值包含0、0.0、0.00、’ ‘、” “、None。

4.赋值运算符

赋值运算符:=、+=、-=、*=、/=、%=、//=、**=

重要结论:1.所有的赋值运算都是用来给变量赋值,没有计算结果。(所有的赋值运算都没有结果)

​ 2.所有赋值运算符的左边都必须是变量。

=

变量 = 数据 – 将数据保持到变量中
+=、-=、*=、/=、%=、//=、**=

变量 += – 先将变量中保存的数据取出来,和右边数据进行加法运算,再将结果返还给变量。

注意:变量必须先被赋值。

运算符的优先级:

数学运算>比较运算>逻辑运算>赋值运算符(*低的)

** > *、/、//、% > +、-

有括号先算括号里面的

a = 10 + 20*3 > 5 and 7-8>9
print(a) #Flase

二.IF 分支结构
1.流程控制

顺序结构(默认) – 代码从上往下一条一条的执行,每条代码只执行一次。
分支结构 – 根据条件执行或者不执行某些代码。
循环结构 – 可以让代码重复执行。
分支结构 – if语句

if单分支结构 – 满足条件执行某个操作,条件不满足的时候,不执行该操作。
“””
语法:
if 条件语句:
代码段
说明:
if – 关键字,固定写法
条件语句 – 任何有结果的表达式(除了赋值语句以外的表达式),比如:数据、已经赋值过的变量、运算符 号、函数表达式
: – 固定写法(注意输入法)
代码段 – 和if保持一个缩进的一条或者多条语句(满足条件才执行的代码)
执行过程:先判断条件语句的结果是否为True,如果为True就执行代码段,否则代码段不执行。
“””
a = 100
if a-100:
print(‘代码段’) #不打印结果

if 双分支结构 – 满足条件执行某个操作,条件不满足的时候执行另外的操作。
“””
语法:
if 条件语句:
代码段1(满足条件要执行的代码)
else:
代码段2(不满足条件要执行的代码)
“””

if 多分支结构 – 根据不同的条件执行不同的操作(条件之间满足:其中一个条件满足了,其他条件不会同时满足)
“””
语法:
if 条件语句1:
代码段1
elif 条件语句2:
代码段2
elif 条件语句3:
代码段3

else:
代码段N
其他语句
“””

Day_作业:
选择题
B
D
B
A
C、D
A
C
填空题
查看变量中数据的类型的函数名是(Type(变量))
已知 x = 3 == 3 ,执行结束后,变量x的值为(3)
已知 x = 3 ,那么执行语句 x += 6 之后,x的值为(9)
表达式 3 ** 2 的值为(9),表达式 3 * 2 的值为(6),表达式 4 ** 0.5 的值为(2)
编程题
写出判断一个数是否能同时被2和5整除的条件语句, 并且打印对应的结果

x = input(‘请输入一个能同时被2和5整除的数:’)
x = int(x)
if x % 2 or x % 5:
print(False)
else:
print(True)

写出判断一个数是否能够被2或者5整除,但是不能同时被2和5整除的条件语句, 并且打印对应 的结果

x = input(‘请输入一个能被2或5整除但不能同时被2和5整除的数:’)
x = int(x)
if x % 2:
if x % 5:
print(False)
else:
print(True)
elif x % 5:
print(True)
else:
print(False)

假设今天的上课时间为15678秒,编程计算今天上课时间是多少小时,多少分钟,多少秒;以‘XX 时XX分XX秒’的⽅式表示出来。例如:100秒表示成 0时1分40秒

time = 15678
h = time // 3600
s = time % 3600 % 60
m = (time-s) // 60 % 60
print(time,’秒表示成’,h,’时’,m,’分’,s,’秒’)
# 15678 秒表示成 4 时 21 分 18 秒

定义两个变量保存一个人的身高和体重,编程实现判断这个人的身材是否正常! 公式: 体重(kg) / (身高(m)的平方值 ) 在18.5 ~ 24.9之间属于正常。输出格式: 是否正常:True/False

height = input(‘请输入身高(m):’)
height = float(height)
weight = input(‘请输入体重(kg):’)
weight = int(weight)
if 18.5 <= weight / height**2 <= 24.9:
print(‘是否正常:’,True)
else:
print(‘是否正常:’,False)

根据输入的成绩的范围打印 及格 或者 不及格。

core = input(‘请输入成绩:’)
core = int(core)
if core >= 60:
print(‘及格’)
else:
print(‘不及格’)

根据输入的年纪范围打印 成年 或者 未成年 ,如果年龄不在正常范围内(0~150)打印 这不是

人! 。

age = input(‘请输入年龄:’)
age = int(age)
if 0 <= age < 18:
print(‘未成年’)
elif 18 <= age <= 150:
print(‘成年’)
else:
print(‘这不是人’)

输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息 a-b的结果不是奇数 。

a = input(‘请输入一个整数a:’)
a = int(a)
b = input(‘请输入一个整数b:’)
b = int(b)
if (a-b) % 2:
print(‘a-b的结果为:’,a-b)
else:
print(‘a-b的结果不是奇数’)

python+opencv实现图片的叠加和多个视频帧的叠加

python+opencv实现图片的叠加和多个视频帧的叠加

我是使用了三个视频,也就是在其中一个视频的每一帧中添加另外两个视频的每一帧,参考自一篇针对单一图片的文章改写https://blog.csdn.net/qq_36735489/article/details/80917674

如果有opencv知识,逻辑还是好理解的,一些地方也给出了注释

import cv2 as cv

def multy(path1, path2, path3):
cap1 = cv.VideoCapture(path1)
cap2 = cv.VideoCapture(path2)
cap3 = cv.VideoCapture(path3)
output = ‘output.mp4′
height = int(cap1.get(cv.CAP_PROP_FRAME_HEIGHT))
weight = int(cap1.get(cv.CAP_PROP_FRAME_WIDTH))
fps = int(cap1.get(cv.CAP_PROP_FPS))
fourcc = cv.VideoWriter_fourcc(*’mp4v’) # 设置格式
videowriter = cv.VideoWriter(output, fourcc, fps, (weight, height))
while True:
ret1, frame1 = cap1.read()
ret2, frame2 = cap2.read()
ret3, frame3 = cap3.read()
if ret1 is True and ret2 is True or ret3 is True:
# Load two images
cv.namedWindow(‘res’, 0)

frame2 = cv.resize(frame2, (500, 250))
frame3 = cv.resize(frame3, (500, 250))

# I want to put logo on top-left corner, So I create a ROI
rows, cols, channels = frame2.shape
roi1 = frame1[0:rows, 0:cols]
roi2 = frame1[rows:rows*2, 0:cols]

# Now create a mask of logo and create its inverse mask also
img2gray2 = cv.cvtColor(frame2, cv.COLOR_BGR2GRAY)
ret2, mask2 = cv.threshold(img2gray2, 254, 255, cv.THRESH_BINARY)
mask_inv2 = cv.bitwise_not(mask2)

img2gray3 = cv.cvtColor(frame3, cv.COLOR_BGR2GRAY)
ret3, mask3 = cv.threshold(img2gray3, 254, 255, cv.THRESH_BINARY)
mask_inv3 = cv.bitwise_not(mask3)

# Now black-out the area of logo in ROI
img1_bg = cv.bitwise_and(roi1, roi1, mask=mask2)
img2_bg = cv.bitwise_and(roi2, roi2, mask=mask3)

# Take only region of logo from logo image.
img3_fg = cv.bitwise_and(frame2, frame2, mask=mask_inv2)
img4_fg = cv.bitwise_and(frame3, frame3, mask=mask_inv3)

# Put logo in ROI and modify the main image
dst2 = cv.add(img1_bg, img3_fg)
dst3 = cv.add(img2_bg, img4_fg)
frame1[0:rows, 0:cols] = dst2
frame1[rows:rows*2, 0:cols] = dst3

cv.imshow(‘res’, frame1)
videowriter.write(frame1)
cv.waitKey(50)
else:
break

videowriter.release()
cv.destroyAllWindows()

if __name__ == ‘__main__’:
path1 = ‘video/1_1.mp4’
path2 = “video/2_1.mp4”
path3 = “video/2_1.mp4”
multy(path1, path2, path3)

 

Python 之多元线性回归分析

Python 之多元线性回归分析

Python 之多元线性回归分析
数据预处理
使用pandas进行数据预处理
本文使用的数据处理工具为pandas,其提供了对excel文件,csv文件的高效处理,操作简单。
‘’’

def read_excel(path, save=False):
# 读取excel 文件
data = pd.read_excel(path, index_col=[])

# 读取csv 文件
data = pd.read_csv(path, index_col=[])

# 获取特定的columns
data = data[[‘c1’, ‘c2’, ‘c3′, …,’cn’]]

# 将获取的文件保存为excel 格式,或者其他的格式csv等。
if save:
data.to_excel(“d.xlsx”, index=False)

# 将文件保存为csv格式的其他方法:
numpy.savetxt(path, data, delimiter=’,’, header=”x1″, fmt=’%f’, comments=”)

# 丢弃选取的列的方法,drop
data = data.drop(columns = [‘c1′,’c2′,’c3’]

# 添加一列的方法 insert (index, new_data)
col_name = data.columns.tolist() # 获取原始的列名称
col_name.insert(6, ‘column_name’) # 选择要插入的位置和列名称
data = data.reindex(columns=col_name) # 刷新列名称
data1[‘column_name’] = new_data # 插入数据

多元线性回归分析库
常见的线性回归库
linearmodels.panel.PanelOLS,sklearn.linear_model.LinearRegression,statsmodels.api.OLS
这些都是可以执行多元线性回归分析的库。本例子中,使用linearmodels.panel.PanelOLS。

# y是因变量,x是自变量,可以为多元的形式,选取需要的列名称输入即可。
entry1 = PanelOLS(y, x, entity_effects=False, time_effects=False, check_rank=False, drop_absorbed=False)

# 自变量的获取
import statsmodels.api as sm
x = sm.add_constant(data.iloc[:, columns_you_need])
# columns_you_need 表示那些你需要的列,可以使用np.hstack((index1,index2))进行组装获得。add_constant表示需要考虑多元线性回归中的常数项。

固定效应如何添加
报错之 ValueError: DataFrame input must have a MultiIndex with 2 levels
在使用固定效应的时候,需要创建一个二级的联合索引。联合索引的*个是实体维度,第二个是时间维度。

报错值 TypeError: ufunc ‘isnan’ not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ‘‘safe’’
这里估计是创建了一个新的列,但是没有为它设置索引,导致在使用函数isnan的时候会出现数据格式检查有问题的情况。

固定效应的添加
使用PanelOLS包提供的工具

‘’’

from linearmodels.panel import
model = PanelOLS(y, x, entity_effects=True, time_effects=False, check_rank=False, drop_absorbed=True)
# entity_effects=True表示使用固定效应。

固定效应和2-level中的索引的关系
在使用固定效应的时候,有时候并不能同时开启行业控制。会出现列丢失的情况。AbsorbingEffectWarning:
Variables have been fully absorbed and have removed from the regression。

题主崔对此进行了实验发现,如果将行业作为2-level index 的时候,在开启行业控制和固定效应的同时,会丢弃掉行业控制。这可能是因为固定效应本身就为你考虑了行业控制?

同时,如果2-level index 中的*个索引(实体索引)不是行业控制的变量的话,那么就可以同时开启行业控制,年度控制和固定效应。因此,题主得出的结论是,如果2-level index 中的实体索引和时间索引如果同时是行业控制和年度控制中相关的列,那么就会出现丢弃列的情况,因为开启固定效应就表示帮你控制了实体列的变量,同时,开启时间控制的话,就表示帮你控制了时间列的变量。而此时如果实体变量列又是你的行业控制的话,那么就会出现重复的情况,会出现丢弃。同理,如果时间变量列又是你的年度控制的话,那么开启时间控制的同时又加入年度控制的话,同样会出现丢弃的情况。

年度控制和行业控制如何添加
何为年度控制和行业控制

一般来说,存在着解释变量和控制变量,解释变量与控制变量都是作为自变量放在方程的右边,二者为了突出研究的问题进行了区分。解释变量是指着重研究的自变量,是研究者重点考查对因变量有何影响的变量。而控制变量是指与特定研究目标无关的非研究变量,即除了研究者重点研究的解释变量和需要测定的因变量之外的变量,是研究者不想研究,但会影响研究结果的,需要加以考虑的变量。 http://blog.sciencenet.cn/blog-334577-426759.html

也就是说,我们将控制变量也当成变量进行回归,例如,将行业也加入到回归中,就表示行业控制。那么怎么加?将所有的行业名称作为新的列添加到原始数据中,该列的数值取值为0或者1,如果该行数据的原始控制变量和列名称一致,则取值1,否则为0。这样就将该控制变量也考虑到回归中。

# 年度控制和行业控制的添加很简单,只需要使用下列函数即可。
data = pd.get_dummies(data=data, columns=[‘ind’, ‘year’])

# 单独的行业控制
data = pd.get_dummies(data=data, columns=[‘ind’])

# 单独的年度控制
data = pd.get_dummies(data=data, columns=[‘year’])

#之后,将生成的列也添加到线性回归中进行分析即可。pd.get_dummies会自动帮你生成需要的列。

破解云数据库MongoDB运行变慢指南

阿里云数据库小分队破解了致使云数据库MongoDB运行变慢的原因,*大“祸首”竟是索引。

索引对于数据库来说有多重要?

索引的目的在于提高查询效率,类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,当然数据库的索引要比这个复杂的多。

总的来说,索引的一个主要目的就是加快检索表中数据的方法,也能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。

索引的优点无可厚非,但是如果运用不当,就会使数据库运行变慢。用户在使用阿里云数据库MongoDB时,常会因为漏加索引或者使用不恰当的索引,导致数据库性能差,影响业务使用。数据库性能差表现为查询语句慢或超时,CPU使用率高。

基于此,阿里云MongoDB推出了索引推荐功能,帮助用户发现漏加索引或者使用不恰当索引的慢查询,并为这些慢查询提供相应的*优索引,达到提升数据库性能的目标。

在审计日志开通的前提下,可默认生成*近3天(每天0点-24点为一份报告,共3份)的索引诊断报告。超过3天的报告内容不保留。
用户根据自身需求,或监控数据,自定义分析*近3天内任意一个时间段的慢查询及索引推荐报告。

索引推荐操作步骤:
1.登录MongoDB管理控制台,找到目标实例。
2.单击实例ID或者管理进入基本信息页面。
3.在左侧导航栏中,选择CloudDBA->推荐索引查看索引诊断报告列表,如下图所示。
1

4.单击自定义分析打开自定义分析对话框,您可以设置查询时间查看具体时间段内的索引诊断报告。
2

5.单击某个索引列表后的查看详情查看指定索引诊断详情。
3

6.单击上图集合列表后的查询详情,打开分析详情窗口,您可以查看推荐索引以及合并推荐索引等详细信息。
4

据悉,索引推荐功能暂时支持华东1,华东2,华南1,华北1,华北2 五个地域。MongoDB副本集及集群版实例支持索引推荐功能,单节点实例暂不支持。

为数据安全而生,阿里云容灾备份方案场景实践解析

数字经济时代,数据正以超出想象的速度快速增长。短短几年,数据量已经从TB级别跃升到PB乃至ZB级别。

根据相关研究机构调查结果显示,2017 年全年数据总量将超过15.2ZB,同比增长35.7%。到2018 年全球数据总量达19.4ZB。未来几年全球数据的增长速度在每年25%以上,预计到2020年,全球数据总量将接近50ZB。

不可否认的是,数据是数字化运营的核心,数据安全决定企业的生死存亡。

数据中心事故面前,企业面临灾难性危机
2018年8月,某国际云厂商因销售人员在一个存储桶方面没有遵循其规范,导致数据泄露。

2018年7月,某国内云平台被曝出发生过严重故障,直接导致某创业公司数据全部丢失,使该创业公司面临前所未有的业务停摆危机。

2017年5月12日发生全球性WannaCry蠕虫病毒事件,银行的ATM提款机“罢工”,加油站的电脑“停业”,学校即将答辩学生的论文被加密。

2017年1月,某代码托管平台的运维人员在多终端操作切换时,误把生产环境当成测试环境,人为失误的把生产环境的数据库删除。

2014年11月份某金融支付公司出现系统故障,出现了高达近4亿多重复到账。

据IDC统计数据表明,十年间发生过灾难的公司,有55%当时倒闭,剩下的45%中,因为数据丢失,有29%也在两年之内倒闭,生存下来的仅占16%。

根据Gartner报告显示,在经历大型灾难而导致系统停运的公司中有2/5再也没有恢复运营,剩下的公司中也有1/3在两年内破产。

在此背景下,企业数据保护已迫在眉睫。

企业数字化转型,混合云架构灾备方案是首选
1

过去,传统灾备解决方案是基于容灾中心建设一套与生产中心类似的架构体系,虽然满足生产中心的数据备份和复制需要,但落地周期长、实施不便、设备昂贵、运维复杂等因素对企业造成重重挑战。

那么,相比于传统灾备解决方案,混合云备份容灾解决方案是高效率、高可用、高性价比、免运维的现代化灾备方案,可以帮助客户把文件、数据库、虚拟机乃至整机安全高效地实现本地备份或备份上云。同时,备份上云的应用服务器整机可以在云上以服务器虚机的形式直接拉起运行,满足所需的RPO和RTO保障业务连接性,实现云上容灾。

2

阿里云混合云备份容灾服务产品介绍

混合云备份(Hybrid Backup Recovery,HBR)服务是一种简单易用且高性价比的在线备份服务,可以帮助客户把桌面机,服务器或者虚拟机的数据备份到阿里云上的备份存储库,为客户数据提供安全、高效的云存储备份管理服务。

混合云备份服务典型的应用场景:针对不同IT环境的数据保护

 满足不同IT环境的数据保护,包括本地数据中心物理机、虚拟化平台,以及阿里云上ECS服务器和其他公有云平台上的服务器

 RPO和RTO要求不高,但能够保证数据安全、可恢复能力
3

混合云备份服务针对该场景具有以下优势:
 简单易用,服务即开即用,分钟级快速部署,减少学习成本
 采用加密、多副本满足安全可靠的云备份,数据可靠性达到12个9
 采用去重、压缩减少带宽占用和备份成本,同时可以利用非常有限的带宽将数据备份上云
 弹性扩容,存多少算多少,按量付费,同时也有多种折扣套餐可以满足预付费客户的要求

混合云备份服务典型的应用场景:多分支机构集中备份+跨区域容灾
4
 不同省市、区域中有多个分支机构,各分支机构有相应的数据需要进行备份

 各个物理机房分别去部署备份设备,管理分散并且复杂,难以保证数据备份成功完成

 基于多区域容灾要求,希望将备份数据的副本保留在其他区域,防止区域性故障导致的数据或服务无法使用

混合云备份服务针对该场景具有以下优势:

 各机房无需部署和管理备份存储硬件设备,降低管理复杂度和运维成本

 实现数据备份统一管理

 高效的数据源变长重删,高达30:1的重删率,降低网络带宽和存储资源消耗,缩短备份窗口

 客户端数据永久增量备份上云,云备份库每个时间点副本都是全量,提高备份恢复的效率,实现快速恢复

区别于混合云备份服务,混合云容灾(Hybrid Disaster Recovery,简称HDR)服务是一个为企业应用提供云+本地双备份与云容灾的服务。它可以对服务器整机,文件和应用进行保护;是配置了灾备一体机的软硬件服务,灾备一体机部署于本地数据中心用于快速恢复本地数据,同时备份数据同步上云灾备库用于做云上容灾,可以避免机房故障的同时还能够在云上恢复出业务服务器,满足业务连续性,平时还可以用于灾备演练或者数据分析使用;为了应对大数据集群架构的数据保护,混合云容灾服务发布首个公有云大数据灾备解决方案。

混合云容灾服务典型的应用场景:本地备份+按需配置上云容灾

 生产环境需要进行本地备份,确保本地机房出现数据误删除、磁盘故障的情况下能够从本地快速恢复数据

 本地备份数据要进行异地容灾,确保本地数据中心出现灾难事故时,业务能在容灾中心快速恢复,使业务不中断或者中断时间较短

 业务系统由数据库服务器、文件服务器、应用服务器等一整套服务器搭建而成
5

混合云容灾服务针对该场景具有以下优势:

 满足客户本地备份要求的同时,可以按需配置异地容灾,利用公有云平台能力,使客户在无需自建容灾机房的情况下,就可以实现灾难情况下业务快速恢复,节省70%灾备成本

 弹性扩展,按需配置,平时云上ECS不用恢复和启动,客户只需要用到云端的灾备库资源,云灾备库资源支持弹性扩容

 高可靠,依托于阿里云的基础架构,确保在需要容灾恢复的时候,业务能安全可靠的数据可以进行及时恢复

混合云容灾服务典型的应用场景:本地备份+按需配置上云容灾

 本地数据中心Hadoop大数据集群,有百TB级别数据,自建同等规模异地容灾集群会造成大量闲置资源,成本太高

 要求RPO接近0,传统distcp方案无法满足要求
6

混合云容灾服务针对该场景具有以下优势:

 充分利用公有云资源,搭建云上大数据集群
 采用异步实时复制技术,RPO接近0
 云上云下集群双活,两个集群运行不同业务,无资源闲置,TCO低
 云上节点弹性扩展,快速稳定的计算资源满足业务量波动需要

5.阿里云混合云备份容灾解决方案优势特点
优势一:简单易用,5分钟启动备份服务
 不需要任何硬件或者网关设备
 备份空间即买即用,易于扩展

优势二:高性价比,按需购买
 高达30:1的重删压缩比,30个副本只占用原来副本的1份空间
 采用永久增量技术,免去冗余不变的数据重复上传,免专线的情况下体验*速上云
 根据云端存储空间计量计费,而非源端备份数据量,*大地减少了备份费用
 利用公有云平台基础架构,相比传统容灾中心建设减少70%以上的成本

优势三:安全可靠,多区域容灾
 数据多版本备份,每个时间点都是完全副本
 高达12个9的云存储可靠性
 多AZ的备份库容灾,依赖云平台多可用区的支撑,数据多份保障
 可配置的跨区域异地容灾模式,可避免重大区域性故障导致的数据丢失

优势四:整机灾备,无需业务改造
 整机备份,整机恢复,可以在无需变更应用程序和IP地址的情况下,在云上重新恢复出与原来相同的业务系统出来
 整机上云的同时,还支持整机线下机房数据回流,方便在线下机房修复完成后的应用回迁
优势五:主流平台支持,结构化和非结构化数据保护
 操作系统:Windows、Linux
 系统平台:VMWare、Hyper-v、物理服务器
 数据库:SQL Server、Oracle等多种数据库

混合云备份容灾发布会:https://yq.aliyun.com/webinar/play/490
混合云备份产品:https://www.aliyun.com/product/hbr
混合云容灾产品:https://www.aliyun.com/product/hdr
混合云存储开启企业上云新路径:
https://promotion.aliyun.com/ntms/act/braas0822.html
国际站:混合云备份产品链接:https://www.alibabacloud.com/product/hbr

阿里云入选2021 Gartner APM 魔力象限,国内唯一入选云厂商

近日,Gartner 发布了《2021 年Gartner APM 魔力象限》,阿里云成为国内唯一入选的云厂商,产品能力和战略愿景获得Gartner分析师高度认可。

Gartner 是全球*具权威的IT研究与顾问咨询公司,其每年的 Gartner APM 魔力象限报告对于企业选择 APM 工具提供了可靠的参考标准。本次评测应用实时监控服务(ARMS)作为阿里云 APM 的核心产品,联合云监控以及日志服务共同参与。Gartner 评价阿里云 APM:

中国影响力*强:阿里云是中国*大的云服务提供商,阿里云用户可以使用云上监控工具来满足其可观测性需求。
开源集成:阿里云非常重视将开源标准和产品(例如 Prometheus)集成到其平台中。
成本优势:与在阿里云上使用第三方 APM 产品相比,阿里云 APM 产品具有更高的成本效益。

%title插图%num

图片来源:2021 Gartner APM 魔力象限

当下,企业正逐步加快数字化转型的步伐,导致 IT 系统更新频繁,应用复杂度急剧升高。微服务、容器化等之前仅有技术型公司关注的前沿技术也逐渐在传统企业中兴起,而云服务早已经成为企业大规模运营数字业务所必备的技术服务。以用户体验为核心的应用性能管理(APM)受到广泛关注,APM 在帮助企业实现数字化转型及智能化运维的道路上表现出巨大的价值。

例如,用户打开某个应用后,可能涉及上千次调用。打开这样一个页面的响应时间,不仅是前端应用的指标,也是所有服务中心都应该去关心的重要指标。当出现问题,传统运维通过排查、电话通知的操作,不仅低效还容易丢失信息。如何实时监控整个链路的运行情况,出现问题快速定位根因,对应到责任人,这些是企业在服务化过程中亟需解决的问题。

2017年,阿里将内部锤炼多年的监控工具对外,应用实时监控服务 ARMS 正式商业化。作为云原生一体化可观测性平台,ARMS 提供全栈式的性能监控和端到端的全链路追踪诊断能力,同时,结合阿里云日志服务(SLS)的日志数据分析能力以及云监控丰富的云服务与基础设施监控能力,用户可以轻松完成用户体验、应用、云服务、容器的一站式监控。

%title插图%num

阿里云在 APM 领域不仅建立了丰富的产品布局,其产品能力也得到了众多客户的认可。道旅科技凭借 ARMS,在数分钟内搭建和启动了基于大数据平台的应用实时监控系统,*大地提升了 IT 人员的效率。华润万家不管在应用上出现任何问题,ARMS 都可以清楚地呈现问题出在哪一行代码,大大缩短了修复故障的时间。

随着企业数字化转型进程加速,企业各类应用程序的性能状况直接影响了数字化业务的顺利开展,APM 产品的市场需求仍在不断扩大。经过 10 多年的技术实践,阿里云已拥有国内规模*大的云原生产品家族和开源生态,提供云原生裸金属服务器、云原生数据库、容器服务、微服务、可观测、高可用等超过 100 款创新产品,让企业更加从容地迈向云原生架构。

因云而生 阿里云发布云服务器操作系统Alinux3:性能*高提升40%

近日,阿里云正式推出第三代云服务器操作系统Alibaba Cloud Linux 3(以下简称Alinux3),基于“因云而生”的云原生技术理念,Alinux3进一步提升了云上客户的安全性、稳定性和运行时性能,并深度融合自研软件生态,全面兼容 RHEL/CentOS 8生态,优化后主流应用性能提升10%~40%;同时提供长达8年的免费软件维护和技术支持,保障开发者*佳云上操作体验。

%title插图%num

据官网介绍,Alinux 3不仅继承了Alinux 2的优秀特性,还以“因云而生,为云优化”为核心,针对云产品做了大量垂直优化,包括 Linux kernel 5.10 内核、 GCC 10.2/Glibc 2.32 版本工具链,以及大量其他核心系统组件。Nginx、Redis、Mysql等主流E2E应用在各方面性能相比上一代提升10%-40%,保持了高性能的水准。

%title插图%num

 

安全方面,除了内核热补丁自动修复、等保加固、CIS加固等功能外,阿里云还提供了机密计算、全栈国密等安全增强技术方案,可对敏感数据进行隔离处理。此外,Alinux3引入了应用流机制,融合了生产稳定性需求和快速开发创新需求,能将应用与基本操作系统分开,可随时切换应用。

此外,Alinux3还提供包括基础镜像服务诊断、系统异常诊断、宕机分析等一系列应用诊断功能和能力,帮助客户做好系统运维,降低运维开销和风险,提升安全性和稳定性,实现操作系统自动化运维,让用户再无运维担忧。

%title插图%num

今年3月,阿里云和社区伙伴共同发起了Anolis OS 开源项目,作为 CentOS 的替代和创新发展,以开放的社区协作来构建一个开源、中立、开放的 Linux 发行版,提供企业级的稳定性、高性能、安全、可靠、免费的操作系统。阿里云Alinux3也持续将内核中的稳定性、功能特性和性能调优方面的技术积累回馈到 Linux 社区和 OpenAnolis 社区。

如何实现云时代的高效运维?

云计算经过几年的飞速发展,已经成为IT领域未来重要的趋势之一。云时代IT领域各种问题,都在逐渐通过整个行业的智慧形成统一的解决方案。也正因如此,唱衰运维的调调一直不*于耳。当代表运维价值的苦力活被程序代替,甚至比人做得更好时,运维人员该去向何方?

在WOT2016 互联网运维与开发者大会现场,腾讯社交网络运营部助理总经理、技术运营通道会长赵建春作为一个有着十年经验的运维老兵,分享了他眼里运维的分工和理念有变化,如何实现云时代的高效运维?企业未来还是否需要专业的运维管理团队呢?

腾讯社区网络运维团队主要负责以QQ延伸出来的各种社群的运维和维护,包括QQ空间、QQ音乐、QQ会员、QQ秀等一系列的QQ产品。整个团队成员不到90人,却维护着将近10万台服务器。在经历了多次重大事件及活动的考验和洗*后,赵建春深刻感受到,运维团队**重要的职责就是保证系统的稳定、可靠,而不是做一名救火队员。在可靠这件事解决之后,上才有更多时间提升整个运维工作的效率。

高效运维的两大理念

谈到高效运维,赵建春*喜欢拿建筑行业做对比。在他看来,建筑行业是人类历史上一直存在的一项工作。发展到今天,搭建一个高楼就像搭积木一样,能在短时间内迅速完成。这个过程实际做了大量的细分工作,每一个团队都会把自己负责的,自己擅长的工作做到*致,做到*高效,*终交由设计师设计,拼装起来就完成了。这对于运维领域也是一个很好的启发。

专业领域细分

赵建春所在的团队对接入运维、逻辑运维、存储运维和业务运维的工作职责进行了明确的划分。在接入运维、逻辑运维和存储运维层面,通过专业的分式方式让团队每位成员都聚焦到更加细分的技术领域,把相应的工作做到更精更细更深。对于业务运维这部分,则是用一些对业务理解能力较好,协调能力较强的同事去对业务进行一些支撑及更多的沟通,更加专注于一些大的目标实现的事情,同时做一些优化的工作。

减少运维对象

具体到运维管理层面,赵建春一直强调的一个重要理念就是减少运维对象。运维其实管理挺复杂的一块事情,一定要对内容和分析做一个清晰的边界划分,有一个比较好的分类,分类以后把每一类东西进行标准化建设和改造。具体来说,就是把服务器类型、机房数量、QA流程、容错架构、软件架构等都看成是抽象的、需要运维去管理的“对象”,对象越少,运维人员就越能深入和全面地掌握这些对象。这种寻找、合并同类项的过程,也是专业细分的一种手段。只有以上两点作为基础,才能谈到实现高效运维。

大规模海量服务运维实践

赵建春讲到,维护海量服务时,出现的故障必须得到服务器及时的处理,不能影响项目服务。容错方案就成为决定系统运维成败的*步。我们写出来的程序和代码、运行的实例都是运维团队需要管理的资源。那么我们能不能对每个资源都定义一种形状,然后进行搭建?

1、统一框架CMDBA

将某一业务模块上所有依赖的资源全部登记进该统一框架。通过高效的监控手段、容量管理等方式进行快速决策和调度。

2、L5系统

集容错、负载均衡、路由、灰度监控能力于一身的容错方案。 L5系统类似于DNS,底下有一排能提供的服务模块,通过L5和DNS、L5和Agent两个环节解决单点问题,并达到容错和负载均衡的作用。

3、统一框架和架构

将整个网络通讯列成一个标准框架, 业务逻辑部分以SO动态库方式编写,与框架分离部署,类似WEB服务器上的CGI。接入层用QZHTTP,逻辑层是SPP和SF的框架。框架的统一大大减少了运维成员学习的成本。实现了统一维护,*大提高通讯效率。

4、动态资源管理

腾讯在十多年的发展过程中积累了很多应对海量方面的成熟经验。其中就包括腾讯云的CDN。腾讯有十亿以上的用户,遍布在全国各地,为了让所有的用户访问资源更加快和近,腾讯将其做了超过500个节点,部署在离用户*近的点上,把资源分发到离用户近的地方。当出现访问压力时,腾讯云可以通过对用户就近接入的物流策略进行动态的调度,让用户访问就近的节点减少压力。资源在分发时也会进行一个预先的推送,或者预拉取,防止在访问的时候出现集中式的拉取资源的方式。

另外,腾讯云在全国上海、天津、深圳部署有QQ整体后台的接入点,可以让用户进行跨地域的分布,从而解决高并发访问时的资源调度问题。

第三,腾讯云会对访问的整个链路进行分析,防止每次大的访问量从前到后穿到整个链条上,而是会访问到局部的模块,来解决这些问题。


未来小公司的专业运维将逐渐消失

*后赵建春谈到,云计算会变成未来的超级标准。从另外一个角度说,云计算就是IT产业的运维平台,无论是传统行业、创业者还是互联网公司,都会在这个平台上进行整个业务的运作,而不是把精力消耗在在基础设施的维护和管理上。

像腾讯云服务经过过去几年发展,尤其是去年表现出翻倍式增长,在全球已有50家数据中心,提供500家数据加速节点,超过10T整体带宽,4T防DDOS攻击能力,700万+域名提供解析等公有云服务。近期,腾讯云也发布了新的战略,推出“黑石”新品并公布出海计划,不断演进解决方案,提高服务能力。

所以对于小型公司来说,可能专业的运维将会慢慢消失,开发的人直接使用云计算的服务运维。而对于那些规模比较大的公司,租用的服务器比较多,涉及到一些混合云的方案,还是需要一定的管理人员,但是需求量不会像原来那么大。

未来是全面拥抱云的时代,对于运维人员来说,一定要建立学习云和使用云的意识,去主动拥抱云,适应云时代的运维需求。

云计算:拼的就是运维!

云计算的IaaS、PaaS、SaaS*后那个S都是Service。就是说,无论你云计算长成什么样,都得要向用户提供“服务”而不仅仅是软硬件和各种资源。

云计算的技术难点 640?wx_fmt=png

到今天,云计算的工业实现已经不太难了。现在有开源软件KVM和Xen,这两个东西基本把虚拟化搞定;而OpenStack则把管理、控制系统搞定,也很成熟。PaaS也有相应的开源,比如OpenShift,而Java里也有N多的中间件框架和技术。另外分布式文件系统GFS/TFS,分布式计算系统Hadoop/Hbase等等,分布式的东西都不神秘了。技术的实现在以前可能是问题,现在不是了。

对于云计算工程方面,现在*难的是运维。管100台、1万台还是100万台机器,那是完全不同的。机器少你可以用人管理,机器多是不可能靠人的。运维系统不属于功能性的东西,用户看不见,所以这是被大家严重低估的东西。只要你做大了,就必然要在运维系统上做文章。数据中心/云计算拼的就是运维能力。

为什么我说运维比较复杂,原因有这么几个。

一方面,云计算要用廉价设备取代那些昂贵的解决方案。所谓互联网的文化就是屌丝文化,屌丝就是便宜,互联网就是要用便宜的东西搭建出高质量的东西,硬件和资源一定不会走高端路线——比如EMC、IBM小型机、SGI超级计算机等等,你如果用它去搭建云计算,成本太贵。用廉价的解决方案代替昂贵的解决方案是整个计算机发展史中到今天唯一不变的事情。所以如果你要让夏利车跑出奔驰车的感觉,你需要自己动手做很多事,搭建一个智能的系统。用廉价的东西做出高质量的东西,运维好廉价的设备其实是云计算工程里*大的挑战。

另一方面,因为你机器多了,然后你用的又不是昂贵的硬件,所以故障就变成了常态,硬盘、主板、网络天天坏。所以,没什么好想的,运维就必须要跟上。云计算的目标是在故障成为常态的情况下保证高可用——也就是我们所说的,你服务的可用性是3个9、4个9还是5个9。

*后,这一大堆机器和设备都放在一起,你的安全就是一个挑战,一方面是Security,另一方面是Safety,保证数十台数百台的设备的安全还好说,但是对于数万数十万台的设计,就没有那么简单了。

面对这样的难题,人是无法搞得定的,你只能依靠技术来管理和运维整个平台。比如必须有监控系统。这跟操作系统一样,对资源的管理,对网络流量、CPU利用率、进程、内存等等的状态肯定要全部收集的。收集整个集群各种节点的状态,是必然每个云计算都有的,都是大同小异的。

然后,你还要找到可用性更好的节点,这需要有一些故障自检的功能。比如阿里云就遇到过磁盘用到一定时候就会莫名其妙的不稳定,有些磁盘的I/O会变慢。变慢的原因有可是硬盘不行了,于是硬盘控制器可能因为CRC校验出错需要要多读几次,这就好比TCP的包传过来,数据出错了,需要重新传。在这种硬盘处理半死不活的状态时,你肯定是需要一个自动检测或自动发现的程序去监控这种事情,当这个磁盘可能不行了,标记成坏磁盘,别用它,到别的磁盘上读复本去。我们要有故障自动检测、预测的措施,才能驱动故障,而不是被动响应故障,用户体验才会好。换句话说,我们需要自动化的、主动的运维。

为了数据的高可用性,你只能使用数据冗余,写多份到不同的节点——工业界标准写三份是安全。然而,你做了冗余,又有数据一致性问题。为了解决冗余带来的一致性问题,才有了paxos的投票玩法,大家投票这个能不能改,于是你就需要一个强大的控制系统来控制这些东西。

另外,公有云人来人往,里面的资源和服务今天用明天不用,有分配有释放,有冻结,你还要搞一个资源管理系统来管理这些资源的生命状态。还有权限管理,就像AWS的IAM一样,如果没有像AWS的IAM权限管理系统,AWS可能会不会像今天这样有很多大的公司来用。企业级的云平台,你需要有企业级的运维和管理能力。

云计算的门槛 640?wx_fmt=png

为啥云计算有这么多开源的东西,却不是人人都能做?

一方面,这就跟盖楼一样。盖楼的技术没什么难的(当然,盖高楼是很难的),但是你没地你怎么盖?我觉得云计算也一样,带宽的价格贵得就像土地的价格。其实云计算跟房地产一样,要占地、占机房、占带宽。如果能把中国所有的机房、机柜、带宽资源都买了,你就不用做云计算了,卖土地就够了——因为这些是有限的。*简单的例子,IP地址是有限的。你有带宽、有机房,但是如果你没有IP,这就不好玩了。尤其是你要提供CDN服务,这个就更明显,因为有多少物理节点直接决定你的CDN服务质量。

另一方面,正如前面所说的,运维是件很难的事,运维这个事并不是一般人能搞的事。没有足够的场景、经验和时间,这种能力很难出现。

从用户的角度来说呢,云计算是一种服务,你需要对用户企业内的解决方案要有很好的了解,这样才能提高很好的服务。能提供“好服务”的通常都是把自己真正当成用户公司。

卖汽车也是卖服务。造出汽车来,并不代表你搞定这个事了。如果没有公路、没有加油站、没有4s店、没有交通管理、规则等等,你要么用不了,要么就是乱七八糟。不能只让用户在那看着你的汽车好牛啊,但是用户不知道怎么用。所以说,云计算*终旁边必须要有一套服务设施,而这套服务设施也是今天被人低估的。

云计算有两个东西我觉得是被人低估的,一个是运维,一个是那堆服务。做服务的需要有生态环境,有人帮你做。所以做云计算要落地并不简单。

总之,云计算是需要吃自己的狗食才能吃出来的,*不是像手机上的Apps一样,你想一想、试一试就能搞出来的,你首先需要让自己有这样的场景,有这样的经历,你才可能会有这样的经验和能力。

还是那句话,云就是服务,只要提供了好的服务,无论公有还是私有都是会有价值的。