高性能电子商务平台构建:架构、设计与开发(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-20 09:32:40

点击下载

作者:ShopNC产品部

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

高性能电子商务平台构建:架构、设计与开发

高性能电子商务平台构建:架构、设计与开发试读:

前言

为什么写这本书

中国互联网络信息中心(CNNIC)2014年1月发布的《中国互联网络发展状况统计报告》中的数据表明:截至2013年12月,我国网民规模达6.18亿,互联网普及率为45.8%。网络购物用户规模持续增长,商务类应用继续保持较高的发展速度。2013年,中国网络购物用户规模达3.02亿人,使用率达到48.9%,相比2012年增长6.0个百分点。从消费者行为模式来看,搜索行为直接指向购买,电子商务平台正是购买行为的发生场所,并且由于营销推广成本有限,促使中小企业更倾向于选择投入可控、性价比较高的方式。

以上的统计数据向我们传递了一个强烈的信号,电子商务(简称“电商”)正在改变商业的经营模式和人们的购物习惯。国内已经有越来越多的传统行业进入了电子商务领域,同时也有越来越多的网站转型为电子商务平台,随之而来的就是市场对电商的IT服务需求的迅速增长,而目前主要电商IT服务供应商服务水平、产品质量、设计理念参差不齐,有些产品更是一直处理停滞状态,显然它们无法满足迅速发展的电商行业。

ShopNC(www.shopnc.net)一直专注于电商整体解决方案,拥有国内领先的技术人才、开发团队及资深的行业解决方案专家,自主研发出了成熟的B2B2C模式电商平台系统、C2C模式多店商城系统、O2O本地生活类电商系统、CMS文章资讯、社交圈子社区程序、微商城分享互动程序、在线IM聊天程序以及CRM客户管理系统、移动手机平台应用和微信商城等最流行、全面、完善的电商产品综合服务体系。ShopNC不断将电商行业的新需求、新趋势融入到产品中,与时俱进,始终保持产品的先进性。

本书结合ShopNC商城系统,从构建大数据、高性能的电平台出发,详细介绍了电商平台核心模块的设计与实现,为大家提供安全、可靠、易维护、高性能的电商平台解决方案。本书的主要内容和特色

全书分为四个部分。第一部分(第1章)是功能规划,依次介绍了电子商务平台标准的构成套件以及各个套件的功能组成部分。第二部分(第2章)是技术架构规划,规划实现第一部分功能需要用到的技术点及实现方法,搭建编写代码前需要的技术框架。第三部分(第3~9章)是功能实现,细致而全面地讲解了构成电子商务平台的各个功能模块的设计思路、技巧分享、重点代码分析、最终功能体验,完成了从理论到实践的完美转换。第四部分(第10章)是安装部署,将已制作完成的商城部署至服务器,并介绍了集群部署中主要节点的部署过程。以上四部分是电子商务平台从规划,再到各个重点模块构建,再到部署及性能、用户体验的优化,进行了全面透彻地讲解,满足了从电子商务平台建立到运维的基本需求。按照以上内容逐一进行商城的开发工作,可以使本来烦琐杂乱的工作变得有条不紊、充满魅力。本书的目标读者

本书主要适合如下人群阅读:

·电子商务平台决策者、首席技术官(CTO)和架构师。

·电子商务平台运维工程师。

·具有3年以上工作经验并从事电子商务平台开发的软件工程师。如何阅读本书

本书主要介绍商城的整体设计、架构搭建、功能实现及安装部署,所以在阅读本书之前需要你对电子商务、网上商城有所了解,有过一定的项目开发经验,学习过PHP、HTML、jQuery、数据库等技术知识。如果你对缓存、负载均衡、服务器集群部署等有一定的了解将更能帮助你理解本书中所讲解的知识点。所以笔者建议按以下阅读方式进行阅读。

如果你是平台功能决策者或架构师,想了解一套标准电商平台套件的具体构成和实现,可以详细阅读第1章、第3~9章。第1章对商城标准套件进行了概括性的介绍,而第3~9章对第1章所提到的套件功能的模块构成、设计思路、具体实现、功能体验等有详细介绍。

如果你是从事技术管理工作的,想了解搭建商城的技术架构,可以首先详细阅读第2章和第13章。第2章介绍了商城开发前期需要的技术准备工作,对一套完善、高效的商城技术架构进行了细致的讲解。第10章则介绍了商城的安装部署,详细介绍了软件版本与部署参数。在阅读完第2章、第10章之后,再去了解一下第3~9章的各模块,这对以后商城的二次开发及运维工作是非常有帮助的。

如果你已经在运营电子商城,拥有了一定的运维经验,可以将该书作为一本参考资料,因为书中讲到的功能及技术点都是经过ShopNC商城系统的工作人员参考众多客户的实际使用经验及建议,进行优化总结后的结果,具有一定的参考价值。

最后,真诚地期望大家通过本书来研究和探索电商平台搭建和运维。相信你们在看过本书之后都会有所收获。期待大家能搭建出一个优秀、高效的电子商务平台。致谢

本书由ShopNC B2B2C商城系统产品开发团队共同撰写,在撰写期间咨询和采纳了很多具有众多实战经验的ShopNC客户及其技术团队的意见与建议,力求使读者能从本书中获得很多实用的知识。此外,本书在编写过程中还参阅了大量国内外的文献和资料。

首先感谢ShopNC B2B2C商城系统开发组的同仁,大家各抒己见、通力合作才使本书的编写过程如此顺利。其次,感谢给予宝贵意见和建议的ShopNC商城系统客户。还要感谢我们所处的互联网时代,使文献和资料的查阅变得如此简单。本书着眼于商城模块设计、技术实现,其中融入了很多作者的个人经验和理解,当然由于笔者水平有限,书中难免会出现一些疏漏或者与您理解上的不同,恳请大家批评指正。大家有任何问题意见或建议,可发邮件至book_feedback@shopnc.net,我们会第一时间与大家沟通、交流。第1章 电商平台标准化套件

随着电子商务近十年的高速发展,传统单一的商城交易系统已经不能满足市场需求,随之而来多元化的电商平台系统已经成为市场的主流。与商城配套的圈子/BBS论坛系统、新闻资讯CMS系统、商品推荐分享的微商城系统、买卖双方沟通的即时通讯IM系统以及手机等设备使用的移动端APP等都成为电商平台必不可少的组成部分,如图1-1所示。图1-1 电子商务标准平台套件结构示意图1.1 商城系统

商城系统通过互联网为消费者提供一个新型的购物环境,除了传统的B2B、B2C、C2C等模式外,现今又延展出C2B、B2B2C、O2O等众多的商业模式,从单一的买卖功能扩展至极强的电商平台功能,如图1-2所示。图1-2 电商平台功能概要

下面介绍一个标准的电商平台应该具备的功能。(1)设置

·站点设置:设置网站的基本信息,包括网站名称、LOGO、联系电话、电子邮件、站点状态和防灌水设置。

·账号同步:设定QQ互联和新浪微博登录等功能。

·上传设置:设定上传参数、默认图片、登录主题图片、压缩工具和水印字体功能,上传参数能控制图片大小、尺寸、存放类型、图片扩展名等信息,登录主题图片可以设置4张主题图片,可以选择压缩工具、下载水印字体。

·SEO设置:设置首页、团购、品牌、优惠券、积分中心、文章、店铺、商品、商品分类和SNS等页面的标题、关键词和描述信息。

·消息通知:包括邮件设置、邮件模板、商家消息模板和用户消息模板几部分。邮件设置可以进行邮件功能的开启与关闭操作,并在此进行SMTP账号的设置,设置完成后可以通过测试邮件功能进行邮件发送测试。

·支付方式:进行平台、店铺支付方式的开启、关闭等操作的管理。支付方式包括:货到付款、预存款、支付宝、财付通、网银在线。

·权限设置:账号信息的管理,可以增加或删除管理人员,可以修改系统管理员的管理权限。

·配送地区:选择配送地区,按省、市、县三级分类。(2)商品

·分类管理:对列表中的商品分类进行排序、是否首页显示等,并且可以对分类信息进行新增、编辑、删除、新增下一级等操作。系统支持对分类信息的导入、导出操作,并且支持TAG标签的管理,TAG值为分类搜索的关键字。

·品牌管理:针对网站内的品牌信息进行编辑、删除、查询、新增和审核几项操作,也可以直接修改品牌排序和是否为推荐品牌。

·商品管理:分为所有商品查看、违规下架商品管理、待审核商品及商品设置,可以根据商品信息如商品名、店铺名等进行查询,列表会显示商品价格和库存量,管理员可以选择该商品是否上架、是否违规下架,可以对商品进行查看、审核或删除操作。商品设置可对商家发布商品平台是否需要审核进行判定,当此设定为需要审核时,商家所发布的所有商品均进入等待审核页面,由平台进行审核。

·图片空间:商城运行一段时间后,在服务器上经常会产生一些垃圾图片,图片空间正是用于解决这一问题的。利用图片空间,管理员可以查看当前的所有店家的相册及其商品图片的数量,也可以删除无用的相册和图片。(3)店铺

·店铺管理:管理商城所有店铺信息,可进行查询、新增、编辑、删除等操作,支持新增或修改店铺经营类目,设置分佣比例,针对开店申请设置单独的审核入口,还可进行店铺续签申请处理及店铺新增经营类目审核。

·店铺等级:显示店铺的等级列表,可以新增、编辑、删除、设置可选模板等操作,并且可设置不同等级店铺的年使用费用及相关权限等。

·店铺分类:列出了店铺所有的分类,可以对店铺分类进行新增、编辑、删除等操作,还可以设定相关类目的保证金,以及按照排序值进行排序。

·二级域名:用于进行平台二级域名的开启、关闭等相关设置,并且可以对店铺所使用的二级域名进行管理操作,可以根据店铺名称、二级域名进行查询,还可以进行二次域名及修改次数的编辑。(4)会员

·会员管理:显示所有会员的列表,在列表中显示登录次数、会员积分、预存款等信息,可以对会员信息进行增、删、改、查的操作。

·积分管理:是对会员积分的操作入口,可以进行会员积分增加或减少的操作,并且可以记录操作描述。积分明细显示的是会员获得或消耗积分的情况,显示会员所有的积分变化,可以搜索会员积分操作记录。

·预存款:记录了会员充值和提现金额的情况。在充值管理模块下,可以查看会员充值列表。在提现管理模块下,可以查看会员提现列表。预存款明细显示会员充值和提现金额的记录,可以通过会员名、管理员名、预存款类型等字段进行查询,查找所需要的信息。

·分享绑定设置:可以设置QQ空间、腾讯微博、新浪微博的应用接口信息及是否开启相应站外分享功能。

·买家动态:管理用户动态及评论信息,可以对用户动态及评论进行查看、显示、屏蔽和删除操作。(5)交易

·订单管理:管理用户所有与订单相关的信息。根据订单信息、时间、金额和状态,我们可进行查询、查看、取消订单和确认收货等操作。

·退款管理:审核退款订单,管理所有退货订单,可以对订单进行查看和删除操作。

·退货管理:对退货订单进行审核,管理退货订单,可以对退货订单进行查看和删除操作。

·咨询管理:是管理店铺咨询信息的操作入口,可以删除咨询信息。

·举报管理:是管理举报产品的操作入口。“举报类型”和“举报主题”分别是举报类型的管理和举报主题的管理的操作入口。在管理人员处理完举报以后,举报信息被放入“已处理”模块下。

·评价管理:买家可以在订单完成后对商品进行评价,也可以对店铺进行评价,管理员可对评价进行管理。

·投诉管理:是管理投诉信息的操作入口。点击“详细”操作,可以查看投诉详细信息。通过“投诉设置”按钮可以进行投诉设置,通过“新投诉”、“待申诉”、“对话中”、“待仲裁”、“已关闭”按钮可以查看相应状态的投诉信息,通过“投诉主题”、“添加主题”按钮可以进行投诉主题的管理。(6)网站

·文章分类:是对系统文章分类的管理,可以增加、编辑、删除、新增下级分类。

·文章管理:是管理文章的操作入口,可以添加、编辑、删除文章,可以通过标题、文章分类等字段进行查询。

·系统文章:对系统文章的管理,可以编辑,但不可新增或删除。

·页面导航:是对页面导航的管理,可以增加、编辑、删除导航信息。对导航的添加主要在头部、中部和底部三个地方。导航类型包括自定义导航、商品分类、文章分类、活动四种。

·广告管理:用于丰富界面和特色产品宣传,可查看全站所有广告位,可以新增、编辑、删除广告。

·首页管理:对首页版块进行管理。基本设计可以修改版块名称、默认风格、排序;版块编辑可修改相对应的版块信息,如标题图片、推荐分类、活动图片、推荐商品、商品排行、广告图片、推荐品牌。

·推荐位:是广告功能一个有效补充。推荐位不会生成JS代码,而是直接生成PHP代码,减少了http请求次数,可以复制推荐位代码放在商城前台展示。推荐位支持文字和图片形式。(7)运营

·基本设置:设置对预存款、金币、积分、积分中心、商品促销、团购等功能的开启与关闭操作,并可设置对会员注册、登录、订单商品评论、购物等赠送积分的数量。

·团购管理:对平台团购信息的管理。管理员可以审核新的团购活动申请、取消进行中的团购活动或删除团购活动。可以查看参加团购活动的店铺和商品。对团购分类、团购地区和团购价格区间进行增、删、改、查等操作。设置购买团购活动所需的金币数量。

·兑换礼品:是管理积分兑换礼品的操作入口,可以设置礼品的上架、推荐状态。“礼品列表”是礼品管理的操作入口,可以查看、编辑、删除礼品。“新增礼品”可以进行礼品新增的操作。“兑换列表”是管理兑换礼品的操作入口,可以通过兑换单号、会员名称、支付方式、状态等字段进行查询。

·活动管理:是管理平台活动的操作入口,可以新增、编辑、删除活动,可以设置活动的开始及结束时间等。通过活动列表后的“处理申请”按钮可以查看商家提交的活动申请并作相关处理。(8)统计

·会员统计:按照时间对新增会员、会员分析、会员规模分析、区域、购买等进行相关数据的分析。

·店铺统计:按照店铺分类对新增店铺、热卖排行、销售统计、店铺等级、地区分布等进行相关的数据统计。

·销量分析:按照时间对店铺的销售收入进行数据统计,以及按照相应的条件统计预存款及订单。

·商品分析:统计商品销量明细、价格销量、热卖商品等。

·营销分析:按照时间对促销商品及团购商品进行统计。1.2 圈子

BBS,全称为Bulletin Board System,是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面通过书写来发布信息或提出看法。它是一种交互性强、内容丰富而及时的Internet电子信息服务系统,用户在BBS站点上可以获得各种信息服务、发布信息、进行讨论、聊天等。而圈子则是BBS的升级版本,与BBS相比圈子更加注重互动性与私密性。在整个电子商务平台中起到商品的推广、分享等重要作用。圈子的整体功能如图1-3所示。

下面介绍标准圈子应具备的功能。

·圈子设置:设置圈子开关状态、圈子名称、LOGO、创建新圈子开关、发布/回复话题开关等。

·成员头衔设置:设置头衔名称、所需经验值,也可以添加参考头衔。

·圈子分类管理:是管理圈子分类的操作入口,可以设置圈子的名称、是否推荐、开关状态,还可以对圈子分类进行新增、编辑或删除操作。

·圈子管理:是管理圈子的操作入口。可以对圈子进行新增、审核、编辑或删除操作,还可以把圈子推荐到首页。

·圈子话题管理:可以对话题进行查看、回复或删除操作。

·圈子成员管理:成员列表按照加入的圈子显示,可以对成员进行推荐、查看或删除操作。

·圈子举报管理:管理圈子的举报信息,可以对举报信息进行删除操作。图1-3 圈子功能示意图1.3 CMS

CMS是Content Management System的缩写,即“文章管理系统”。在整个电子商务平台中起到重要的商品推广作用,如图1-4所示。在CMS中各种文章、画报、专题的发布及商品的软性推广,极大地增强了对买家的黏度,提高平台的浏览量与成交量。一篇好的图文推广往往能产生意想不到的结果。图1-4 CMS推广方式与途径

下面介绍成熟的CMS应具备的功能。

·CMS管理:对CMS开关、LOGO、评论开关、心情开关等进行设置。

·首页管理:设置首页页面布局,可以对各模块进行编辑、删除或关闭操作。

·文章管理:管理CMS中文章的操作入口。可以直接在列表中修改文章的浏览次数,开启或关闭心情和评论功能。可以对文章进行查看、审核、回收或删除操作。

·文章分类:对文章进行编辑、新增或删除操作。

·画报管理:管理CMS中画报的操作入口。可以直接在列表中修改画报的浏览次数,开启或关闭心情和评论功能。可以对画报进行查看、审核、回收或删除操作。

·画报分类:对画报进行编辑、新增或删除操作。

·专题管理:可以对专题进行新增、查看、编辑或删除操作。可对专题发布位置进行管理。

·标签管理:管理CMS中标签的操作入口。可以直接在列表中修改标签名称、排序。可以对文章进行新增或删除操作。

·评论管理:对CMS中的评论进行管理,删除违规评论。1.4 IM

IM是即时通信系统Instant Messaging的缩写,是可以让买卖双方在线即时沟通的工具,其在电子商务平台中的作用是不言而喻的。每一个成功的电商平台都有自己的IM通信系统,如淘宝的旺旺、腾讯的QQ、京东的叮咚都是IM的表现形式。1.5 移动端

如今手机等移动设备已经成为现代生活必不可少的一部分,随着智能手机的广泛普及,各种手机应用软件也应运而生。对于一个标准电子商务平台的手机客户端而言,Android、ISO、WAP等是必不可少的,并可提供移动客户端下载设置,系统可控制并修改下载地址,以及在前台具有对应下载链接及手机二维码扫描功能,还可以自动判断机型并提供对应预设安装包下载。辅助手机客户端或其他类型扩展新增预设接口,如图1-5所示。图1-5 移动端商城功能界面

以下是移动端的标准功能描述。

·首页设置:用于设置手机首页版块,可对图片、标题、描述、关键词等进行编辑,可按照排序值排序。

·分类图片设置:用于设置手机端分类图标,可进行新增、编辑、删除等操作。

·下载设置:输入APP下载地址及相应的安装版本信息,并且可在前台生成二维码。1.6 本章小结

本章通过对电商平台标准化套件的介绍,帮助大家理解标准化这个概念,后面章节的内容均是围绕这几个标准化套件来阐述的。第2章 电商平台的技术架构

电商平台的技术架构涉及很多方面,有软件的和硬件的,主要可以归纳为8个部分,它们分别是操作系统、应用服务器、负载均衡、缓存、数据存储、文件存储、消息队列、搜索设计和开发框架,本章将对这8个部分分别进行介绍。我们将电商平台技术架构整理成如图2-1所示,使大家有一个整体的认知。后面内容将对图中的主要点作介绍。图2-1 大型电商平台架构2.1 操作系统

服务器端的操作系统目前主要包括Windows、UNIX和Linux三大系列。

目前已知的Windows重要版本包括:Windows 2000 Server、Windows Server 2003、Windows Server 2003 R2、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012。Windows服务器操作系统的典型应用是结合.NET构建服务器。

UNIX服务器操作系统由AT&T公司和SCO公司共同推出,主要支持大型的文件系统服务、数据服务等应用。目前市面上流传的主要有SCO SVR、BSD Unix、SUN Solaris、IBM-AIX、HP-U、FreeBSD等。

Linux操作系统与UNIX操作系统类似,不过它不是UNIX操作系统的变种,几乎所有UNIX的工具都可以运行在Linux上。Linux的发行版可分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。Redhat系列包括RHEL(Redhat Enterprise Linux,收费版本)、FedoraCore(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费),稳定性方面RHEL和CentOS的稳定性都非常好,很适合于服务器使用,Debian系列(包括Debian和Ubuntu等)更适合桌面用户。

CentOS作为一种免费开源稳定的服务器操作系统,它支持众多软件平台的运行,目前被越来越多的网站所使用。电商平台的服务器系统优先推荐CentOS。2.2 应用服务器

应用服务器在这里指的是完成一般业务的服务器,它可以分为两大类:前端服务器和后端服务器。前端服务器主要完成用户的响应,后端服务器主要完成数据处理,特别是大数据下的处理,中小规模的电商平台可能对前后端区分得并不是很严格,前后端可能会共用服务器。在运营规模达到一定量级后,众多模块(或子系统)将运行于后端,以支持整个平台的运行,这些模块有统计、行为分析、客户关系、结算等子系统。这也是云计算的小前端大后端的趋势,给用户带来最简单的用户体验。后端的技术实现模式可能综合利用多种技术手段共同实现,而不局限某一种语言或技术。

与后端服务器相比,前端服务器位置更靠前,其服务器性能的高低直接会影响到用户的体验。前端应用服务器根据实现业务的不同可能使用不同的规范(或架构)来实现,如J2EE、PHP、.NET、C、C++等都是可能使用的技术手段。关于这几种技术的比较已经是老生常谈的话题了,这里不做过多阐述,没有一种语言绝对比另一种语言强,开发者应当根据自己的实际情况,综合考虑成本支出、现有技术体系、实现业务、目前规模等要素,采用最适合自己的技术实现手段。

前端一般情况下需要频繁变化,使用PHP来实现工作更加高效快捷。或许有人认为PHP每次都需要时时解析会使它的响应速度变慢,我们先看一下PHP的编译过程。PHP执行代码会经过如下4个步骤。

1)Scanning(Lexing),将PHP代码转换为语言片段(Tokens)。

