• [云日志] 云审计有提供API吗?
    RT, 我想把我线下的一些日志通过API上传到云上,和我云上的日志一起分析下。
  • 【活动结束】0元使用热门产品,输出API SDK体验报告,赢mate10!
    本帖最后由 开发者 于 2018-3-16 09:29 编辑不少开发者反馈在使用华为云SDK/API时遇到了各种各样的坑: 小明觉得文档不够细化,很难读懂; 老王觉得SDK每个接口可调用次数不明确; 小强认为SDK/API没有统一规范;...... 做为开发者,你在使用华为云SDK/API时,都遇到了哪些糟心的问题? 你觉得华为云SDK/API目前存在的最大问题是什么?有哪些需要重点提升的地方? 说出你的问题或建议就有机会挑战最具价值体验官,更有mate10等你来领! -----------------------------------------我是活动详情分割线----------------------------------------- 活 动 主 题 华为云API SDK上线挑战最具价值体验官 mate10等你领! 活动时间: 调用API/SDK并输出体验报告:2017年12月15日—2018年3月11日 体验报告评审:2018年3月12-14日 活动结果公布:2018年3月15日 华为云API SDK介绍: 您可以基于华为云SDK通过编写代码的方式调用华为云API,或通过发起HTTP/HTTPS请求调用华为云API的方式来使用云产品,实现对应用、资源和数据更灵活的部署、更快速的操作、更精准的使用、更及时的监控。 活动参与方式: 1、注册登录,点击领取代金券礼包,轻松上云; 2、调用已购买产品或礼包产品的API/SDK; 3、在该贴下按模板输出体验报告(问题描述+使用界面截图); 4、体验报告评审:筛选有效体验报告后由产品专家对报告进行综合评分。 5、活动结果公布:公布活动最终结果,获奖用户奖品寄送。 体验报告输出规则: 1、文字、图片必须本人原创;逻辑清晰、图文并茂容易获得专家加分; 2、内容包含但不限于产品使用感受(如使用中存在bug,接口定义不够准确、规范不够清晰、文档不够细化、很难读懂、交互性和体验性不够好,以及使用华为云API/SDK存在的问题,有哪些需要重点提升的方面等各种建议。) 3、报告格式: a.注明购买的产品和调用的API或使用的SDK; b.反馈跟API/SDK相关的使用问题(问题描述+截图)或改进建议; c.如有重复反馈,以最先回帖的用户为准。 奖项评选方式: 1、产品团队从问题或BUG的级别、用户建议的价值等方面进行综合评分。最具价值体验官须反馈提议3条以上有效体验报告; 2、各类奖项不能叠加,每个用户只能获得一个奖项,如遇同一用户获得两个奖项,则以所获最高奖项为准,其奖品顺延至下一用户,如活动体验报告未达到30份,奖项另外酌情处理。 3、为达到活动公平公正公开,避免恶意刷楼等行为,回复无意义内容(纯数字、标点、表情或词不达意等)、谩骂、造谣等,均视为无效。 4、活动参与需遵守《华为云社区常规活动规则》,戳>>>这里 活动奖品展示: 最具价值体验官(1名):华为mate 10(4GB+64GB) 6741 优质建议奖(5名):华为VR 6752 特别参与奖(20名):荣耀引擎耳机二代 6753 体验报告参考模板(两种方式可任选): 1、#API SDK体验报告#使用的产品名称+是否好用+有没有需要优化的地方 如:XX产品可调用的SDK支持语言太少,建议增加XX语言。 2、#API SDK体验报告# 产品名称+ 使用环节 + 问题描述 + 优化建议 + 界面截图 如:在调用XX产品API时,在XX环节发现XX问题,建议做XX优化。 6883 10361(点击图片即可参与活动) 了解更多活动详情,领产品代金券,请戳链接: http://activity.huaweicloud.com/ ... 9N-sso&locale=zh-cn 参考: 密钥管理服务API调用的简单实现(附完整代码) http://forum.huaweicloud.com/for ... =5408&highlight=API 华为云sdk调用知识1-华为云的帐户介绍: http://forum.huaweicloud.com/thread-5371-1-1.html 华为云sdk调用知识2-domain_id/user_id以及project_id: http://forum.huaweicloud.com/thread-5372-1-1.html 【干货】【详情】用华为云账号通过smn-sdk-java简单发送SMN短息: http://forum.huaweicloud.com/thread-5187-1-2.html 华为云ECS服务API使用指南(1) - 获取虚拟机列表: http://forum.huaweicloud.com/thread-397-1-1.html 华为云ECS服务API使用指南(2) - 根据浮动ip过滤查询虚拟机列表: http://forum.huaweicloud.com/thread-623-1-1.html 华为云ECS服务API使用指南(3) - 使用python cli获取keystone认证: http://forum.huaweicloud.com/thread-858-1-1.html 本活动由开发者中心与华为云社区共同策划,有任何活动问题,请联系工作人员咨询。 本活动参加华为云社区嘉年华活动盛典,详情请戳: http://activity.huaweicloud.com/carnival/index.html?icn_source=%E5%88%86%E4%BC%9A%E5%9C%BA&icn_campaign=JNH2018
  • [问题求助] 有哪些途径可以使用OCR 的API?
    有哪些途径可以使用OCR 的API?
  • [问题求助] 调用OCR 的API 失败时怎么处理?
    检查原因 1. 根据API调用返回结果或者错误码查找原因。 2. 检查访问密钥AK/SK是否获取成功。 3. 检查Token是否填写正确或者已过期。 4. 检查API调用方法是否正确。 联系服务人员 如果无法确定原因和解决问题,请联系技术服务人员。
  • 【干货分享】华为云API介绍(二)华为云python SDK 使用指导
    本帖最后由 Mercy 于 2017-11-27 10:33 编辑前提条件 1. 已经获取相关API文档。 登录以下网站获取API相关文档: http://developer.huaweicloud.com/index.html 通过这些文档,可以学习云平台所支持的API参数。 2. 已获取Python OpenStack SDK的官方文档。 登录以下网站获取Python OpenStack SDK 的官方文档: https://developer.openstack.org/ ... dk/users/index.html 了解如何使用Python OpenStack SDK对用户而言非常重要。 3. 已经申请到云平台账号,并开通所需的服务。 Project/Domain参数获取方法见: http://forum.huaweicloud.com/forum.php?mod=viewthread&tid=1813 endpoint/AZ信息见: http://developer.huaweicloud.com/endpoint.html 4. python-openstacksdk 适用于 Python 2.7.x 和 3.5.x 系列版本。 5. 欲了解Python SDK项目的源代码,请访问如下地址。 https://github.com/huawei/python-openstacksdk SDK获取与安装(使用git) 请从GitHub 上下载源代码进行安装。(以下为Linux示例,Windows可以使用pycharm)cd your-workspace-folder git clone https://github.com/Huawei/python ... python-openstacksdk cd huawei-python-openstacksdk # install master git checkout master pip install -r requirements.txt python setup.py install 脚本示例:(脚本示例放在examples文件夹下,见帖子最下方截图) 脚本示例中包含如下内容: 1、创建虚拟机(带安全组、带反亲和性组),将虚拟机加入到ELB后端,从ELB上移除虚拟机,查询ELB后端,删除虚拟机、 2、启动、停止、查询虚拟机 3、创建空卷,创建快照,从快照创建卷,挂载卷到虚拟机,从虚拟机卸载卷,删除卷,删除快照 4、申请弹性IP并绑定给虚拟机,查询弹性IP,删除弹性IP #encoding:utf-8 # Copyright 2017 HuaWei Tld # Copyright 2017 OpenStack.org # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. #encoding:utf-8 import sys reload(sys) sys.setdefaultencoding(´utf8´) import os import random import time from openstack import connection from openstack import exceptions # those services´s endpoint will be auto detected from V3 auth token # # Nova -> ECS # Cinder -> EVS # Neutron -> VPC # Keystone -> IAM # Glance -> IMS # Heat -> RTS # # so, we do not need to setup the endpoint override for them. # setup endpoint override for cloud services os.environ.setdefault( ´OS_CLOUD_EYE_ENDPOINT_OVERRIDE´, ´https://ces.cn-north-1.myhwclouds.com/V1.0/%(project_id)s´ ) os.environ.setdefault( ´OS_VOLUME_BACKUP_ENDPOINT_OVERRIDE´, ´https://vbs.cn-north-1.myhwclouds.com/v2/%(project_id)s´ ) os.environ.setdefault( ´OS_LOAD_BALANCER_ENDPOINT_OVERRIDE´, ´https://elb.cn-north-1.myhwclouds.com/v1.0/%(project_id)s´ ) # create connection with authenticationes username = "XXXXXXXX" password = "XXXXXXXX" projectId = "XXXXXXXX" userDomainId = "XXXXXXXX" auth_url = "https://iam.cn-north-1.myhwclouds.com/v3" conn = connection.Connection(auth_url=auth_url, user_domain_id=userDomainId, project_id=projectId, username=username, password=password) # parameteres for ECS,VPC RANDOM = random.randint(1000, 9999) # 使用随机数以确保查询结果的唯一性 SERVER_NAME = "test-pythonsdk-" + str(RANDOM) IMAGE_NAME = "test-image-" + str(RANDOM) flavor = "s2.small.1" availability_zone = "cn-north-1a" image_id = "c4b5bef2-5cd4-4d26-824c-456ba4515315" network_id = "eafa3880-32f9-4586-9545-1bf5bf9a1842" server_group_id = "70542220-2e4b-499f-b117-16949f9fa6f6" # Nova anti-affinity server group security_group_id = "90241b5b-cf8c-4940-b118-265204b5cdc9" # Neutron security group keypair = "KeyPair-e344" # parameteres for ELB mds_loadbalancer = "16dbea1701154c0ba48b70a5540bfead" mds_listener80 = "2cf38492f14140eb85b5e76ce8d5af74" mds_listener1860 = "e2d3d83e10024470baabe17c537c7444" # parameteres for Scaling resources template_server_id = "de8c4868-6088-4b47-9fdd-58f41c3b39ac" template_volume_id = "089911f0-7065-4645-b66b-75c8c65f8d91" def create_server(): # 带安全组、反亲和性组、AZ创建虚拟机,不支持min_count参数 server = conn.compute.create_server( name=SERVER_NAME, image_id=image_id, flavor_id=flavor, networks=[{"uuid": network_id}], key_name=keypair, availability_zone=availability_zone, security_groups=[{"name": security_group_id}], scheduler_hints={"group": server_group_id}) server = conn.compute.wait_for_server(server, interval=10, wait=300) return server def delete_server(server): conn.compute.delete_server(server) def start_server(server): conn.compute.start_server(server) conn.compute.wait_for_server(server, interval=5, wait=150) # 参数server应该是Server对象,而不是String id def stop_server(server): conn.compute.stop_server(server) conn.compute.wait_for_server(server, status="SHUTOFF", interval=5, wait=150) def attach_volume(server, volume_id): conn.compute.create_volume_attachment(server, volume_id=volume_id) def detach_volume(server, volume_id): conn.compute.delete_volume_attachment(volume_id, server) def wait_for_volume(volume, status="available", interval=5, wait=150, failures=[´error´]): volume = conn.block_store.get_volume(volume) if volume.status == status: return volume total_sleep = 0 if failures is None: failures = [] while total_sleep wait: volume = conn.block_store.get_volume(volume) if volume.status == status: return volume if volume.status in failures: msg = ("Volume %s transitioned to failure state %s" % (volume.id, volume.status)) raise exceptions.ResourceFailure(msg) time.sleep(interval) total_sleep += interval msg = "Timeout waiting for %s to transition to %s" % (volume.id, status) raise exceptions.ResourceTimeout(msg) def wait_for_snaps**(snaps**, status="available", interval=5, wait=150, failures=[´error´]): snaps** = conn.block_store.get_snaps**(snaps**) if snaps**.status == status: return snaps** total_sleep = 0 if failures is None: failures = [] while total_sleep wait: snaps** = conn.block_store.get_snaps**(snaps**) if snaps**.status == status: return snaps** if snaps**.status in failures: msg = ("Snaps** %s transitioned to failure state %s" % (snaps**.id, snaps**.status)) raise exceptions.ResourceFailure(msg) time.sleep(interval) total_sleep += interval msg = "Timeout waiting for %s to transition to %s" % (snaps**.id, status) raise exceptions.ResourceTimeout(msg) # def create_image(server, name, **metadata): # 该方法限制太多,不建议使用,建议在控制台页面导出镜像 # server = conn.compute.get_server(server) # conn.compute.create_server_image(server, name, **metadata) # # 请确保name的唯一性 # images = conn.image.images(name=name, owner_id=server.project_id) # return images.next() def list_servers(**query): print("****************************List Servers:****************************") for server in conn.compute.servers(**query): print(server.name) def list_loadbalancers(): print(´****************************List Load Balancer:****************************´) query = { # ´vip_address´: ´192.168.2.36´ # ´name´: ´elb-yc5f´ } for load_balancer in conn.load_balancer.load_balancers(**query): print(load_balancer) def add_members_to_listener(listener, members): print(´****************************Add Member To Listener:****************************´) # listener = "83c8765e77a84f7b9dbe4215564171cc" # members = [{"server_id": "5b9762f4-4883-4664-9ca6-6bd9feef75df", "address": "192.168.0.40"}] conn.load_balancer.add_members_to_listener(listener, members) def wait_for_job(job_id, status="SUCCESS", interval=3, wait=60, failures=[´FAIL´]): job = conn.load_balancer.get_job(job_id) if job.status == status: return job total_sleep = 0 if failures is None: failures = [] while total_sleep wait: job = conn.load_balancer.get_job(job_id) if job.status == status: return job if job.status in failures: msg = ("Job %s transitioned to failure state %s" % (job_id, job.status)) raise exceptions.ResourceFailure(msg) time.sleep(interval) total_sleep += interval msg = "Timeout waiting for %s to transition to %s" % (job_id, status) raise exceptions.ResourceTimeout(msg) # 创建、删除虚拟机示例,并将虚拟机加入listener后端 print("****************************Create Server:****************************") test_server = create_server() print(test_server) print("****************************Add Member to Listener:****************************") test_server_ip = test_server.addresses.values()[0][0].get(´addr´) # 获取虚拟机IP test_add_member = [{"server_id": test_server.id, "address": test_server_ip}] # 组装member消息体 add_job = conn.load_balancer.add_members_to_listener(mds_listener80, test_add_member) # 添加ECS后端到ELB上 add_job = wait_for_job(add_job.id) # 等待后端添加成功 print(add_job) listener_members = conn.load_balancer.listener_members(mds_listener80) # 查询ECS后端列表 member_id = "" for member in listener_members: # 获取member_id print(member) if member.server_id == test_server.id: member_id = member.id break print("****************************Remove Member from Listener:****************************") test_remove_member = [member_id] # 组装member消息体 remove_job = conn.load_balancer.remove_members_of_listener(mds_listener80, test_remove_member) # 移除ECS后端 remove_job = wait_for_job(remove_job.id) # 等待后端移除成功 print(remove_job) listener_members = conn.load_balancer.listener_members(mds_listener80) # 查询ECS后端列表 for member in listener_members: print(member) delete_server(test_server.id) # 删除虚拟机 # 启动、停止、查询虚拟机 conn.compute.start_server(template_server_id) # 启动虚拟机 template_server = conn.compute.find_server(template_server_id) # 查询指定server # 等待server状态为ACTIVE,注意wait_for_server中的server参数要是Server对象,而不能只是server_id template_server = conn.compute.wait_for_server(template_server, interval=5, wait=150) print(template_server) conn.compute.stop_server(template_server_id) # 停止虚拟机 template_server = conn.compute.wait_for_server(template_server, status="SHUTOFF", interval=5, wait=150) print(template_server) servers = conn.compute.servers(name="test") # 过滤查询虚拟机示例 for server in servers: print server # 卷、快照操作示例:创建空白卷,创建快照,从快照创建卷,挂卸卷,删除卷 blank_volume = conn.block_store.create_volume(size=150, availability_zone=availability_zone, name="test-blank-volume", volume_type="SAS") # 创建空卷,SATA、SAS、SSD blank_volume = wait_for_volume(blank_volume) # 等待卷状态为available print(blank_volume) attach_volume(template_server_id, blank_volume.id) # 挂载卷到虚拟机上,要求卷和虚拟机在同一AZ blank_volume = wait_for_volume(blank_volume, status="in-use") snaps** = conn.block_store.create_snaps**(name="test-snaps**-from-datavolume", volume_id=template_volume_id, is_forced=True) # 从数据盘创建快照 snaps** = wait_for_snaps**(snaps**) # 等待快照状态为available print(snaps**) 从快照创建卷,要求新卷与快照的AZ相同,volume-type相同 snaps**_volume = conn.block_store.create_volume(snaps**_id=snaps**.id, availability_zone=availability_zone, name="test-volume-from-snaps**", volume_type="SAS") snaps**_volume = wait_for_volume(snaps**_volume) # 等待卷状态为available print(snaps**_volume) attach_volume(template_server_id, snaps**_volume.id) # 挂载卷到虚拟机上 snaps**_volume = wait_for_volume(snaps**_volume, status="in-use") detach_volume(template_server_id, blank_volume.id) # 卸载卷 detach_volume(template_server_id, snaps**_volume.id) # 卸载卷 blank_volume = wait_for_volume(blank_volume) # 等待卷状态为available snaps**_volume = wait_for_volume(snaps**_volume) # 等待卷状态为available conn.block_store.delete_volume(blank_volume) # 删除卷,需要卷状态为available,且卷没有快照 conn.block_store.delete_volume(snaps**_volume) # 删除卷,需要卷状态为available,且卷没有快照 conn.block_store.delete_snaps**(snaps**) # 删除快照 # 弹性IP相关操作: 申请EIP、绑定EIP、解绑定EIP server_inte**ce = conn.compute.server_inte**ces(template_server_id).next() # 获取虚拟机第一张网卡ID print(server_inte**ce) net_external = conn.network.networks(is_router_external=True).next() # 获取公网网络 print(net_external) floating_ip = conn.network.create_ip(floating_network_id=net_external.id, port_id=server_inte**ce.port_id) # 申请EIP,带宽默认是300M/s time.sleep(10) # 等待弹性IP创建并绑定成功 floating_ip = conn.network.get_ip(floating_ip) # 查询EIP状态 print(floating_ip) conn.network.delete_ip(floating_ip) # 删除EIP
  • [问题求助] ES Elasticsearch中是否支持开源Elasticsearch的API或功能
    ES Elasticsearch中是否支持开源Elasticsearch的API或功能?
  • 【干货分享】华为云API介绍(一)OpenStack原生CLI命令行使用指导
    本帖最后由 Mercy 于 2018-1-5 11:34 编辑 简介华为云是基于开源OpenStack架构进行开发的,已经获得开源Defcore认证。IaaS基础组件:IAM(Keystone)、ECS(Nova)、EVS(Cinder)、VPC(Neutron)、IMS(Glance)遵循原生OpenStack API规范,能够使用开源CLI Client去调用华为云接口管理云上资源。 前提1、 客户已经在华为云注册账户2、 客户有一台能够访问公网的Linux服务器,推荐Ubuntu/CentOS/RedHat操作系统,其上已经安装python、pip工具3、 客户已经获取华为云endpoint,http://developer.huaweicloud.com/endpoint.html4、 客户在华为云控制台-用户-我的凭证处获取鉴权信息:User、Domain、Tenant、Project4935 准备CLI执行机 1、安装开源CLI客户端华为云OpenStack基于社区Mitaka版本,能够适配Mitaka版本的client端,需要在Linux服务器上安装python包,所需版本如下:python-openstackclient: 3.2.1python-novaclient: 6.0.0python-glanceclient: 2.5.0python-keystoneclient: 3.5.1python-neutronclient: 6.0.0python-cinderclient: 1.9.0python-heatclient: 1.5.1 安装命令示例:pip install python-novaclient==6.0.0 2、配置环境变量export OS_USERNAME=wanglianmin # 输入User信息export OS_USER_DOMAIN_NAME=wanglianmin # 输入Domain信息export OS_PROJECT_DOMAIN_NAME=wanglianmin # 输入Domain信息export OS_PASSWORD=XXXXXX # 输入华为云账号密码export OS_TENANT_NAME=cn-north-1 # 输入Tenant信息export OS_PROJECT_NAME=cn-north-1 # 输入Project信息export OS_AUTH_URL=https://iam.cn-north-1.myhwclouds.com/v3 # 输入IAM的endpoint,使用v3鉴权接口# No changes needed beyond this pointexport NOVA_ENDPOINT_TYPE=publicURLexport OS_ENDPOINT_TYPE=publicURLexport CINDER_ENDPOINT_TYPE=publicURLexport OS_VOLUME_API_VERSION=2export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2 CLI命令示例 创建云服务器ECS:neutron net-list 查询网络neutron security-group-list 查询安全组nova flavor-list 查询规格nova server-group-list 查询云服务器组nova keypair-list 查询密钥对glance image-list 查询镜像创建虚拟机,带密钥、带安全组、带云服务器组nova boot --flavor s2.large.2 --image b966f093-7f4c-49b9-a932-534c4d1d7bdf(镜像uuid) --availability-zone cn-north-1a(可用区) --nic net-id=eafa3880-32f9-4586-9545-1bf5bf9a1842(网络uuid) --security-group snsg-hqtfl1-wp(安全组名称,不填就创建在默认安全组default下) --hint group=70542220-2e4b-499f-b117-16949f9fa6f6(云服务器组uuid,保证虚拟机分布在不同的物理主机上,只在创建时生效) --key-name KeyPair-e344(密钥name) test_cli_group(虚拟机名称) 上面创建虚拟机使用的是密钥对方式,那么如何在创建虚拟机时注入初始化密码呢? 原理介绍: 华为云使用开源第三方软件Cloudinit(Linux系统软件,已预装到公共镜像中)/CloudBase-Init(Windows系统软件,已预装到公共镜像中),去实现GuestOS自定义初始化密码(密码要求大写字母、小写字母、数字、特殊字符四选三)配置。 操作指导: 1、对于Windows虚拟机,增加--meta admin_pass=$password(比如cloud.1234): nova boot --flavor s2.large.2 --image b966f093-7f4c-49b9-a932-534c4d1d7bdf --availability-zone cn-north-1a--nic net-id=eafa3880-32f9-4586-9545-1bf5bf9a1842 --security-group snsg-hqtfl1-wp--hint group=70542220-2e4b-499f-b117-16949f9fa6f6 test_cli_group --meta admin_pass=cloud.1234 2、对于Linux虚拟机,增加--user-data参数: 首先在当前目录下vi一个文件,文件名自定义,比如user_data_linux.txt ,内容格式如下: #!/bin/bash echo 'root:cloud.1234' | chpasswd ; 第二步执行nova boot命令,带入user-data参数 nova boot --flavor s2.large.2 --image b966f093-7f4c-49b9-a932-534c4d1d7bdf --availability-zone cn-north-1a --nic net-id=eafa3880-32f9-4586-9545-1bf5bf9a1842 --security-group snsg-hqtfl1-wp --hint group=70542220-2e4b-499f-b117-16949f9fa6f6 test_cli_group --user-data user_data_linux.txt 创建网络:neutron net-create test333 创建网络neutron subnet-create test333 10.108.100.0/24 --name test-subnet (CIDR要在VPC网段内,比如VPC网段为10.108.0.0/16,subnet网段可以为10.108.100.0/24) 在网络下创建子网neutron router-list 查询路由器,对应于console控制台页面的虚拟机私有云VPCneutron router-inte**ce-add bcc0e8c3-a734-4c54-b206-95e3cc94bf39(路由器uuid) 8ccd2559-e0e5-4866-b4f1-54e0946df8e8(子网uuid) 将子网添加到router上,这样才能与其他子网三层互通,才能绑定EIP,配置VPN隧道 卷操作:cinder create 100 --name data-volume --volume-type SAS(SATA/SAS/SSD) --availability-zone cn-north-1a(可用区) nova volume-attach 9d9025bd-fa5d-4bd7-9b39-6ddf0689c5be(server_uuid) b4e08076-bb3a-4a63-ac1f-30fee7e64f99(volume_uuid) 挂载卷到虚拟机(注意:虚拟机ECS与卷EVS要在相同的AZ下)
  • 解读华为云RDS技术如何助力企业IT云转型
    本帖最后由 Tim Lee 于 2017-11-17 14:32 编辑解读华为云RDS技术如何助力企业IT云转型 云趋势 据《福布斯》网站报道,贝恩咨询公司(Bain&Company)最新的一份报告称,预计到2020年,全球云计算市场规模将达到3900亿美元。与2015年的1800亿美元规模相比,意味着该市场年均复合增长率(CAGR:CompoundAnnual Growth Rate,以下简称CAGR)将达到17%。 目前超过90%的客户对的需求为:替换或者升级现有的云服务、某些非关键应用,以及创建新的数字业务。 报告显示,在《财富》全球50强企业当中,有48家公司公开宣布了自己的云部署计划,其中多家企业的IT部门已在广泛使用云服务。 企业IT云转型已经成为趋势,企业对云服务完成了由“不放心”,“不安全”到“云化”纳入企业规划的转变,云时代已经到来。 本文将从一个用户的角度为您解读华为云服务如何助力企业IT云化,并在华为云服务中RDS技术上能给企业带来怎么样的支持。 认识云服务 那么是什么云服务呢?大家都有去饭店吃饭消费的经历,其实一道菜端到饭桌前包含很多服务在里面: [*]基础原材料类:食材,水,油盐酱醋等多种辅料,店面,餐椅,装修,空调,宽带等 这个恰似云服务里的IASS(基础设施即服务,又简称I层) [*]平台工具类:菜刀,砧板,煤气灶,锅碗瓢盆以及各种工具。 这个恰似云服务里的PASS(平台即服务,又简称P层) [*]成果类:一道道美味的菜肴。 这个恰似云服务里的SASS(软件即服务,又简称S层) 那么作为客户的我们所要做的只有几件事:1.点菜。 2.品尝。3.买单。简单快捷 :) 如果您不满意菜的味道,您还能要求换菜,如果您今天胃口好,您还能按需加菜。这个服务体验实际上跟“云服务”很类似。以上提到的三层也是云服务构成,云服务实际上是基于云平台的服务打包,下图展示了云服务能提为企业供多种层次的服务,甚至是“一站式”,“**”服务。 (云服务三层结构如下图) 4800 为什么要选择云服务/RDS 那么有些持家有道的朋友可能会说:饭店吃饭是很方便,但是我自己做比在外面吃便宜。“云服务”恰恰相反,“云服务”更像一家亲民饭店,不但各方面服务有更保障,而且价格还比自己做便宜放心。 我们如果想建立一个基于数据库的企业软件应用,传统的做法是自建数据库,当然我们也可以选择数据库on云服务器(云服务里的I层服务)、RDS(云服务里的S层服务)等,下图详细的展示了几选择对比,可以看出RDS具有便捷,弹性,稳定,成本更低廉的优势: 4886 图1:数据库解决方案详细对比 深入浅出RDS RDS(Relational Database Service,关系型数据库服务)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。 RDS具有较为完善的性能监控体系和多重安全防护措施,能使企业用户在云中轻松设置、操作和扩展关系型数据库。通过RDS控制台,可以执行所有必需任务而无需编程,简化运营流程,减少日常运维工作量,从而能够专注于应用开发和业务发展。 用户访问RDS实例时,需要经过ECS(Elastic Cloud Server,弹性云服务器),具体关系如图2所示。 4887 图2:访问RDS RDS是以集群为单位进行组织,一个集群由多个实例构成,集群中包含一个主机,还可能包含一个备机和若干个只读实例,它们一起为业务提供数据库服务。 RDS的最小管理单元是实例,一个实例代表了一个独立运行的关系型数据库,实例可进行如下分类: [*]主实例 [*]备实例 [*]只读实例 用户可以在RDS系统中自助创建及管理各种数据库引擎的实例。 RDS Open API 使用场景 RDS的Open API提供针对用户数据库实例的创建、查看、删除等基本操作,以及查询系统支持的API版本、数据库引擎及版本、运行环境规格、可用区域等操作。其主要的调用场景如图3和图4所示。 4888 图3:使用场景一 在创建实例之前,需要获取系统支持的数据库引擎及版本,运行环境规格以及可用区域信息。 在获取到信息之后,可以将返回结果作为调用参数,执行创建实例操作。 在实例创建成功后,用户可以对自己所属的实例进行列举、查询详细信息、以及删除操作。 4889 图4:使用场景二 数据库实例需要先查询数据库所有参数和参数信息后才能进行设置参数取值和参数恢复默认值。 数据库实例可以进行扩容和重启,可以将返回的任务号作为调用参数查询异步任务的进展情况。 RDS Open API 涉及的数据模型 在RDS的Web界面中,考虑到面向用户的易用性,将用户的数据库实例组织成集群的形式进行展现,通常一个MySQL集群中可以包含一个主实例、一个HA备实例以及若干个只读实例,或者只包含一个主实例和若干个只读实例,不包含备实例,其中只读实例不超过5个。如图5所示为API数据模型。 4890 图5:API数据模型 在RDS的Open API中,考虑到与OpenStack Trove的兼容,对外只以实例级别提供服务, 与Web界面上的集群组织方式的对应关系为: 在创建实例时会默认创建出一个集群,并将创建出的实例显示在此集群下。 在列举实例时会将此用户所属的所有实例以列表方式给出,不会体现出集群到实例的层次关系。 删除只读实例与界面功能相同,都是指定实例进行删除;删除主备实例时会同时将实例所属的集群一同删除,但前提条件是必须将集群下属的只读实例提前删除。 数据库解决方案对比 RDS背后聚集了华为的DBA团队专门负责运维,数据库内核开发团队负责改进数据库,将很多需要DBA日常运维的工作逐渐纳入实现产品化。使用的客户可以从很多底层的任务中解放出来。 RDS 数据库实例的生命周期包括创建、修改、重启、备份和还原以及删除等,具体如图7所示。 4891 图7:数据库实例生命周期管理 认识华为云RDS RDS作为云服务中I层之上S层之下一种居于数据库的重要的P层服务,华为云RDS为是华为云推出的一种关系型数据库服务,把关系型数据库作为一种服务部署于云上,旨在实现数据库的自动化部署和运维,大幅降低数据库的使用门槛和运维成本。 华为云RDS 能为企业带来哪些好处? 即开即用——省钱、快速 企业无需购买昂贵的服务器、操作系统和数据库管理系统等软硬件,无需手工安装部署和调优数据库管理系统,只需登录华为云,花几分钟按需订购,即可快速开通性价比更高的数据库云服务。 稳定可靠——省事又省心 服务可用性高,任何时候一旦主服务器出现故障,都可以快速自动切换到备服务器上,企业无需安排专人7*24小时全天候值守维护;数据可靠性高,支持自动备份,可保留或恢复最近7天内数据,预防数据丢失或出错造成不良影响。 便捷管理——可视又可控 具有界面友好的Web管理控制台,您只需简单点击几个按钮或链接,很多数据库管理工作(比如备份、恢复、监控等)即可由RDS后台管理系统自动完成,这样就大幅降低了对 DBA 所需要的技能要求门槛。 弹性伸缩——按需、合身 按需弹性伸缩CPU、内存、磁盘或数据库节点等计算和存储资源,无需事先一次性投入固定高成本,大幅缩短扩容周期,避免错过业务发展最佳时机,另外还可以及时采取收缩策略,避免业务回落导致投入资源闲置浪费。 华为云RDS功能特性 [*]数据库类型及版本:RDS数据库实例支持开源社区版MySQL 5.6、5.7,开源社区版PostgreSQL 9.5、9.6,Microsoft官方标准版SQL Server 2014 12.00 (含授权许可)。 [*]数据安全:多种安全策略保护数据库和用户隐私,例如:VPC、子网、安全组、VPN、云专线、SSL认证及通信加密、数据库防火墙(DBF)、数据审计保护(DAP)、数据泄露保护(DLP)、Anti-DDoS等。 [*]数据高可靠:数据库存储支持三副本冗余,可靠性高(达到99.99999%)。 [*]服务高可用(同城容灾):RDS会自动将主实例数据复制到一个备实例中,一旦主实例发生故障导致不可用,即可在很短时间内切换到备实例上。RDS主备实例支持AZ内或跨AZ部署,服务可用性高(达到99.95%)。 [*]异地容灾:支持创建异地只读实例,通过数据复制服务(DRS)实现异地数据实时复制,在突发状况下,用户可将异地只读实例切换为主实例,保障业务可用性。 [*]实例访问:支持多种访问方式,包括:内网IP访问、VPN访问。 [*]数据迁移:可以结合数据复制服务(DRS),通过自助方式完成平滑的迁移过程,实现业务中断时间最小化。 [*]实例管理:支持实例的增、删、改、查、重启等生命周期管理。 [*]实例监控:支持监控数据库实例及数据库引擎的关键性能指标,包括计算/内存/存储容量使用率、I/O活动、数据库连接数、QPS/TPS、缓冲池、读/写活动等。 [*]弹性伸缩:水平伸缩:支持增删只读实例(MySQL、PG最多5个,SQL Server不支持只读实例);垂直伸缩:支持实例规格变更,存储空间扩容(最大2TB)。 [*]备份与恢复:备份:支持自动备份、手动备份,全量备份、增量备份,支持备份文件的增、删、改、查、复制等生命周期管理。恢复:支持恢复到备份保留期内任意时间点(Point-In-Time Recovery, PITR)/某个全量备份时间点,支持恢复到新实例/原实例。 [*]日志管理:查询MySQL数据库的“错误日志”和“慢查询日志”,PostgreSQL数据库的“最近日志”,SQL Server数据库的“日志信息”,为数据库调优提供参考。 [*]参数管理:数据库管理员可以根据监控和日志等信息,对数据库引擎参数进行自定义设置,从而优化数据库。另外,支持参数组的增、删、改、查、复制、比较、重置等生命周期管理,方便用户批量管理实例的数据库引擎参数。 华为云RDS性能参数 [*]CPU 最大32核 [*]内存 最大128GB [*]IOPS 最大20000(SSD) [*]连接数 最大3000个 [*]存储空间 最大2TB 华为云RDS产品构架: 4892 更多技术细节请参考:http://support.huaweicloud.com/rds/index.html 结语 华为云RDS可以解决当前各类电子商务网站、社区网站、移动APP以及游戏类应用数据库搭建、管理以及维护的高成本及复杂性问题,使用户可以将更多的精力聚焦到应用和业务等核心层面,节约硬件成本和软件等成本,实现按需付费。 华为云RDS支持主从热备、读写分离,且提供了备份、恢复、监控等方面的全套解决方案,从而解决数据库运维上的问题。
  • SSnatchLoader恶意软件更新分析
    本帖最后由 小白 于 2017-11-7 16:36 编辑介绍 几个月前,有一个关于关于垃圾邮件广告的Twitter ,当时是一个未知的“downloader”恶意软件,该恶意软件专门用于将恶意软件分发(或加载)到受感染的计算机系统上。根据我们的分析,该“downloader”恶意软件是“SnatchLoader”恶意软件的更新程序,KernelMode.info论坛在2017年1月期间有对SnatchLoader进行简要讨论的相关帖子的。正如论坛上该帖子所述,尽管没有进行详细的代码比较,但SnatchLoader和H1N1 Loader的恶意软件家族似乎有一些相似之处。除此之外,目前我们还没有看到任何关于SnatchLoader恶意软件的进一步讨论,因此本文我们将对SnatchLoader最新版本更新进行分析。 样本 Twitter 中引用的示例在VirusTotal上可以找到。 然而,我们的大多数静态分析工作是在更新版本的“核心DLL”上执行的,该更新程序的最新编译日期为2017-10-04,该DLL在2017年10月11日首次被上传到了VirusTotal上。 Windows API调用 通过我们的分析发现,该恶意软件对Windows API的调用都是在运行时通过函数名哈希的方式进行的,散列算法是ROL和XOR运算的组合,在GitHub上可以找到该散列算法的一个Python代码实现。以下是一些API函数名称及其对应的哈希表:
  • API管理基础知识集锦
    [indent]原文:The Basics Of API Management 作者:Kin Lane 翻译:Vincent [/indent]译者注:作者在本文中将API管理的一些基础知识整合成了综合列表,这些列表是由一位API管理大神提炼出来的,可以说是API管理的不同组件了。以下为译文。 我正在开发一套基础的API管理策略。这套管理策略涉及到的每一个方面,都倾注了我的毕生之所学。这么多年过去了,我已经将API管理的许多方面单独分离出来,形成了一组核心元素,这些元素也反映了API管理是如何一步一步发展成为数字商品的。总的来说,这有助于我去认真思考API操作的每个方面,而且也能将我平日里面所学习到的内容应用到我正在从事的项目,这样我就可以对API管理做进一步的提炼。 API管理是我所有研究领域中存在时间最久的。正是它启发了我对于其他方面的研究,而且同时它也是API经济里面相对比较成熟的了。我正在研究的这个项目给了我一个机会,让我去思考API管理究竟是什么,应该拆分为哪些不同的关注领域。我已经把API管理的精髓给提炼出来,大概包括以下几个方面: [*]Portal - 是一个单独的URL,可以用来查找关于API的所有信息,将该服务启动运行起来,并使用所有的可用资源。 [*]On-Boarding - 只需要考虑如何让新开发人员在portal主页上登陆,以实现API的第一次调用,接下来就是在生产应用实现调用。 [*]Accounts - 允许API使用者注册一个帐户,用于个人或企业访问API资源。 [*]Applications - 允许每个帐户持有人注册一个或多个应用程序,这些应用程序将使用API资源。 [*]Authentication - 为API使用者提供一种或多种方式进行身份验证,从而能够访问API资源。 [*]Services - 定义在一个或多个API路径上提供哪些服务,从而提供对各种业务服务的HTTP访问。 [*]Logging - 对API的每个调用都通过API管理层记录,以及DNS、web服务器、文件系统和数据库级别。 [*]**ysis - 了解API是如何被使用的,以及应用程序如何将API资源用于使用,识别所有API的使用模式。 [*]Usage - 对所有帐户和它们的应用程序进行量化使用,然后向所有API使用者报告、计费和协调使用。 [*]APIs - API访问帐户、身份验证、服务、日志记录、分析和使用API资源。 还有一些与API管理**在一起的比较常见的元素,这些元素也反映了API管理的核心是什么——API的业务。哪些人拥有哪些权限,他们又使用了哪些权限,将这些信息都记录下来。API管理中还有许多其他方面也需要考虑,但我已经将它们作为一些单独的模块了。这些元素包括: [*]Documentation - 静态或交互式文档,用于所有可用的API路径、参数、头,以及API请求和响应表面积的其他细节。 [*]Support - 自助服务,或直接支持通道,API消费者在此过程中使用这些通道来获得帮助。 [*]SDKs - 用于web、移动或其他类型应用程序的SDKs、示例、库和其他支持代码元素。 [*]Road Map - 当涉及到API时,交流未来的内容。 [*]Issues - 有关API的可用性的任何公开问题的通知。 [*]Change Log - 关于更改API的历史。 这些领域也对API管理做了补充,但应该超越API操作的日常管理方面。我还考虑了身份验证、日志记录和分析,而不仅仅是API管理,因为这三个领域都应该不仅仅涵盖API,但是它们仍然与API管理的核心部分紧密相连。在我的定义中,API管理在很大程度上是关于管理资源的消耗,而不是API操作的其他方面。这不仅仅是我的定义,而是我所看到的API管理的商品化,就像我们在Amazon Web服务上看到的那样。 AWS API Gateway实际上是关于帐户、应用程序、身份验证以及服务的。日志、分析等都是由AWS CloudWatch提供的。对于正在研究的这个特定项目,我使用了GitHub和Jekyll作为Portal,并分别使用自定义交付、使用和支持api。进一步缩小我对API管理的定义。我想说,AWS在API管理方面表现得不错,与AWS API Gateway和AWS CloudWatch之间的关注点分离。如果你将AWS Cognito应用于身份验证,那么你可以将另一个应用程序分离出来。我没有看到任何可行的解决方案来处理使用、计费和API管理的业务和货币化方面。 我正在从事的API项目已经使用了AWS作为操作后端,因此我也有机会去更好的了解API管理中的活动件在AWS平台中是怎么一回事。在AWS平台里面认真研究一下API管理如何解耦是非常意义的,因为它们是商品化的主要参与者,而且也在日益趋于成熟。一旦完成了AWS以后,谷歌和Azure将是接下来的目标,这些也都是定义API管理未来的主要参与者。
  • [技术干货] 【NB-IoT业务系列】——SoftRadio
    本帖最后由 梅子 于 2017-11-2 15:52 编辑 什么是SoftRadio呢? SoftRadio是用来实现远程online调试模式的系统,在项目集成时,有时模组、基站等还没有就绪,便会使用SoftRadio进行端到端集成验证,提升设备接入调试效率。 IoT平台作为NB-IoT业务统一的联接平台,需要支撑生态建设扩展。因此,需要支撑NB-IoT的模拟器SoftRadio接入到IoT平台。 NB-IoT芯片的开发已使用SoftRadio进行模拟开发。在使用TUP协议后,平台支持SoftRadio使用TUP协议接入到IoT平台。 注意啦注意啦: 该特性仅用于OceanConnect生态圈扩展NB-IoT业务时,提供给开发者做调试使用,属于测试特性,禁止在任何商用局点环境使用。 SoftRadio功能 SoftRadio主要分为三层: [*]芯片终端应用开发者:使用芯片接入到SoftRadio可以观察,也可上报到平台。 [*]不具备芯片的终端应用开发者:开发终端应用,连接到SoftRadio查看数据流,同步数据。 [*]Network Application开发者:使用SoftRadio模拟真实设备上报数据,数据信息等。 我的价值可大啦~ 基于SoftRadio和远程实验室,实现NB-IoT设备及业务的远程集成验证。 仿真工具及平台远程接入,体现伙伴“离岸联调,提升效率”价值。 不具备芯片的终端应用开发者也可以接入进行终端应用的开发。 可模拟真实设备进行数据上报。 虽然我功能如此强大,但是我也有局限性,毕竟我还在成长嘛~ SoftRadio仅应用于测试场景,不允许接入客户现网以及进行商业使用。 SoftRadio使用者同时在线数不可以超过3000个。 SoftRadio使用创建的设备需要保存deviceID,appID和password,一但丢失需要删除设备重新创建。 如何实现的? SoftRadio通过南向REST API接入平台 [*]绑定API:携带verifyCode以及设备详细信息,在平台注册绑定,获取deviceID,appID,password信息。 说明: verifyCode格式为TEST$_UUID,即北向注册时需要填入nodeId和verifyCode格式为TEST$_UUID。获取deviceID,appID,password后需要妥善保存,防止丢失,一但丢失则需要删除device,重新创建和绑定。 [*]登录API:使用deviceID,appID,password登录平台,同时获取token以及CoAP订阅通知的token。 [*]MO API:携带整个CoAP报文和token,上报到平台的SR Adapt,并转换为CoAP over UDP进行处理。 [*]MT API:从平台获取平台向SoftRadio下发的CoAP消息包,每次获取一条。 MO/MT消息 [*]通过头域中的deviceID和accesstoken,调用NSCL的鉴权接口,获取所属的APPID,gatewayID以及设备列表,同进判断参数中的deviceID是否在设备列表中或都等于gatewayID。如果通过则直接返回失败。 [*]MO消息则直接将body体中的payload,通过base64解码后,交由CoAP连接池发送到CIG,并返回成功。 [*]MT消息则在鉴权通过后,直接从数据库中将MT消息取出,并通过base64编码后,通过回应消息返回。 模拟CoAP over UDP接入 IoT平台实现SR Adapt来模拟真实芯片的数据上报、命令下发等功能与CIG对接,提供南向REST接口与SoftRadio对接。 CoAP连接池: 最大支持1000个CoAP Server连接,起始EndPoint的端口为[30000,30999],IP为127.0.0.1。每当device注册、数据上报、命令下发时,从连接池中分配空闲的连接与deviceID绑定,如果16秒内没有数据流,则自动回收(解除deviceID与EndPoint的绑定关系,并放到空闲队列中)。 CoAP协议栈: 提供CoAP发包和收包监听通知,当MO REST消息发的消息包过来时,通过直接抛入UDP层队列,发到CIG上。当CIG发包到SR Adapt时,截取到并查找到对应的deviceID,如果有命令下发消息则入MT队列(数据库实现),MT REST消息过来时,直接从队列中取出整个CoAP包回应给SoftRadio。
  • 当我们准备做前后端分离项目时,我们在考虑什么?
    本帖最后由 Jay 于 2017-10-11 15:48 编辑几年前做前后端分离项目的原因,是node刚刚横空出世,业界开始考虑如何真正的用js去写后端服务,于是就借鉴阿里中途岛项目去尝试,主要还是用到了node的密集io场景下的转发。 2694我们的新项目是采用前后端分离的方式进行开发,这一点主要是基于产品特点考虑而来,产品本身会有很强的富客户端的特点。我们后端服务面向的客户端包含:iOS,Android,iPad,H5,还有一些游戏场景。所以最好的方式就是后端提供通用的restapi进行数据传输,而前端展示逻辑则交由不同客户端自己实现。前后端分离项目主要基于微服务架构开发,既然是微服务,所以分布式系统所应该面对的问题一个也漏不掉。JAVA微服务开发场景下,SpringBoot可谓神器,我们基于SpringBoot开发了一个可以快速开发的脚手架,脚手架本身包含了常用及通用的基本功能,如auth验证,功能鉴权,Mysql,Mq,Redis及通用配置的依赖,这样开发工程师在需要开发新功能时,直接从对应的代码库拉下来,编译之后便可跑起来一个hello world的restapi项目。剩下的工作就是围绕业务逻辑去写repository,service,controller代码了。通信服务之间的通信主要可以通过HTTP,RPC方式,众所周知RPC调用的效率要高HTTP好几个等级,所以推荐使用RPC,但是综合考虑系统性能及可用性,快速开发等因素,我们也大量使用HTTP进行服务调用,同时我们也通过Golang对一些核心api,比如支付,交易类接口进行了重写,所以需要在系统效率及开发效率之间做好平衡。接口规范虽然是前后端分离项目,大部分是通过restapi方式给客户端暴露数据,但是也不可避免在系统中会存在自己的view页面,所以在api及controller命名上会建立:AuthApi,AuthController,约定大于配置,可以帮助我们后端对不同的请求做隔离和控制。任务类系统项目中不可避免存在大量的任务程序,主要需要做好数据备份,考虑分布式场景下的任务调度,资源分配问题,主要根据场景不同进行开发。我们采用Zk+定时任务自研的调度系统,也可以采用开源的Elastic-Job方案。依赖梳理这个是一个项目开发过程中最重要的一点,梳理好系统上下游所依赖的服务,同时梳理好服务之间的等级关系。依赖关系主要分为两部分:依赖别人,被别人依赖;依赖别人的服务,包含其他系统API及底层的数据库,Redis,MQ等服务,需要做好对方服务不可用的准备,随时做好降级,限流及开关功能,最好做成可配置,自动化。被别人依赖的服务做成高可用,幂等性,响应数据的可读性好等特点。同时对服务依赖性梳理,哪些系统属于强依赖,哪些属于若依赖。不同依赖的标准做好开关,降级,重试等功能,强依赖比如DB挂了,可以写日志,写到MQ。弱依赖可以做成柔性降级,比如写日志到ES中,ES不可用,可以直接降级即可。对于黄金等级服务,则一定保证服务高可用,可以做灾备,比如依赖集群,多个机房,也就是这个服务是不可降级的,必须准备多套方案保证服务可用。关于依赖降级可以使用Hystrix做。用户友好性做好最坏的打算,如果后端服务全部不可用,前端转发问题等,一定不要给用户一个错误页面,一定建立多级缓存,有数据托底,无论如何保证页面上有内容的。总结综上所述,做好工具,梳理好服务依赖,对服务做等级划分,弱依赖可以通过降级,限流方式处理。强依赖则必须通过多种灾备手段保证高可用,不要给用户感到恐慌的页面,要有数据托底。来源:博客园
  • 冷存储也有了云方案
    本帖最后由 小云妹妹 于 2017-9-8 10:04 编辑1. 冷存储及其应用 存储类型的划分,根据用户的访问热度,可以分为冷存储,温存储,冷存储。对于冷存储,通常意味着不会经常被访问的数据,也或许永远不会被访问的数据,但还用户还是希望保留的数据。数据统计显示,全球信息中约85%的数据将会以冷存储的形式存在。 冷存储适用于档案数据、 医疗影像、视频素材、磁带替代、备份等领域。这类数据具有访问频率低、存储量大、单位存储成本要求低等特点。随着存储的在线化,存储也越来越要求可随时访问。例如法律电子取证要求已存档的数据必须在特定的时间范围内可用。因此,这就要求存储服务提供商以及企业必须确保数据的完整性,以及及时的访问权限。 2. 冷存储的私有云方案 冷存储概念在2014年开始热起来,近年大型存储供应商都陆续针对冷存储提供了私有云的解决方案,目前国内的主流存储供应商都提供有私有云的存储解决方案,如华为、浪潮、联想等。 冷存储的核心思路是企业将计算分析业务与数据存储业务分离,当存储服务器的硬件资源主要用于数据存储,数据块为大块数据时,将这些不常访问的“冷”数据,如果我们能把他们迁移到一个专为冷数据而设计的低成本存储层中,将能大幅降低费用。 私有云虽然解决了冷存储的大部分问题,但正如传统模式一样,在没有真正云化的本质下,面临着这样的一些问题: 1) 复杂的采购;2) 实施;3) 维护;4) 昂贵的硬件;5) 前期资本支出; 特别是新兴企业,在面对未来的不确定性,存储的私有云解决方案确实不能算是个完美的解决方案,一方面私有云的固定成本加重了新兴企业的Capex负责,另一方面,复杂的运维管理也对企业的技术管理提出了挑战。 3. 冷存储的新趋势 公有云存储解决方案很好的解决了这个问题,使用华为云的对象存储服务,真正实现了存储的云化(在线、按需、实时),总结起来有以下7点好处:1) 没有大笔硬件开支:公有云按量按时付费,不需要大笔硬件开支;2) 省去了维护成本:因为不涉及到设备维护,不需要培养相关的技术人员;3) 省去了设备占地:因为不需要设备,不需要专门的机方进行放置;4) 高可靠性:华为云的公有云存储,实现了11个9的可靠性保障;5) 无冗余:存储按需分配,需要用多少再买 多少;6) 无限扩容:海量数据,按需扩容7) 不间断服务:存储设备需要相应的升级带来业务中断; 近期,华为云对象存储更是根据不同需求提供了针对性的解决方案,热存储价格为0.159/GB/月;温存储价格为0.08/GB/月;冷存储价格为0.033/GB/月。可以看到,针对冷存储数据,针对性的选择产品,可以大大的将成本降低不到一半的水平。综合华为在私有云存储的产品品质积累,各中小企业在遇到冷存储的需求时,建议考虑选择华为云对象存储OBS的冷存储产品。 华为公有云存储产品价格:http://support.hwclouds.com/pro_price/#mod_price_04 立即体验华为云
总条数:1108 到第
上滑加载中