2020年7月31日星期五

亚马逊Q2净利润翻番,疫情下获26年来最大利润!

亚马逊Q2净利润翻番,疫情下获26年来最大利润!

7月31日报道,周四,亚马逊公布第二季度财报显示,亚马逊二季度营收889亿美元,预期818.5亿美元,较上年同期的634.04亿美元增长40%;净利润52亿美元,预期6.2亿美元,较上年同期的26.25亿美元增长100%。其中,AWS云计算业务收入108亿美元,预期110美元。

1.png

亚马逊获得了26年历史上的同期最大净利润,路透社认为,主要是因为在冠状病毒大流行期间,网购等支持第三方商家入驻的业务激增。

尽管竞争对手的实体零售商不得不在疫情带来的封锁期间关闭商店,但亚马逊近几个月雇用了17.5万名员工,并且服务需求猛增。该公司表示,营收较上年同期增长40%,达到889亿美元。

亚马逊此前曾预测可能会在刚刚结束的第二季度出现亏损,因为它预计将花费约40亿美元购买员工防护设备以及与COVID-19相关的其他费用。现在来看,它做到了前者,但仍然赚了52亿美元,使其净收入比一年前翻了一番。

亚马逊表示,该公司二季度在线商店的销售额为458.96亿美元,超过去年同期的310.53亿美元,增长了48%;实体店销售额为37.74亿美元,低于去年同期的43.3亿美元。

2.png

Investing.com的高级分析师杰西·科恩(Jesse Cohen)表示,亚马逊的商业模式为其建立了"在全球COVID-19大流行继续蔓延的同时,进一步扩大其在电子商务领域的主导地位"。

随着公司转向大流行的虚拟办公室,亚马逊的云服务也看到了更高的需求。来自亚马逊网络服务(AWS)的收入增长了近29%,达到108.1亿美元,后者在云中销售数据存储和计算功能。

不过,根据Refinitiv的IBES数据,这仍略低于分析师估计的109.5亿美元。对手谷歌同时是比去年上升超过43%。

盘后交易中,全球最大的在线零售商亚马逊的股票上涨了5%。亚马逊的股价今年以来已经上涨了60%以上,这为其最大股东贝佐斯(Bezos)增添了财富。此外,苹果、谷歌、Facebook也因不错的财报表现获得股价上涨,四大科技巨头的市值飙升了1.6万亿人民币,有人惊呼"涨出了两个中石油"。

亚马逊预计第三季度销售额为870亿美元至930亿美元,营业利润将在20亿美元到50亿美元之间。

文章来源:路透社


查看原文:https://www.ikjzd.com/home/126843

灰色清关:http://www.ikjzd.com/w/1409

BQool 亚马逊卖家快闪免费培训会 (深圳场):https://www.kjyunke.com/courses/245

败欧洲:http://www.ikjzd.com/w/1555

亚马逊Q2净利润翻番,疫情下获26年来最大利润!

2020年真的是外贸寒冬吗?逃离还是坚持?

2020年真的是外贸寒冬吗?逃离还是坚持?

2020年注定是非常不平凡的一年,外贸人可以说是受这次疫情影响最大的,刚刚熬完了国内的疫情,随后又要面对国外疫情的残酷洗礼。两波清洗下来又有多少外贸人失去了信心,放弃了坚持?

于是大多数人都在唱衰外贸行业,唱衰跨境电商,很多无脑的人会跟着一起附和,说今年这个形式外贸确实不好做啊!但是事实的真相到底是什么呢?疫情冲击之下,中国的外贸数据出奇的好,连续三个月正增长。

南怀谨说过一句话:"危机的本质就是机遇"。善于在看似是危机的危机中寻找生机和机遇,才是聪明的外贸人应该做的事情!

危机下的机遇:

给大家分享一个身边的真实案例,一家做汽配的跨境电商卖家,2019年整个公司遭遇到了非常严重的危机,公司虽然明面上的出口销售额很高,但是利润基本都是负的,公司在2019年下半年面临现金流断裂的残酷处境,连续几个月工资都发不出来。

整个公司人心惶惶,有能力的员工纷纷选择离职,公司几乎面临破产。

但是恰恰是这次疫情让这家公司打了一个漂亮的翻身仗,6月国内疫情开始缓解,但传统出口业务仍旧停滞。公司老板当机立断,立马就决策转型跨境电商。于是集中全公司所有的资源开始上架速卖通和ebay。

趁着海外同类商家纷纷停工停产的机遇,在短时间内获利一千多万元,欠员工的工资全部都结清了,并且公司也慢慢的开始能够正常的运转了。

这就是在危机中抓机会的典型案例!

5984.png

因此所谓的寒冬仅仅只是为了去蒙蔽普通人的双眼,永远不要抱怨这个世界没有机会,而是要问问自己有发现机会的能力和眼睛吗?

宏观政策加持下的外贸和跨境电商依旧充满机会!对于成长与互联网时代的年轻人更是这样。

疫情在全球蔓延的当下,传统外贸面临订单减少、订单取消、国际物流运力缩减等困境。跨境电商作为传统外贸转型升级的新形势,收到了巨大政策扶持,人才缺口高达450W,并且在逐年加大。