2)Parsing,将Tokens转换成简单而有意义的表达式。

3)Compilation,将表达式编译成Opocdes。

4)Execution,顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

在源代码未发生改动的情况下,如果把Opcodes缓存起来不就可以了吗?是的,当访问某一PHP文件时,系统会直接从缓存中取得Opcodes来执行,这样就省去了执行前3个步骤的时间。APC就是一个不错的缓存工具,推荐使用。

就电商平台而言,这里的前端服务器可以直接理解为Web服务器。提到Web服务器,不得不说的就是Web服务软件,目前主流的Web服务软件有Apache、Nginx、IIS、Lighttpd和Tomcat等。(1)Apache

Apache是非常强大的老牌Web服务器,具有模块化结构,拥有众多非常成熟稳定的模块,目前仍是使用非常广泛的服务器,但它是基于多进程的HTTPServer,需要对每个用户请求创建一个子进程/线程来响应,当访问量较大时,会占用较多的系统资源(主要是CPU和内存),所以高并发的处理并不是Apache的强项。(2)Nginx

Nginx是一款十分轻量级的HTTP服务器,同时也是一款非常不错的反向代理、负载均衡服务器。Nginx以事件驱动,专为性能优化而开发,支持内核Poll模型,能经受高负载的考验,并且在高负载下具有很高的稳定性。其他HTTP服务器在遇到访问的峰值或恶意攻击时,很可能会因服务器物理内存频繁交换而导致内存耗尽,最终导致服务器失去响应,而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。Nginx官方表示保持10000个没有活动的连接,只占2.5MB内存,所以在抵御类似DOS攻击时,Nginx有非常出色的表现。除此之外,就稳定性而言,Nginx比Lighttpd更胜一筹。

Nginx支持热部署,启动非常容易,并且几乎可以做到不间断运行,即使运行数月也不需要重新启动。Nginx还可以在不间断服务的情况下进行版本升级。(3)Lighttpd

Lighttpd是一款轻量级Web服务器,占用内存小且CPU负荷低,是服务于静态内容的不错选择。(4)IIS

IIS作为运行在Windows环境下的Web服务器软件,可以对.NET、PHP等进行解析。IIS只能运行于Windows下,而绝大多数开源架构或软件最佳搭配环境为Linux/UNIX,这是因为IIS不具有开源软件低成本、易扩展的特点。从开源、投入、扩展、性能等方面考虑,IIS均不是优先考虑对象。(5)Tomcat

Tomcat服务器是一个免费的开源Web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选。Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,但处理静态页面的能力较差。

Lighttpd是一个单进程模型的Web服务器,内存使用量很小。Nginx在内存分配方面表现良好,它使用多线程来处理请求,这使得多个线程之间可以共享内存资源,从而使内存使用量大大减少。此外Nginx使用分段内存分配策略,按需分配及时释放,总体占用内存很小,可支持较大的并发连接。Apache在运行时使用较大的内存,是多进程模型,使用基于内存池策略的内存管理方法,使得在运行开始时便一次性申请大片内存作为内存池,这样在随后需要的时候只在内存池中直接获取,不需要再分配,因此不适合大并发量的情况。Nginx作为一个后起之秀,发展速度非常迅猛,目前各大网站纷纷采用Nginx就说明它的优势是不言而喻的。笔者建议,如果开发框架采用了LNMP架构,可以优先考虑Nginx+php-fpm组合部署Web服务器,后期可视情形进行有针对性的调优。2.3 负载均衡