跨境电商这个行业远远没有到所谓的饱和期,无论外部环境再怎么变化,海外消费群体的巨大需求依旧存在!

在2020上半年,速卖通上的新兴市场的GMV增长趋势显著。上半年日均GMV增长最快的前五位分别是沙特、日本、韩国、阿联酋和英国。其中,沙特的增幅近200%,日、韩增幅均超过100%。

抛开传统的欧美市场,巨大的新兴市场红利正在向我们袭来,这难道不是我们外贸人,我们跨境电商人未来应该要去追逐的红利和风口吗?

相信我,你的外贸生涯永远还没有画上终点!有太多新的机会和机遇在等着你,但是不转型、不抓风口的话,你的职业生涯只能是摇摇欲坠!

近10年来,中国跨境电商B2C交易占比在不断提高,2011年,跨境B2C交易占出口比例仅2.5%,到2016年达到11.3%,到2018年已有16.8%,占比提升近8倍。

顺势而为才能够让自己走的越来越顺利,知道趋势在哪里就要往哪儿走!

疫情期间,中国制造的家电、家居、玩具、电子消费等用品在速卖通平台上的海外销量涨幅均超过了40%,智能电视机同比增长了100%,电冰箱在西班牙市场增长700%,欧洲解封后自行车销量在欧洲暴涨,西班牙增长22倍。

中国假发是老外的刚需产品,疫情在海外爆发后,线下的商场、超市纷纷关门,很多外国消费者就选择线上购买。4月以来,速卖通上欧美等主要市场的假发成交额增长了100%。5月份相比3月份,全球假发的成交买家数增长了40%。

所谓的外贸寒冬永远只是无能者的说辞,而对于强者来说,这恰恰是他们发现机会的开始。


查看原文:https://www.ikjzd.com/home/126795

2017站外营销全攻略:https://www.kjyunke.com/courses/327

亚马逊春季选品实战暨新政解读沙龙:https://www.kjyunke.com/courses/388

如何构建关联流量来打造销售闭环:https://www.kjyunke.com/courses/447

2020年真的是外贸寒冬吗?逃离还是坚持?

最全Coupon解读,Coupon怎么玩儿?有什么优势?

最全Coupon解读,Coupon怎么玩儿?有什么优势?

Coupon是什么?

优惠券:Coupon是亚马逊后台可以自行设置的一个促销功能,是买家可以在产品页面直接使用的一个优惠码。亚马逊给予买家一些折扣,来换取平台更多的流量和曝光。产品设置优惠券时,产品就会有一个绿色的小徽章。

可以通过优惠券为单个商品或一组商品提供折扣,还可以通过亚马逊享受优惠券自动推广。买家可以通过以下选项查找优惠券:

优惠券主页/搜索结果/商品详情页面/【所有卖家报价】页/在他们的购物车中

优惠劵手续费: 每笔成功兑换的优惠劵将被亚马逊收取手续费0.6美元。

1.png

 

 

优惠券申报要求:

卖家们如果创建亚马逊上的优惠券,你的产品需要满足优惠券申请的这些条件:

1、对于卖家  卖家反馈评分必须达到3.5星以上。  卖家必须参加专业销售计划,非个人卖家。 2、对于商品  允许0 评论商品(没有评论)  如果某商品有1 到4 条评论,那么该商品的评分必须达到2.5 星或更高  如果某商品有5 条或更多评论,那么该商品的评分必须达到3 星或更高  商品单价在五美元以上  商品必须处于新品状况  不允许标记为成人用品的商品  商品的配送渠道(FBA,MFN)没有影响

 

 

如何创建优惠券?

第一步:优惠券入口:  Seller Central—广告—优惠券。

2.png

第二步:首先进入后台,在advertising中点击coupon-->点击 create a new coupon

3.png

第三步:Search & Add products设置

把需要设置折扣促销的商品添加至Coupons,search "ASIN或SKU "后,点击"Add to coupon";

4.png

第四步:Add to coupon

5.png

第五步:Budget & Discount设置

设定折扣可以选择 "Percent off"或 Money off"(折扣必须是30天内最低价的 5%~80% off),接着要选择限定一个客户是否只能使用一次;

6.png

第六步:Schedule & Target 设置

设定预算(Budget),每个 coupon 的使用,亚马逊都会取0.6 美金的费用。

7.png

第七步:提交

搜索Asin或者产品名称,添加产品。输入优惠券的标题,再选择针对对象。确认后提交。

8.png

第八步:设置时间

可以为每个优惠劵选择起始日期和截止时间,优惠劵在提交后经过6 小时才能生效。

9.png

最后一步:提交

确认无误后,之后提交。

10.png

优惠券申报注意事项:

不建议优惠劵与其它促销活动一起使用,可能会导致活动资格被取消,产生折上折造成消费者混肴。

优惠劵的有效期最多是90 天。

你可以为每个优惠劵选择起始日期,优惠劵在提交后经过6 小时才能生效。

优惠劵折扣只能在5% 到50% 之间(美国: 5%-80%)