随着用户量和业务量的提高,服务器的处理压力不断增大,一台服务器根本无法承担,在这种情况下,可行的办法就是增加一台服务器来分担它的压力,这时就需要一台调度器来完成调度工作。

负载均衡(Load Balance),就是将负载(工作任务)进行平衡、分摊到多个操作单元上执行,例如Web服务器组、FTP服务器组、数据从服务器组以及其他企业关键应用服务器等,从而共同完成工作任务。

负载均衡可以分为软件负载均衡和硬件负载均衡。常用的硬件负载均衡器有F5 BIG-IP、Citrix NetScaler、Cisco CSS、A10等,这些产品都价格不菲,费用高达几十万甚至更多,中小企业一般不会采用。软件负载均衡主要有LVS、HAProxy和Nginx等,这些都是免费开源且成熟稳定的,所以很多客户更愿意优先考虑。下面将对主要的负载均衡产品进行介绍。2.3.1 F5

F5是一种硬件负载均衡器,全称为F5 BIG-IP,官方名称为本地流量管理器,可做4~7层负载均衡,具有负载均衡、应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、内容缓冲、内容转换、连接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙——包过滤、包消毒等功能。

下面介绍F5 BIG-IP作为HTTP负载均衡器的主要作用。

·F5 BIG-IP提供12种灵活的算法将所有流量均衡地分配到各个服务器,而对用户而言它就是一台虚拟服务器。

·F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为死机状态,并且不再向该服务器分发任务。这样只要有一台服务器能正常工作,用户的访问就不会受到影响。死机的服务器一旦修复,F5 BIG-IP就会自动将该服务器重新加入分发的队列。

·F5 BIG-IP具有动态Session的会话保持功能。

·F5 BIG-IP的iRules功能可以实现HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。2.3.2 LVS

LVS全称为Linux Virtual Server,是由章文嵩博士(现为淘宝网基础核心软件研发负责人)主持的自由软件项目,它是一个负载均衡/高可用性群集,主要针对大业务量的网络应用(如新闻服务、网上银行、电子商务等)。LVS是由一个主控服务器及若干真实服务器所组成的集群。Real-server负责提供服务,主控服务器根据指定的调度算法对Real-server进行调度控制。而群集的结构对于用户来说是不透明的,客户端只与单个的IP(群集系统的虚拟IP)进行通信,从客户端的视角来看,这个集群就相当于一台服务器。Real-server可以提供很多服务,如FTP、HTTP、DNS、TELNET、SMTP等。LVS集群技术可以使用Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性、可靠性和可管理性。下面介绍LVS主要特点。

·抗负载能力强,LVS是工作在网络4层之上仅作分发之用,没有流量的产生,所以它在负载均衡软件中性能最强。