如果某个亚马逊商品在优惠劵激活后出于某种原因失去了优惠劵资格(低库存、产品评分等),我们会禁止该商品使用优惠劵。

如果你的优惠劵中包含10种产品,其中有2 种不符合资格,那么买家可以看到剩下的8 种产品,您的优惠劵仍然有效。

一旦你的优惠劵被激活,允许进行的编辑仅限于延长持续时间(最多共可延长3个月)或增加预算。如果想做任何其它更改,您需要取消现有的优惠劵,然后创建新优惠劵。

优惠券的好处?

适合新品推广,使用门槛相对低

没有评论商品也可使用。

明显的显示徽标

在搜索结果页上的徽标对商品能见度有大幅提升。

11.png

顾客更容易被有优惠券的产品吸引并且点击购买

12.png

优恵券有专属的展示页面,会获得额外的流量与展示机会,在旺季的时候展示机会会更多。

13.png

搭配广告能加速引流

开50% coupon 增加CR,同时FB折扣或者站外DN、SD,快速增加销量,有一定的review并且销量稳定后,把coupon降到20-30%,同时价格降低售价增加销量,以此提升coupon排名,甚至有机会上首页。

吸引固定客群

优惠劵的针对特定客群展示功能可减少无效曝光进而提升转化。

站外引流

优惠劵让卖家能方便的在相关网站进行露出。coupon结合折扣网站做站外营销。折扣网站营销。找到同行卖家的产品,利用他的亚马逊ASIN在谷歌上进行搜索,找到其他卖家在网站上做的优惠促销,并且在这个平台上学习他的促销方法进行自己的Coupon促销。

建议:

我们是根据买家的兴趣和优惠劵吸引力对优惠劵进行排名的。你的优惠劵的点击次数和兑换次数越多,它在优惠劵主页上显示得就越靠前。

请考虑将优惠劵放在你的社交媒体账户上,以此为其带来更多流量,助其在优惠劵主页上获得更高的排名。

来源:跨境不求人

查看原文:https://www.ikjzd.com/home/126800

易趣:http://www.ikjzd.com/w/210

关键词数据分析:https://www.kjyunke.com/courses/550

IT系统:https://www.kjyunke.com/courses/113

最全Coupon解读,Coupon怎么玩儿?有什么优势?

亚马逊仓库开始收取长期仓储费

亚马逊仓库开始收取长期仓储费

亚马逊发布了一条公告:通知亚马逊卖家8月15日即将开始长期仓储费用的清算,要对存放亚马逊仓库中超过365天的货物收取长期仓储费。

5979.png

每个月的15日是亚马逊FBA计划的长期仓储费清点日。到时候亚马逊将对在美国运营中心货物存放超过365天按照每立方英尺6.9美元或者每件商品0.15美元的标准(以较大值为准)收取费用。长期仓储费是月度库存仓储费之外的费用。

亚马逊美国站、墨西哥站发布公告称,即将进行长期仓储费库存清点。

美国站原文内容如下:

美国站2020 年 8 月 15 日是亚马逊物流 (FBA) 计划的下一个长期仓储费库存清点日。在这一天,我们将对已在美国运营中心存放超过 365 天的库存按每立方英尺 6.90 美元或每件商品 0.15 美元的标准(以较大值为准)收取长期仓储费

墨西哥站原文内容如下:

2020 年 8 月 15 日是亚马逊物流 (FBA) 计划的下一个长期仓储费库存清点日。在这一天,我们将对已在墨西哥运营中心存放超过 365 天的库存按每立方分米 3.48 墨西哥比索或每件商品 2.32 墨西哥比索的标准(以较大值为准)收取长期仓储费。这些费用包含增值税。

对于因我们无法取件、包装或配送而停止接收买家订单的商品,我们将免除受影响这段时间的月度仓储费。

亚马逊物流会在整个配送网络中按照先进先出 (FIFO) 的原则计算库龄。无论你实际配送或者移除是哪些商品,亚马逊物流都会从在配送网络内存放最久的库存中扣除销售或者移除的商品。

所以建议移除报告会自动按ASIN 计算您需要移除以免产生长期仓储费跟商品数量(假设不会发生相关享受)但是你也可以使用库龄和库存状况报告来确定每个ASIN 的库龄。


查看原文:https://www.ikjzd.com/home/126763

选品及产品上传实操:https://www.kjyunke.com/courses/347

传统外贸制造企业的转型:https://www.kjyunke.com/courses/497

wish精准选品、Tags和爆款开发:https://www.kjyunke.com/courses/80

亚马逊仓库开始收取长期仓储费

2020年7月30日星期四

【.NET框架】—— ASP.NET MVC5 初识(一)

章节一 MVC5

MVC全名是Model View Controller,是模型(model)——视图(view)——控制器(controller)的缩写,是一种软件设计典范,提供了一种用业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构。

ASP.NET MVC是一种构建WEB应用程序的框架,它将一般的MVC模式应用于ASP.NET框架。ASP.NET MVC经历了5个主要版本的迭代,其中ASP.NET MVC4和MVC5是目前比较成熟的版本。