·配置简单,没有可太多配置的东西,减少了人为出错的几率。

·工作稳定,自身有完整的双机热备方案,如LVS+Keepalived。

·应用范围比较广,几乎可以对所有应用做负载均衡。

LVS有三种工作模式,它们分别是VS/NAT、VS/TUN和VS/DR。

1.VS/NAT技术

VS/NAT(Virtual Server Via NAT)是指网络地址转换技术,由一台负载均衡服务器和后端几台真实服务器组成了一个服务器集群。此时负载均衡服务器又称为虚拟服务器,它是直接面向对外服务的。当用户从外网发起请求时,首先会请求到虚拟服务器(负载均衡器),虚拟服务器根据调度算法从一组真实的服务器中选出一台服务器,将请求报文的目标地址改成真实服务器的地址,同时记录转发信息到HASH表中;真实服务器接到请求后,做相应处理,将回复数据包发往虚拟服务器;虚拟服务器收到真实服务器的回复数据包,查找到HASH表中关联的连接记录,然后对数据包做SNAT操作,将数据包的目标地址改写为客户地址并发给客户机。VS/NAT的体系结构如图2-2所示。图2-2 VS/NAT技术

由图2-2可知,在一组服务器前有一个调度器(Load Balancer),它们之间是通过Switch/HUB相连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。服务器Load Balancer被称为虚拟服务器,对于客户端来说它的IP地址被称为虚拟IP地址。

2.VS/TUN技术

VS/TUN(Virtual Server via IP Tunneling)的工作原理是:连接调度和管理与VS/NAT中的一样,只是报文转发方法不同。调度器根据各个服务器的负载情况动态地选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选择的服务器;服务器在收到报文后,先将报文解析以获得原来目标地址为VIP的报文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以会处理这个请求,然后根据路由表将响应报文直接返回给客户,如图2-3所示。图2-3 VS/TUN技术

3.VS/DR技术

在VS/DR(Virtual Server via Direct Routing)中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧向服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器会处理这个报文,然后根据路由表将响应报文直接返回给客户,如图2-4所示。图2-4 VS/DR技术

4.三种工作模式比较(1)VS/NAT

VS/NAT的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限,当服务器节点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报文都需要通过负载调度器。(2)VS/TUN

在VS/TUN的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,甚至可以调度百台以上的服务器(同等规模的服务器)而不会成为系统的瓶颈。即使负载调度器只有100Mbps的全双工网卡,整个系统的最大吞吐量可超过1Gbps。所以,VS/TUN可以极大地增加负载调度器调度的服务器数量,可以用来构建高性能的超级服务器。VS/TUN技术对服务器有要求,即所有的服务器必须支持“IP Tunneling”或者“IP Encapsulation”协议。目前,VS/TUN的后端服务器主要运行Linux操作系统。(3)VS/DR

跟VS/TUN方法一样,VS/DR调度器只处理客户到服务器端的连接,响应数据可以直接从独立的网络路由返回给客户,可以极大地提高LVS集群系统的伸缩性。与VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不作ARP响应,或者能将报文重定向(Redirect)到本地的Socket端口上。

通过IP隧道实现虚拟服务器的方法VS/TUN,和通过直接路由实现虚拟服务器的方法VS/DR都是实际部署中不错的选择。

5.LVS的调度算法

LVS负载均衡将任务调度到不同的后端服务器是通过调度算法来实现的。LVS共内置了8种调度算法,它们分别是:

1)轮询调度,主要指按顺序从Real Servers中选择一台Real Servers。

2)加权轮询调度,将Real Servers设置一定权值,进行调度。

3)最小连接调度,按照Real Servers的连接情况进行调度。

4)加权最小连接,根据设置的权值和现有的连接数进行调度。

5)基于局部性的最小连接,主要用于增大Cache命中。

6)待复制的基于局部性的最小连接。

7)目标地址散列调度。

8)源地址散列调度。

轮询调度会均等地对待每一台服务器,分配到每台服务器的压力是均衡的,部署中各服务器的配置一般都是相同的。使用轮询是比较合适的,它也是目前最常用的调度算法。2.3.3 Nginx

Nginx既可作为负载均衡器也可作为反向代理服务器,配置非常简单,可以按轮询、IP_HASH、URL_HASH、权重等多种方法对后端的服务器进行调度,同时还支持对后端服务器的健康检查。由于Nginx是基于第7层的负载均衡,根据头部的信息执行负载任务,可对http应用执行分流策略(如对域名、目录)。Nginx对网络的依赖性较小。2.3.4 HAProxy

HAProxy是一个适用于高可用性环境的TCP/HTTP反向代理和负载均衡开源软件,它在7层负载均衡方面的功能很强大(支持cookie track,header rewrite等),支持双机热备,支持虚拟主机,支持健康检查(通过patch可以支持ECV),同时还提供直观的监控页面,可以清晰实时的监控服务集群的运行状况。同时支持Linux 2.6内核中System Epoll,大幅提高了网络I/O性能。

HAProxy的特点是:

1)能够补充Nginx的一些缺点,比如Session的保持,Cookie的引导等工作。

2)支持URL检测,如果后端的服务器出了问题,它可以通过URL检测,及时发现并进行相应处理。

3)从效率上来讲,HAProxy会比Nginx有更出色的负载均衡速度。

4)HAProxy可以对MySQL读操作进行负载均衡,对后端的MySQL节点进行检测和负载均衡。

可以从访问量、资金预算、技术储备等方面综合考虑,从节约的角度来看,前期可以使用Nginx或HAProxy单点负载均衡,后期各方面条件成熟以后再使用LVS或F5。2.4 缓存

缓存可以分为两部分:文件缓存和数据缓存。文件缓存主要指的是静态内容(如HTML网页、图片、音视频文件、脚本文件等),这些可以通过CDN分发处理,从而提高网站响应速度。当然还可以通过varnish或squid缓存服务器来处理,同样也可以提高响应速度。数据缓存是指对某些数据进行缓存,这些数据可以是经常使用的数据、经过复杂的运算才得出的数据等,如网站的基本配置信息、商品的访问量、评论数、商家旗下的商品数量等都是可以缓存的对象。缓存的工具同样也很多,比如redis、memcache都是不错的缓存工具,但对于商城而言,优先推荐持久化的redis。下面将缓存要素归纳为以下几个小节进行详细介绍。2.4.1 客户端缓存

现在越来越多的图片、脚本、css、flash被嵌入到页面中,当我们访问它们的时候势必会做许多次http请求。其实,我们可以通过设置网页头部报文中的时间属性来缓存这些文件。缓存时间(Expires)是通过头部(header)报文来指定特定类型的文件在浏览器中的缓存时间。大多数的图片、flash在发布后都是不需要经常修改的,做了缓存以后再次浏览就不需要再从服务器下载这些文件,直接从缓存中读取即可,这样再次访问页面的速度会大大加快。例如,在PHP中设置30天后过期:Header("Cache-Control: must-revalidate");$offset = 60 * 60 * 24 * 30;$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";Header($ExpStr);2.4.2 CDN加速

CDN的全称是Content Delivery Network,即内容分发网络,其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置多个节点服务器从而构成一个在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况,以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。

对于大型电商平台而言,一般需要建CDN做网络加速,如淘宝、京东都采用自建CDN,中小型的企业可以采用与第三方CDN厂商合作,如蓝汛、网宿、快网等。图2-5 CDN内容分发2.4.3 静态文件缓存

静态文件缓存主要用到的是Varnish/Squid,它在Web服务器前面添加了一层缓存,可缓存图片、js等格式的文件,当访问这些文件时,会先从缓存服务器中查找,如果未命中,才会去请求Web服务器。关于Varnish和Squid的详细介绍大家可以去网上查询相关资料,这里不再赘述。2.4.4 数据缓存

数据缓存方面使用较多的是Memcache和Redis。Memcache是一款非常优秀的内存缓存工具,相信大家对它已经有所了解,这里不再赘述。Redis也是一个key-value存储系统,和Memcache类似,但它支持更多的存储类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set,有序集合)和hash(哈希类型)。Redis通常将全部的数据存储在内存中,但它也支持持久化。目前Redis通过两种方式实现持久化,一种是使用快照,它是一种半持久耐用模式,不时将数据集以异步方式从内存中以RDB格式写入硬盘;另一种是AOF,从1.1版本开始使用更安全的AOF格式替代,它是一种只能追加的日志类型,将数据集修改操作记录起来。Redis能够在后台对只可追加的记录作修改以避免无限增长的日志。Redis的出现很大程度弥补了Memcache这类key-value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。Redis提供了Python、Ruby、Erlang和PHP的API,使用很方便。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器同步,从服务器又可以是关联其他从服务器的主服务器,这使得Redis可执行单层树复制。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