ASP.NET MVC4主要功能包括:

①ASP.NET Web API;

②增强了默认的项目模板;

③增加使用jQuery Mobile的手机项目模板;

④支持显示模式(Display Mode);

⑤支持异步控制器的任务

ASP.NET MVC5主要功能包括:

①单一的ASP.NET开发组件;

②提供了新的Web项目体验;

③ASP.NET Identity;

④BootStrap模板;

⑤特性路由;

⑥身份验证过滤器;

 

开发环境支持:

MVC5需要.NET4.5,VS2013以上版本

1.1.创建MVC Web应用程序

①新建项目

 

 

 

选择MVC如下图所示:

 

 

 

1.2.MVC项目文档的结构

 

 

 

App_Data:应用程序本地存储;

App_Start:应用程序配置逻辑文件;

RouteConfig.cs:配置MVC应用程序的系统路由路径;

Content:该文件夹被推荐用于存储静态内容文件类似CSS 和 (图片)Images;

 

 

 

1.3.MVC5 Controller对应View页面

Controllers控制器方法会返回一个页面视图,和Views中的html页面一一对应

 

 

 

注意:界面必须和Controller中方法名字一一对应,不然会报错;

 

 

 

1.4.创建Model模型并向View展示数据

①在Model层中创建对应的User类,并在Controller层中Index方法中引入UserList;

public class TestController : Controller {  // GET: Test  public ActionResult Index()  {   User user = new User();   user.Name = "测试人员1";   user.Age = 24;   User user2 = new User();   user2.Name = "测试人员2";   user2.Age = 23;   List<User> userList = new List<User>();   userList.Add(user);   userList.Add(user2);   return View(userList);  } }

②在Views层中对应Controller的方法视图下进行展示;

视图引入模型

 @using 包文件

 @model IEnumerable<类>

展现数据

<ul>

        @foreach (类 a in Model)

        {

            <li>@a.Name</li>

        }