在电商平台中,很多数据都可以放入Redis缓存中,如网站的基本配置信息、商品的访问量、评论数、商家旗下的商品数量等都是可以缓存的对象。2.5 数据存储

数据存储可以分为以下几类:

·关系型数据库,以Oracle、MySQL为代表。

·key-value数据库,以Redis和Memcache为代表。

·文档型数据库,以MongoDB为代表。

·分布式面向列的数据库,以HBase为代表。

每种类型的数据库应用的业务领域是不一样的。下面从关系型、内存型、分布式三个方面在电商平台的应用作一下分析。2.5.1 关系型数据库

在当前电商平台中,使用较多的关系型数据库至少有三种,它们分别为:MySQL、Oracle、SQL Server。从使用率、技术成本、投入成本等综合考虑,MySQL肯定是首选。本节的内容我们只围绕MySQL展开。

MySQL最常用的存储引擎为MyISAM、InnoDB,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。MyISAM是MySQL的默认存储引擎,支持事务,也不支持外键,但其访问速度快,对事务完整性没有要求。InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率要差一些,并且会占用更多的磁盘空间以保留数据和索引。

在电商平台中,使用最多的两个存储引擎也是MyISAM和InnoDB。由前面得知,InnoDB引擎支持事务,而电商平台的一大特性就是对事务的支持,电商的一些基础功能如下单、退单、充值等环节都需要作事务处理,这样才能最大程度保证数据的完整性、一致性,所以InnoDB存储引擎就成了电商平台唯一的选择。2.5.2 内存型数据库

内存型数据库的代表是Redis、MongoDB等,它强调高并发,但在事务方面远不及关系型数据库。

关于Redis的介绍可查看2.4.4节,这里不再介绍。

MongoDB以多线程方式通信,主线程监听新的连接,连接后,启动新的线程做数据的操作(IO切换)。

MongoDB在数据存储上按命名空间来划分,一个collection是一个命名空间,一个索引也是一个命名空间,同一个命名空间的数据被分成很多个Extent,Extent之间使用双向链表连接。在每一个Extent中,保存了具体每一行的数据,这些数据也是通过双向链接连接的,每一行数据存储空间不仅包括数据占用空间,还可能包含一部分附加空间,这使得在数据update变大后可以不移动位置。MongoDB索引以BTree结构来实现。

在MongoDB中使用了操作系统底层提供的内存映射机制,即mmap,MongoDB调用mmap把磁盘中的数据映射到内存中的,所以必须有一个机制时刻地刷数据到硬盘才能保证可靠性。2.5.3 分布式数据库

在高并发的访问下,传统的关系型数据库(如MySQL)提供读写分离的方案,但在大并发下会产生数据不一致的问题。这时我们可能会考虑对MySQL数据进行切分、分库分表,但随着越来越多的海量数据,维护起来也越来越复杂。在大数据下,主备、主从、多主、分库、分表、数据切分等方案都不是很好的解决办法,它们无法做到高可用和高伸缩,这时就需要HBase了。分布式数据库HBase有一套完善的解决方案,适用于高并发海量数据存取的要求。

HBase基于列式存储,存储高效并且低IO。通常的查询不需要一行的全部字段,大多数只需要几个字段,而面向行的存储中,每次查询都会将全部数据取出,然后再从中选出需要的字段。面向列的存储系统可以单独查询某一列,从而大大降低IO,同列数据具有很高的相似性,会增加压缩效率。

关于分布式数据库,更详细的信息建议大家去看相关专业资料,这里只是作为一种解决方案引出而已。分布式数据库适用于大数据,但对于中小平台而言,关系型MySQL数据库还是最佳首选。2.5.4 MySQL可扩展方案

由于在目前电商平台中MySQL的使用率最高,所以我们将MySQL扩展方案专门用一节来介绍。在电商平台运营初期,由于用户量、访问量一般都比较低,不进行较大优化的MySQL是完全可以胜任的,但随着用户量、访问量的不断增大,就必须考虑MySQL的扩展方案了。目前有以下几个方案可选。(1)MySQL Cluster

这是MySQL官方提供的集群方案,其特点为可用性及性能非常高,每份数据至少可以在不同主机上存一份副本,且冗余数据复制实时同步,但它的维护成本同样非常高,目前真正用于线上环境的极少,所以暂不推荐。(2)DRBD硬盘网络镜像

DRBD(Distributed Replicated Block Device)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案,它的特点是功能强大,数据可在底层块设备级别跨物理主机镜像,且可以根据性能和可靠性要求配置不同级别的同步,I/O操作会保持顺序,可满足数据库对一致性的要求,但非分布式文件系统无法支持镜像数据同时可见,性能和可靠性相互矛盾,无法适用于性能和可靠性要求苛刻的环境,维护成本高于MySQL Replication方案。大家可以考虑根据自身环境来决定是否部署。(3)MySQL Replication

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载