 </ul>

<!--视图引入模型-->@using WebApplication01.Models;@model IEnumerable<User>@{ ViewBag.Title = "Index";}<!--数据展示List集合--><ul> @foreach (User user in Model) {  <li>@user.Name</li>  <li>@user.Age</li> }</ul>

1.5.创建数据库链接实现数据读取

①首先在App_Start文件下创建一个数据库连接类;

public class ConnData {  public DataSet GetDataSet()  {   string myStr = "server=DESKTOP-3POL04N;database=stsc;UId=sa;password=123456";//获取链接字符串   SqlConnection myConn = new SqlConnection(myStr);   myConn.Open();//打开数据库   string sqlStr = "select * from test01 ";//定义查询字符串   SqlDataAdapter myDa = new SqlDataAdapter(sqlStr, myConn);//sql数据适配器   DataSet myDs = new DataSet();//创建dataset   myDa.Fill(myDs);//SqlDataAdapter填充DataSet   return myDs;  } }

②在Controller层中处理更新路由Index中的逻辑;

public ActionResult Index()  {   //使用数据库查询封装User   ConnData conn = new ConnData();   DataSet dataSet = conn.GetDataSet();   User user = new User();   user.Name = dataSet.Tables[0].Rows[0][1].ToString();   user.Age = int.Parse(dataSet.Tables[0].Rows[0][2].ToString());   User user2 = new User();   user2.Name = dataSet.Tables[0].Rows[1][1].ToString();   user2.Age = int.Parse(dataSet.Tables[0].Rows[1][2].ToString());   List<User> userList = new List<User>();   userList.Add(user);   userList.Add(user2);   return View(userList);  }

1.6.MVC5+小三层架构

小三层架构示意图:

 

 

①需要新增.NET FrameWork项目Model(模型层)、Bll(逻辑业务层)、Dal(数据操作层)

 

 

 

 

②增加Model、Dal、Bll中的逻辑代码;

Model

 public class UserModel {  string name;  public string Name  {   get { return name; }   set { name = value; }  }  int age;  public int Age  {   get { return age; }   set { age = value; }  } }

Bll层:

 public class UserBll {  public List<UserModel> getUserData()  {   //使用数据库查询封装User   UserDal userDal = new UserDal(); //Dal数据链接层处理数据   DataSet dataSet = userDal.GetDataSet();   UserModel user = new UserModel();   user.Name = dataSet.Tables[0].Rows[0][1].ToString();   user.Age = int.Parse(dataSet.Tables[0].Rows[0][2].ToString());   UserModel user2 = new UserModel();   user2.Name = dataSet.Tables[0].Rows[1][1].ToString();   user2.Age = int.Parse(dataSet.Tables[0].Rows[1][2].ToString());   List<UserModel> userList = new List<UserModel>();   userList.Add(user);   userList.Add(user2);   return userList;  } }

Dal层:

 public class UserDal {  public DataSet GetDataSet()  {   //有了数据链接层Conn,这里更改为如下操作:   string sqlStr = "select * from test01 ";//定义查询字符串   var DataTable = DbHelperSQL.ExecuteDataTable(sqlStr);   DataSet myDs = new DataSet();//创建dataset   myDs.Tables.Add(DataTable);   return myDs;  } }

注意:Bll业务层需要增加项目依赖项,如下图

 

 

 

③需要在WebApplication01项目中处理Controller层和View界面层;

Controller层:

 

 

 

View层:

 

 

展示数据:

 

 

1.7.MVC5+小三层架构+数据连接层

这里是在上面的基础上新增加了一个数据连接层Conn;封装数据库连接与增删改查操作

 

 

之后修改Dal数据操作层,使用Conn中的DbHelperSQL封装Sql类来执行查询,构造DataSet:

public class UserDal {  public DataSet GetDataSet()  {   //有了数据链接层Conn,这里更改为如下操作:   string sqlStr = "select * from test01 ";//定义查询字符串   var DataTable = DbHelperSQL.ExecuteDataTable(sqlStr);   DataSet myDs = new DataSet();//创建dataset   myDs.Tables.Add(DataTable);   return myDs;  } }

1.8.MVC5+EF框架

①首先,需要自定义创建一个实体Model类UserInfoModels;

 public class UserInfoModels {  public int id { get; set; }  public string name { get; set; }  public int age { get; set; } }

②在Controllers控制器上创建MVC5的EF框架控制器;

 

 

 

 

③同时修改Web.config中的数据库连接connectionString配置,关联本地的数据库:

其中Data Source=DESKTOP-3POL04N为本地数据库服务器名,Initial Catalog为需要生成的数据库名称。

<add name="UserInfoContext" connectionString="Data Source=DESKTOP-3POL04N; Initial Catalog=UserInfoDB; Integrated Security=True;"  providerName="System.Data.SqlClient" />

④点击视图Views文件夹下面的自定义模型视图Index.cshtml启动,这时会自动由EF框架生成数据库表UserInfoDB与界面;

 

 

【.NET框架】—— ASP.NET MVC5 初识(一)马莎aeo55海淘网亚马逊CPC广告系列课1-选品和选词速卖通拟于1月底完成交易技术服务升级新3000亿美国加征关税清单英文版本开元度假村——清幽淡雅宫廷风_常州市旅游《成长》中的别样西湖美景_杭州市旅游五缘水乡——古朴简约水乡风_厦门市旅游

对存在中心节点的分布式文件系统的总结与思考

对存在中心节点的分布式文件系统的总结与思考

0. 前言

​ 本文是在学习GFS(The Google File System,谷歌文件系统)后对存在中心节点的分布式文件系统的一些宏观的总结与思考。本文并没有太多关注GFS的细节实现,而是侧重在GFS的基础上进行归纳和进一步探究。

1. 为什么需要分布式文件系统?

​ 关于这个问题,百度百科是这么说的

计算机通过文件系统管理、存储数据,而信息爆炸时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统的存储容量的方式,在容量大小、容量增长速度、数据备份、数据安全等方面的表现都差强人意。分布式文件系统可以有效解决数据的存储和管理难题.....

​ 更深层次而言,纵观人类软件系统的发展史,业务的爆炸不断驱动着技术飞速发展。随着接入网络的人数越来越多,软件系统也需要不断升级以能够满足海量用户的并发请求。而软件系统的升级过程,就是不断挑战性能瓶颈的过程。从这个角度出发,用户的增多必然会导致单机无法容纳需要持久化的数据,即使采用增加硬盘个数的方式将单机不断扩大,在达到一定规模后,查找有关数据的操作会变得非常缓慢,掣肘整体软件性能的提升。为了解决这些问题,分布式文件系统几乎是必经之路,也是唯一选择。

2. 分布式文件系统理想的实现效果?

​ 最终目标只有一句话:用户使用分布式文件系统,感觉就像在使用单机文件系统一样。

​ 而限制这一最终目标达成的最主要因素,就在于网络和机器都不是百分百的可靠。系统运行期间网络的一点点波动、时延,或者机器的一点点故障,都有可能造成用户无法看到或看到不符合预期的结果。

3. 分布式文件系统的要求?

  1. 大容量。这点是分布式文件系统的基础要求,也是固有属性。如果大容量都无法满足,那还不如单机的文件系统。
  2. 支持并发访问。支持的并发数量是衡量分布式文件系统性能的重要指标之一。
  3. 持久化。这也是基础要求,数据不能持久化的分布式文件系统是没有太大意义的。
  4. 高可用。分布式文件系统会存在很多服务器,难免会出现某个服务器宕机的情况,这种情况下仍需要保证文件系统的正常运转。
  5. 一致性。衔接上一条高可用,冗余备份是实现高可用最常见的方式,而一致性是冗余备份无论如何也绕不开的关键问题。
  6. 低时延。没有用户愿意在发出一个请求后经历漫长的等待,时延也是衡量分布式文件系统性能的重要指标之一。不过关于这一点,不同的分布式文件系统有不同的要求,比如GFS就没有过于追求某一次操作的低时延,而是更注重持续、稳定的带宽。
  7. 可拓展(具有伸缩性)。系统都是随着业务规模的扩大不断升级,当业务需求对系统提出新的要求后,可拓展性就显得尤为重要。

4. 分布式文件系统的系统模型

​ 本文的系统模式是存在中心节点的分布式文件系统模型。

​ 谷歌文件系统(The Google File System)的系统模型就是非常经典的下图:

​ 我将该系统提取成为了一个较为通用的抽象模型:

​ 在该模型中,分布式文件系统主要有master部分和server部分组成。master部分需要承载用户的访问请求并对所需资源进行定位,出于负载均衡方面的考虑一般不存储文件;server部分是真正用来存放文件数据的部分。不同的分布式文件系统对master部分和server部分的可能会有不同的具体实现,但功能大体相似。

​ 以该抽象模型为例,用户想在系统中查询文件的工作流程大致如下:

  1. client向系统的master发送查询请求,请求中包含需要查询的文件的信息。

  2. master获取client需要所需内容在server中的位置坐标,并返回client。

  3. client根据查询内容的位置坐标找到相应的server节点,并发送查询请求。

  4. server将查询的内容返回给client,查询过程完毕。

    ​ 上述流程以查询为例,增加、修改、删除的操作也类似。

    ​ 需要注意的是,分布式文件系统也可以采用如下模型:

​ 但该模型中,master还需要承担向server发送文件请求并接受文件内容的任务,在并发场景下I/O负担会加重到难以想象,master极易成为系统的性能瓶颈,因此并不可取。

5.如何满足分布式文件系统的要求?

​ 这部分将参照上文的第三部分,以GFS系统为参考,但不仅限于GFS系统,逐条进行解决方案说明与分析:

  1. 大容量。系统中的server部分存在多个存储节点满足系统大容量的需求,对应GFS中存在多个chunkserver。存储节点越多,系统的容量越大,但也会相应的提高系统的运营成本,给系统性能带来更大的挑战。

  2. 支持并发访问。系统对并发的支持主要体现在两个方面:第一.master部分可以支持多个client并发查询文件所在的server坐标。第二.server可以支持多个client并发的操作数据。当然,并不是所有的分布式文件系统都需要同时满足这两种并发,例如,master完全可以采用类似生产者-消费者的方式,client的查询请求加入master队列,然后master逐条取出并处理。

  3. 持久化。master和server都会将自身的数据保存到磁盘,server自然不必多说,会持久化存储的文件数据,master部分需要持久化的东西较为复杂,不同的分布式文件系统持久化的内容也存在差异,我理解对于大多数系统而言,master至少应该持久化两部分内容:1)文件与server的信息,如两者的命名空间、映射关系等 2)server中各个节点的最新版本id,节点版本id存在的必要是为了满足一致性。

    值得注意的是,由于GFS采用了给节点头分配租约(lease)的方式,因此并不需要持久化server当前的主节点(primary)。另外,GFS的持久化方式是日志(log)+checkpoint,checkpoint是为了防止日志随着时间的增长膨胀得太大。这种log+checkpoint的方式非常不错,也是redis等常用软件中采用的方式。

  4. 高可用。最常见的方式就是冗余备份了,在GFS系统中高可用主要体现在两个方面:

    1)master的高可用。master的操作日志、存档等数据会被复制到多台机器,master故障时,监控设备会在冗余机器上启动新的master进程,并采用更新DNS的方式引导client访问新的master,保证系统持续可用。另外,GFS还提供了阴影master,阴影master能在master故障时提供只读服务,但是阴影master的数据通常会落后1秒左右。

    2)server的高可用。每份数据默认有3个chunkserver进行备份,当然,3个只是默认值,会根据不同文件的访问热度进行灵活调整,避免3个chunkserver无法应对热点数据的请求而成为系统瓶颈。在冗余备份时,需要考虑不同的server节点放置在不同的位置,如GFS会将同一文件不同的备份机放到不同的机架上,避免整个机架故障造成系统瘫痪,如今,大型系统需要考虑备份不仅放在不同的机架,甚至要越远越好,即"异地容灾备份"。

  5. 一致性。多备份解决了高可用问题,但同时会引入一致性问题,不同的备份所处地理距离越远,安全性越高,但一致性越困难。一致性产生的最根本原因就是网络的不可靠性,如果存在绝对可靠的网络,那也不会存在一致性的难题,虽然随着如今网络的发展,网络出现不可靠的概率越来越低,但在设计分布式系统时,仍然需要考虑网络每时每刻都存在不可靠的可能性,注意,一定要假设每时每刻都可能发生网络故障,这对系统的一致性是非常巨大的挑战。

    在GFS系统中,大部分文件发生变化都是因为执行了追加(append)操作,而通常不会发生内容的覆盖。GFS保证append操作一致性采用的松弛一致性模型:append操作会发送给多个备份中实时的primary节点,由primary节点指定执行顺序,并通知其他节点。在其他节点全部执行成功后,primary节点会告诉client执行成功了,否则只要有一个节点执行失败,primary就会告诉client失败了,需要client重新发起操作请求。这个过程中,如果执行失败了,该过程并不会删除已经append成功的节点中的文件信息,这显然会造成不必要的空间浪费,这也是我认为GFS可以改进的点之一,比如采用两阶段提交或三阶段提交的方法。另外,如果GFS同时存在读和写,那么读的线程有可能会读到没有写完整的数据,这也是GFS做的不够严谨的地方之一,这一问题可以采用写时复制、读的过程中检查是否读到了正在写入的位置等方式进行改进。

  6. 低时延。缓存是减少时延非常有效的手段,但是在缓存的同时需要考虑缓存与磁盘数据的一致性问题。GFS的客户端会缓存一些chunk句柄或对应的chunkserver的位置(这部分信息通常不会变化,因此不会存在复杂的一致性问题),但并不会缓存文件数据,因为该系统的业务场景下文件重用率不高,缓存文件内容的收益较小。在chunkserver中,chunk被存储为本地文件,此时Linux会提供操作系统层面的缓存,GFS没有进行额外的缓存处理。

    另外,GFS还采用了特殊的方式缩短查询请求的时延:在查询的时候,不是必须经过primary节点,而是根据距离、负载等因素选择能够最快响应的server节点查询。

  7. 可拓展(具有伸缩性)。系统的可拓展性主要考虑两个方面:

    ​ 1)master的可拓展性。master的可拓展方式主要有将单机master拓展为多机master,具体实现可采用主从机制。但是在GFS系统中,并没有对master进行拓展。这主要是因为,GFS以较大的数据块存储文件数据(每个chunkserver保存64M),这就能够尽量减少master保存的server信息,并减少client与master交互的次数,同时,client在查询有关文件信息的时候,很有可能会在同一次查询中额外询问一些后续的chunk信息,master有时也会主动告知client一些后续额外chunk信息,client同样会缓存这些信息,这在业务主要是顺序读的场景中,几乎不需要增加额外的成本就非常有效的减少了client与master交互的频次,减少了master的负担,如果采用这些方法就能够满足GFS的业务需求,那自然不必画蛇添足去增加多机master。

    ​ 但是如果考虑更为长远和大规模的场景,随着server的增加,单机master必然会成为系统的瓶颈,系统的升级就是不断与瓶颈做斗争,因此,在一定业务规模下,master的拓展也必须在软件设计之初就加以考虑。

    ​ 2)server的可拓展性。server的可拓展性指的是随着系统存储文件数量的不断增大,server节点不够用时,需要补充新的server节点,此时需要新节点向master进行注册,master便可以给新节点分配数据。master在给新节点分配数据时,可以借助新节点进一步实现系统的负载均衡,但也应该注意,不要为了缓解负荷较重节点的压力一下子将过多的热点数据分配给新节点,这会造成新节点短期内负载突然增大。

6. 总结与后记

​ 本文是在对GFS学习后,阅读了一些相关文章,对存在中心节点的分布式文件系统进行的归纳,从分布式文件系统存在的意义、终极目标说起,依据自己抽象出来的分布式文件系统通用模型分析了如何满足分布式文件系统应该满足的要求。

​ 本文很多内容都是以GFS的实现方式为例,对GFS的优缺点进行了简单的探讨。文中提到的GFS可以改进的点,只是针对我认为较为通用的场景,并没有过多的考虑GFS的业务场景,因此可能在特定业务场景下并不成立。

​ 由于本人水平有限,难免会存在错误纰漏,欢迎大家与我交流,欢迎批评指正!谢谢!

7. 参考文献

  1. Ghemawat S , Gobioff H , Leung S T . The Google file system[J]. Acm Sigops Operating Systems Review, 2003, 37(5):29-43.
  2. 分布式文件系统设计,该从哪些方面考虑?
  3. 经典论文翻译导读之《Google File System》
对存在中心节点的分布式文件系统的总结与思考笨鸟转运速卖通数据分析秘笈常见问题大集结2018年12月亚马逊美国站自拍杆(Selfie Sticks & Cell Phone Tripods)数据报告旺季过后流量暴跌怎么办,教你一招引流就是这么简单!思考:亚马逊Prime专享折扣有没有效果?跟随《麻辣女兵》剧组游春城_昆明市旅游开元度假村——清幽淡雅宫廷风_常州市旅游《成长》中的别样西湖美景_杭州市旅游

7人玩命防守!两镜头证明崔康熙深获人心,沙拉维成申花“异类”_球员

原标题:7人玩命防守!两镜头证明崔康熙深获人心,沙拉维成申花"异类"

今天下午,中超第2轮开打,上海申花迎战深圳佳兆业。由于首场比赛0-2输给恒大,申花全队赛后饱受批评。此役面对"升班马"深足,申花不容有失。在赛前的新闻发布会上,崔康熙下达了必杀令。

来到中超之后,韩国名帅崔康熙一直没有让所有球迷信服,其还需要在联赛中拿出优异的成绩来证明自己。不过,无论在大连人,还是在上海申花,崔康熙都深得球员们爱戴。

在离开大连人的时候,秦升哭得泪眼婆娑。那么在申花,球员们对崔康熙的感情如何呢?有两个镜头,可以证明上述观点:比赛第9分钟,赵明剑进球之后,第一时间并没有找队友庆祝,而是跑到替补席,向崔康熙深深鞠了一躬。

第二个镜头,第23分钟,深足在申花禁区内打出一连串的精妙配合,你看申花防守队员是怎么做的?秦升倒地阻挡射门角度,朱辰杰死死卡住进攻球员,彭欣力冒着被踢的风险解围……画面中的申花7名防守队员,没有一人不拼尽全力。

崔康熙在赛前新闻发布会上强调:球队第一要务,是做好防守。这足以说明,球员们很听他的话。也许有球迷会进行反驳,并不是所有人都"信服"崔康熙:例如在大连的时候,卡拉斯科;例如现在的沙拉维。

纵观本场比赛申花的大名单,沙拉维并没有入选。这从侧面说明,沙拉维被内部禁赛的消息并不是空穴来风。不过,沙拉维毕竟还是申花的"异类"。他无法拿出优异表现的话,反而越闹越不得人心。从崔康熙将其拿出大名单之举可以看出,其得到了俱乐部的支持。

申花首发:19-曾诚、38-小温(u23)、5-朱辰杰(u23)、6-冯潇霆、13-赵明剑、28-曹赟定、26-秦升、25-彭欣力、8-张璐、21-朱宝杰、17-马丁斯

申花替补:27-李帅、4-蒋圣龙(u23)、7-钱杰给、9-杨旭、10-莫雷诺、11-于汉超、14-孙凯、16-李运秋、20-金信煜、23-柏佳骏、32-艾迪、37-孙世林返回搜狐,查看更多

责任编辑:

7人玩命防守!两镜头证明崔康熙深获人心,沙拉维成申花"异类"_球员贝贝官网Linio Jumia Wish带你玩转全球打折网站跨境电商新平台——东南亚Shopee强势来袭!速卖通即将上线的免费退换货是怎么回事?又出修订版 !投寄邮件往美国需提交电子报关资料诺唯真邮轮旅游最佳路线2018去皇家加勒比邮轮旅游团报价2018去皇家加勒比邮轮旅游团报价

重磅!恒大又一位王牌正式离队,曾在球队中超首秀进球留下英雄泪_王进泽

原标题:重磅!恒大又一位王牌正式离队,曾在球队中超首秀进球留下英雄泪

日前,根据国内媒体报道称恒大王牌新星王进泽已经确定离队。王进泽离开恒大之后,他职业生涯下一站将是石家庄永昌。王进泽的名字已经出现在永昌一线队大名单,未来有希望在新东家踢上中超。王进泽成为恒大又一位离队的新星,这并不让球迷感到意外。因为他在上赛季就因为在恒大一线队难踢主力,被租借到了中甲效力。

99年出生的王进泽在恒大梯队时表现不错,曾经有过多次进球的高光表现。王进泽就是靠着在恒大梯队的抢眼发挥,赢得了恒大一线队青睐。王进泽进入恒大一线队之后,他就没有想过自己能在中超获得出场机会。因为恒大前锋位置巨星云集,王进泽在这种情况下连打替补的资格都没有。还好王进泽遇到了喜欢用年轻球员的主帅卡纳瓦罗,卡纳瓦罗力排众议在2018赛季中超收官战上,给了王进泽出战联赛的机会。

机会是留给有准备的人,这句话放在王进泽身上同样合适。王进泽在比赛中接到恒大队友传球,打入了职业生涯中超首球。进球之后的王进泽被队友拥抱,让他十分激动。王进泽触景生情,留下了英雄泪。因为王进泽等待这一刻,已经等了很长时间。所以在这种情况下,代表恒大首秀就进球的王进泽,就激动落泪让球迷为之动容。原本恒大球迷觉得他中超首秀斩获进球,这位新星前途应该无量。

正当恒大球迷期待王进泽在上赛季能再接再厉,争取迎来终极爆发时,恒大却将他租借到了中甲北体大俱乐部。恒大将王进泽租借到北体大,也是出于为王进泽职业生涯考虑的角度。毕竟王进泽要是继续留在恒大一线队,他很难获得稳定的出场机会。不过王进泽在北体大踢中甲时,同样没有获得太多的出场机会。

所以王进泽在跟北体大结束合约之后,他就回到了恒大一线队。虽然王进泽上赛季在中甲表现都不温不火,但是王进泽依然得到了球队高薪续约。这次恒大将王进泽租借到中超升班马石家庄永昌,球迷希望王进泽能在永昌抓住机会,争取可以在中超立足,迎来职业生涯第一个爆发。

本文插图来源于网络返回搜狐,查看更多

责任编辑:

重磅!恒大又一位王牌正式离队,曾在球队中超首秀进球留下英雄泪_王进泽品类管理推广思路与产品定价技巧三剑客闭门集训营-亚马逊爆破攻略eBay在美国启动全新的支付管理方案!阿里巴巴闯入全球"创新力"企业十强,成唯一一家入选的中国企业2018年prime day:网站崩溃、listing页改版、PS花式爆单!诺唯真邮轮旅游一次多少钱诺唯真邮轮旅游最佳路线诺唯真邮轮旅游最佳路线