-
拥抱AI大趋势,ARM发布两款AI芯片架构
今天,ARM发布了两款针对移动终端的AI芯片架构,物体检测(ObjectDetection,简称OD)处理器和机器学习(MachineLearning,简称ML)处理器。拥抱AI大趋势,ARM发布两款AI芯片架构以往,ARM都是架构准备好了,才发公告。这次一反常态,没货却先发公告:OD处理器,计划在第一季度才能提供给合作伙伴;ML处理器得等到年中。这也看出了ARM很焦急。毕竟在过去的几个月中,尤其是在移动端圈子里,机器学习在半导体行业中很热。好几家提供芯片架构的公司都宣布了提供消费者解决方案,连华为都开始自主研发架构了。那么多玩家入场,ARM却没啥动作。直到现在,ARM才把重点放在了Armv8.2的CPUISA扩展上,该扩展借助半精度浮点和整数点产品来简化和加速神经网络的专用指令。除了CPU的改进之外,还看到了G72中机器学习的GPU改进。虽然这两项改进都有所帮助,但想要最大性能和效率,这些改进还不够。在测试Kirin970的NPU和Qualcomm的DSP时,可以看出,专用架构上运行推理的效率,比在CPU上运行的效率高出一个数量级以上。正如ARM官方解释的那样,Armv8.2和GPU的改进只是建立机器学习解决方案的第一步,还必须研究对专用解决方案的需求。ARM也从合作的小伙伴那里感受到了行业的压力,才熬出来ML处理器。下面简单介绍一下这次发布的两个新的架构:机器学习ML处理器以及OD处理器。ML处理器,是专门为加速神经网络模型推理所设计的。这种架构比传统的CPU和GPU架构有明显的优势。在执行机器学习任务时,这款ML处理器可为数据优化内存管理。这款处理器具有数据可高度重复使用的特点,能最大限度地减少数据的输入和输出,从而实现高性能和高效率。ML处理器,理论上可在1.5W功率下,有超过4.6TOPs(8位整数)的理论吞吐量,最高可达3TOPs/W。虽然TOPs值并不能完全体现处理器的性能,不过它对于行业标准化仍然有用。作为一个完全独立的独立IP(电路功能)模块,ML处理器具有自己的ACE-Lite接口,可集成到SoC中,也可以集成到DynamiQ中。此外,ARM没有透露ML处理器更多的架构信息。OD处理器,是针对物体检测的任务进行了优化。尽管ML处理器也能完成相同的任务,但OD处理器可以更快。给单项任务提供专用架构,才能够获得最大效率。ARM也考虑到了可能会出现OD和ML处理器集成在一起用的情况:OD处理器负责把图像中的目标处理区分割出来,然后把它们传递给ML处理器,进行更细颗粒度的处理。ARM还提供大量软件,帮助开发人员将他们的神经网络模型应用到不同的NN框架中。从今天开始,这些软件大家可以在ARM开发者网站找到,同时也在Github上提供。考虑到SoC开发的周期,基于新架构的芯片大概得在2019年年中或年末才能发布。ARM这次,可以说半导体及架构供应商中响应AI趋势比较慢的企业了。最后,附编译来源:https://www.anandtech.com/show/12427/arm-announces-trillium-machine-learning-ip
-
超详细的Web网站技术架构总结
俗话说的好,冰冻三尺非一日之寒,滴水穿石非一日之功,罗马也不是一天就建成的,当然对于我们开发人员来说,一个好的架构也不是一蹴而就的。超详细的Web网站技术架构总结初始搭建开始的开始,就是各种框架一搭,然后扔到Tomcat容器中跑就是了,这时候我们的文件,数据库,应用都在一个服务器上。服务分离随着系统的的上线,用户量也会逐步上升,很明显一台服务器已经满足不了系统的负载,这时候,我们就要在服务器还没有超载的时候,提前做好准备。由于我们是单体架构,优化架构在短时间内是不现实的,增加机器是一个不错的选择。这时候,我们可能要把应用和数据库服务单独部署,如果有条件也可以把文件服务器单独部署。反向代理为了提升服务处理能力,我们在Tomcat容器前加一个代理服务器,我一般使用Nginx,当然你如果更熟悉apache也未尝不可。用户的请求发送给反向代理,然后反向代理把请求转发到后端的服务器。严格意义上来说,Nginx是属于web服务器,一般处理静态html、css、js请求,而Tomcat属于web容器,专门处理JSP请求,当然Tomcat也是支持html的,只是效果没Nginx好而已。反向代理的优势,如下:隐藏真实后端服务负载均衡集群高可用集群缓存静态内容实现动静分离安全限流静态文件压缩解决多个服务跨域问题合并静态请求(HTTP/2.0后已经被弱化)防火墙SSL以及http2动静分离基于以上Nginx反向代理,我们还可以实现动静分离,静态请求如html、css、js等请求交给Nginx处理,动态请求分发给后端Tomcat处理。Nginx升级到1.9.5+可以开启HTTP/2.0时代,加速网站访问。当然,如果公司不差钱,CDN也是一个不错的选择。服务拆分在这分布式微服务已经普遍流行的年代,其实我们没必要踩过多的坑,就很容易进行拆分。市面上已经有相对比较成熟的技术,比如阿里开源的Dubbo(官方明确表示已经开始维护了),spring家族的springcloud,当然具体如何去实施,无论是技术还是业务方面都要有很好的把控。DubboSpringCloud服务发现——NetflixEureka客服端负载均衡——NetflixRibbon断路器——NetflixHystrix服务网关——NetflixZuul分布式配置——SpringCloudConfig微服务与轻量级通信同步通信和异步通信远程调用RPCREST消息队列持续集成部署服务拆分以后,随着而来的就是持续集成部署,你可能会用到以下工具。Docker、Jenkins、Git、Maven图片源于网络,基本拓扑结构如下所示:整个持续集成平台架构演进到如下图所示:服务集群Linux集群主要分成三大类(高可用集群,负载均衡集群,科学计算集群)。其实,我们最常见的也是生产中最常接触到的就是负载均衡集群。负载均衡实现DNS负载均衡,一般域名注册商的dns服务器不支持,但博主用的阿里云解析已经支持四层负载均衡(F5、LVS),工作在TCP协议下七层负载均衡(Nginx、haproxy),工作在Http协议下分布式session大家都知道,服务一般分为有状态和无状态,而分布式sessoion就是针对有状态的服务。分布式Session的几种实现方式基于数据库的Session共享基于resin/tomcatweb容器本身的session复制机制基于oscache/Redis/memcached进行session共享。基于cookie进行session共享分布式Session的几种管理方式SessionReplication方式管理(即session复制)简介:将一台机器上的Session数据广播复制到集群中其余机器上使用场景:机器较少,网络流量较小优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问缺点:广播式复制到其余机器有一定廷时,带来一定网络开销SessionSticky方式管理简介:即粘性Session、当用户访问集群中某台机器后,强制指定后续所有请求均落到此机器上使用场景:机器数适中、对稳定性要求不是非常苛刻优点:实现简单、配置方便、没有额外网络开销缺点:网络中有机器Down掉时、用户Session会丢失、容易造成单点故障缓存集中式管理简介:将Session存入分布式缓存集群中的某台机器上,当用户访问不同节点时先从缓存中拿Session信息使用场景:集群中机器数多、网络环境复杂优点:可靠性好缺点:实现复杂、稳定性依赖于缓存的稳定性、Session信息放入缓存时要有合理的策略写入目前生产中使用到的基于tomcat配置实现的MemCache缓存管理session实现(麻烦)基于OsCache和shiro组播的方式实现(网络影响)基于spring-session+redis实现的(最适合)负载均衡策略负载均衡策略的优劣及其实现的难易程度有两个关键因素:一、负载均衡算法,二、对网络系统状况的检测方式和能力。1、rr轮询调度算法。顾名思义,轮询分发请求。优点:实现简单缺点:不考虑每台服务器的处理能力2、wrr加权调度算法。我们给每个服务器设置权值weight,负载均衡调度器根据权值调度服务器,服务器被调用的次数跟权值成正比。优点:考虑了服务器处理能力的不同3、sh原地址散列:提取用户IP,根据散列函数得出一个key,再根据静态映射表,查处对应的value,即目标服务器IP。过目标机器超负荷,则返回空。4、dh目标地址散列:同上,只是现在提取的是目标地址的IP来做哈希。优点:以上两种算法的都能实现同一个用户访问同一个服务器。5、lc最少连接。优先把请求转发给连接数少的服务器。优点:使得集群中各个服务器的负载更加均匀。6、wlc加权最少连接。在lc的基础上,为每台服务器加上权值。算法为:(活动连接数*256+非活动连接数)÷权重,计算出来的值小的服务器优先被选择。优点:可以根据服务器的能力分配请求。7、sed最短期望延迟。其实sed跟wlc类似,区别是不考虑非活动连接数。算法为:(活动连接数+1)*256÷权重,同样计算出来的值小的服务器优先被选择。8、nq永不排队。改进的sed算法。我们想一下什么情况下才能“永不排队”,那就是服务器的连接数为0的时候,那么假如有服务器连接数为0,均衡器直接把请求转发给它,无需经过sed的计算。9、LBLC基于局部性的最少连接。均衡器根据请求的目的IP地址,找出该IP地址最近被使用的服务器,把请求转发之,若该服务器超载,最采用最少连接数算法。10、LBLCR带复制的基于局部性的最少连接。均衡器根据请求的目的IP地址,找出该IP地址最近使用的“服务器组”,注意,并不是具体某个服务器,然后采用最少连接数从该组中挑出具体的某台服务器出来,把请求转发之。若该服务器超载,那么根据最少连接数算法,在集群的非本服务器组的服务器中,找出一台服务器出来,加入本服务器组,然后把请求转发之。读写分离MySql主从配置,读写分离并引入中间件,开源的MyCat,阿里的DRDS都是不错的选择。如果是对高可用要求比较高,但是又没有相应的技术保障,建议使用阿里云的RDS或者Redis相关数据库,省事省力又省钱。全文检索如果有搜索业务需求,引入solr或者elasticsearch也是一个不错的选择,不要什么都塞进关系型数据库。缓存优化引入缓存无非是为了减轻后端数据库服务的压力,防止其”罢工”。常见的缓存服务有,Ehcache、OsCache、MemCache、Redis,当然这些都是主流经得起考验的缓存技术实现,特别是Redis已大规模运用于分布式集群服务中,并证明了自己优越的性能。消息队列异步通知:比如短信验证,邮件验证这些非实时反馈性的逻辑操作。流量削锋:应该是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。日志处理:系统中日志是必不可少的,但是如何去处理高并发下的日志确是一个技术活,一不小心可能会压垮整个服务。工作中我们常用到的开源日志ELK,为嘛中间会加一个Kafka或者redis就是这么一个道理(一群人涌入和排队进的区别)。消息通讯:点对点通信(个人对个人)或发布订阅模式(聊天室)。日志服务消息队列中提到的ELK开源日志组间对于中小型创业供公司是一个不错的选择。安全优化以上种种,没有安全做保证可能都会归于零。阿里云的VPN虚拟专有网络以及安全组配置自建机房的话,要自行配置防火墙安全策略相关服务访问,比如Mysql、Redis、Solr等如果没有特殊需求尽量使用内网访问并设置鉴权尽量使用代理服务器,不要对外开放过多的端口https配合HTTP/2.0也是个不错的选择
-
SEO技术:浅析网站优化架构带来的影响?
1、W3C标准对SEO的影响。SEO技术:浅析网站优化架构带来的影响?我们看到每个网页的源文件(右键查看源文件),几乎每个网站最顶部都有以下代码:以上代码是告诉浏览器、验证机制和搜索引擎的spider这个网站是遵循W3C标准的。验证的方法是http://validator.w3.org/,输入验证的网址,我们就能看到不匹配的错误信息。虽然很多网站都没有遵循W3C标准也获得了很好的排名,早在前几年,很多网站都不会遵循这个标准,但是经过验证后,能保证遵循W3C标准的网站样式不会被不同浏览器改变,使得网站的访问者看到的网页与设计出来的完全一致。2、DIV+CSS对SEO的影响。DIV+CSS应该是web标准常用术语之一,在XHTML网站设计标准中,不再使用表格(table)定位技术,而采用DIV+CSS,搜索引擎对网站的排名顺序不是固定的,SEO的思想就是用搜索引擎的理念来搭建网站。这种DIV+CSS设计网站对SEO的影响是显而易见的,由于结构简单、符合标准,利用DIV+CSS架构的网站深受搜索引擎喜欢,不过并不是所有DIV+CSS对网站的排名都有好处,正确的网页布局,对于SEO是非常有利的。对于XHTML标准的DIV+CSS布局,一般在设计完成后都会通过W3C验证。3、静态页面对SEO的影响。很多SEO人在做优化的过程中,可以强调页面静态化,他们认为这样更有利于搜索引擎抓取网站内容。但是,目前如google、百度等搜素引擎都能收录动态页面,使用动态页面的站点数远远大于静态页面的网站,如web2.0网站,有时候HTML静态化反而是得不偿失的。其实搜索引擎对静态页面和动态页面并没有特殊喜好之分,动态页面参数机制不利于收录,同时频繁读写数据字导致磁盘损伤等等问题,而静态页面带来的问题是生成文件数量非常多,需要大量空间存储文件、同时页面维护的复杂性都将大大提高。介于此,现在很多网站流行做伪静态处理。4、目录级别对SEO的影响目前SEO界公认的说法是目录级别在3级以内,有时域名根目录下不一定只有目录,还有一些单页面,这样的单页面在搜索引擎中的权重肯定要比目录下的单页面高。同时,在目录中设置关键词是很重要的,下面以“网站推广”这个关键词为例,“网站推广”是核心关键词,那么在设计网站结构的时候就需要把长尾关键词,如“网站推广方案”在子栏目目录名中出现,到了第三层页面就是具体要优化的三级关键词了。5、目录文件名对SEO的影响目录路径和文件名也是影响排名的一个重要因素,很多人很容易忽略这点,根据关键词无所不在的原则,许多重要优化的页面直接命名为文件名。目前google会将“_”、“%20”都等于空格,所以我们在做目录文件名时尽量使用乳如zblog-help.html结构,“-”而不是“_”进行分割。随着搜索引擎不断改进,google、百度都能支持中文文件名了,经过使用urlencode的字符串,这样的排名要优于其他文件命名方法。6、网页大小对SEO的影响网页大小通常以KB来表示,早在前几年,超过100KB的网页会收录不全。可能是当时带宽也小、搜索引擎也无法抓取较大的页面。如今带宽都宽了、信息量也大了,门户网站首页大多在100KB以上,网站首页大是正常的,但具体内容页面,则应该追求精简,过大的页面不仅会降低打开速度,在搜索排名中要落后于较小的页面。
-
Facebook之网站技术架构,开发者和架构师必看
21CTO社区导读:本文介绍的是2015年左右的Facebook网站架构,至今未大改,对开发者和架构师来说仍具参考意义。在讨论架构细节之前,展示一些Facebook目前遇到的数据量:◆Facebook有570000000000每月页面浏览量(据GoogleAdPlanner)◆Facebook的照片量比其他所有图片网站加起来还多(包括Flickr等网站)◆每个月超过30亿张照片被上传◆Facebook的系统服务每秒处理120万张照片,这不包括CDN服务中处理的照片◆每月超过25亿条的内容(状态更新,评论等)被共享◆Facebook有超过30,000服务器(这个数字是去年的)Facebook扩展所依赖的软件Facebook是在某些程度上说仍然是LAMP的站点,但它比普通的LAMP大得多,以纳入其他元素和很多服务,并修改现行的做法。例如:◆Facebook仍使用PHP,但它已经为它建立一个编译器,以便它可以分为本地代码打开了Web服务器,从而提高性能。◆Facebook使用Linux,但他特别为网络吞吐量做了优化。◆Facebook使用MySQL,但主要是作为一个Key-value的持久性存储,Jions和服务器逻辑操作在Web服务器上操作。因为在那里更容易执行。还有是自编写的系统,如Haystack,一个高度可扩展的对象存储,用来存储Facebook的照片。还有Scribe,一个日志系统,可以运行在Facebook的巨大规模上的日志系统。现在我们介绍一下全球最大的社交网络网站的所使用的软件吧。Memcachedmemcached的是现在互联网最有名的软件之一了。这是一个分布式内存缓存系统,用来作为Web服务器和MySQL服务器之间的缓存层(因为数据库访问比较慢)。多年以来,Facebook已经提出了一些优化Memcached和一些周边软件的办法。如压缩networkstack。Facebook的每时每刻都有数10TB的数据缓存在Memcached的数千台服务器上。它可能是世界上最大的Memcached的集群了。HipHopforPHPPHP作为一种脚本语言,和本地程序相比是运行缓慢的。HipHop可以将PHP转换成C++代码,然后再进行编译,可以获得更好的性能。因为Facebook严重依赖PHP,这使得其可以让Web服务器运行的更有效率。一个工程师小团队在Facebook(一开始只有三人)花了18个月时间开发HipHop,现在已经是运行状态。HaystackHaystack是Facebook的高性能照片存储/检索系统(严格来说,是一个对象存储,因此它并不一定要存储照片)。它有许多工作要做;有超过20亿张上传的照片,并且每一个被保存在四个不同的分辨率,因此有超过800亿张照片。它不仅是对能够处理的上亿的照片,运行表现也是至关重要的。正如我们前面提到的,Facebook的服务约120万张照片每秒,这个数字不包括CDN上的。这是一个惊人的数字BigPipeBigPipe是Facebook开发的一个动态的网页服务系统。Facebook使用它来按section(称为“pagelets”)处理每个网页,以获取最佳性能。例如,在聊天窗口是分开的,新闻Feed也是分开的,等等。这些pagelets可以在一个页面表现的时候同时使用,这是该页面表现的时候获取进来的。即使某些工程的一部分关闭或中端,用户也可以获得一部分网页。CassandraCassandra是一个不会单点失败的分布式存储系统。这是为NoSQL运动的一个重要组成部分,并已公开的源代码(它甚至成为一个Apache项目)。Facebook在搜索功能中使用它。除了Facebook,还有一些人也用它,例如Digg的。不过最近Twitter放弃了Cassandra。ScribeScribe是一个灵活的日志系统,Facebook在他的内部大量使用。它的能够处理在Facebook的大规模日志记录,并自动处理新的日志记录类别,Facebook有数百个日志类别(categories)。HadoopandHiveHadoop的是一个开源的map-reduce实现,使得它可以在进行大数据上进行运算。Facebook的使用这个进行数据分析(而我们都知道,Facebook已经大量的数据)。Hive就是发源于Facebook,使得对于Hadoop使用的SQL查询成为可能,从而是其更容易对非程序员使用。Hadoop和Hive是开源的(Apache项目),有为数众多的追随者,例如雅虎和Twitter。ThriftFacebook使用的几种不同的语言和不同的services。PHP是最终用于前端,Erlang是用于聊天,Java和C++也使用于多种场所,也许还有其他语言。Thrift是一个内部开发的跨语言的框架,联系语言,使他们可以在一起合作,从而使他们之间可以交互。这使得Facebook可以更容易为继续保持其跨语言的发展。Facebook已经让Thrift开源。更多的语言支持已被添加到Thrift。VarnishVarnish是一个HTTP加速器,可以作为一个负载平衡器,并缓存的内容,然后可以以闪电般的速度送达。Facebook使用的arnish来处理照片和个人资料图片,处理每天数十亿的要求。和其他的东西一样,Varnish是开源的。保持Facebook顺畅运行的其他东西我们已经提到的软件,组成了Facebook的系统,并帮助运行在大规模上。但是,处理这么大的系统是一个复杂的任务,因此我们将列出一些其他的东西,他们保持了Facebook的平稳运行。渐进发布和暗启动Facebook有一个他们所谓的守门人制度(Gatekeeper),允许他们可以给不同的用户运行两套不同的系统。这让Facebook渐进的发布新的功能,A/B测试,只为Facebook雇员发布等的某些特性。Gatekeeper也可以让Facebook实现“暗启动”,这是在用户使用一些功能之前,就激活某些功能(因为用户没有察觉,所以称之为暗启动)。这将作为一个现实世界的压力测试,在正式启动前,帮助揭露一些功能障碍和其他问题。暗启动通常是在正式启动前两个星期。Profiling的直播系统Facebook的仔细监控其系统,有趣的是它也负责监察每一个PHP函数在生产环境的性能。检测各个PHP的环境的配置运行情况。使用开源工具,XHProf。渐进的利用关闭功能来提升性能如果Facebook运行时出现性能问题,有一个办法,就是逐步禁用不太重要的功能,以增强Facebook的大量核心功能表现。
-
浅谈web网站架构演变过程,超级详细
前言浅谈web网站架构演变过程,超级详细我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该系统具备的功能:用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易和管理阶段一、单机构建网站网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;最后再选择一个数据库管理系统来存储数据,如mysql、sqlserver、oracle,然后通过JDBC进行数据库的连接和操作。把以上的所有软件都装载同一台机器上,应用跑起来了,也算是一个小系统了。此时系统结果如下:阶段二、应用服务器与数据库分离随着网站的上线,访问量逐步上升,服务器的负载慢慢提高,在服务器还没有超载的时候,我们应该就要做好准备,提升网站的负载能力。假如我们代码层面已难以优化,在不提高单台机器的性能的情况下,增加机器是一个不错的方式,不仅可以有效地提高系统的负载能力,而且性价比高。增加的机器用来做什么呢?此时我们可以把数据库,web服务器拆分开来,这样不仅提高了单台机器的负载能力,也提高了容灾能力。应用服务器与数据库分开后的架构如下图所示:阶段三、应用服务器集群随着访问量继续增加,单台应用服务器已经无法满足需求了。在假设数据库服务器没有压力的情况下,我们可以把应用服务器从一台变成了两台甚至多台,把用户的请求分散到不同的服务器中,从而提高负载能力。多台应用服务器之间没有直接的交互,他们都是依赖数据库各自对外提供服务。著名的做故障切换的软件有keepalived,keepalived是一个类似于layer3、4、7交换机制的软件,他不是某个具体软件故障切换的专属品,而是可以适用于各种软件的一款产品。keepalived配合上ipvsadm又可以做负载均衡,可谓是神器。我们以增加了一台应用服务器为例,增加后的系统结构图如下:系统演变到这里,将会出现下面四个问题:用户的请求由谁来转发到到具体的应用服务器有什么转发的算法应用服务器如何返回用户的请求用户如果每次访问到的服务器不一样,那么如何维护session的一致性我们来看看解决问题的方案:1、第一个问题即是负载均衡的问题,一般有5种解决方案:1、http重定向。HTTP重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群优点:简单。缺点:性能较差。2、DNS域名解析负载均衡。DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出负载均衡后的服务器IP。优点:交给DNS,不用我们去维护负载均衡服务器。缺点:当一个应用服务器挂了,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强大的管理。3、反向代理服务器。在用户的请求到达反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache,nginx都可以充当反向代理服务器。优点:部署简单。缺点:代理服务器可能成为性能的瓶颈,特别是一次上传大文件。4、IP层负载均衡。在请求到达负载均衡器后,负载均衡器通过修改请求的目的IP地址,从而实现请求的转发,做到负载均衡。优点:性能更好。缺点:负载均衡器的宽带成为瓶颈。5、数据链路层负载均衡。在请求到达负载均衡器后,负载均衡器通过修改请求的mac地址,从而做到负载均衡,与IP负载均衡不一样的是,当请求访问完服务器之后,直接返回客户。而无需再经过负载均衡器。2、第二个问题即是集群调度算法问题,常见的调度算法有10种。1、rr轮询调度算法。顾名思义,轮询分发请求。优点:实现简单缺点:不考虑每台服务器的处理能力2、wrr加权调度算法。我们给每个服务器设置权值weight,负载均衡调度器根据权值调度服务器,服务器被调用的次数跟权值成正比。优点:考虑了服务器处理能力的不同3、sh原地址散列:提取用户IP,根据散列函数得出一个key,再根据静态映射表,查处对应的value,即目标服务器IP。过目标机器超负荷,则返回空。4、dh目标地址散列:同上,只是现在提取的是目标地址的IP来做哈希。优点:以上两种算法的都能实现同一个用户访问同一个服务器。5、lc最少连接。优先把请求转发给连接数少的服务器。优点:使得集群中各个服务器的负载更加均匀。6、wlc加权最少连接。在lc的基础上,为每台服务器加上权值。算法为:(活动连接数*256+非活动连接数)÷权重,计算出来的值小的服务器优先被选择。优点:可以根据服务器的能力分配请求。7、sed最短期望延迟。其实sed跟wlc类似,区别是不考虑非活动连接数。算法为:(活动连接数+1)*256÷权重,同样计算出来的值小的服务器优先被选择。8、nq永不排队。改进的sed算法。我们想一下什么情况下才能“永不排队”,那就是服务器的连接数为0的时候,那么假如有服务器连接数为0,均衡器直接把请求转发给它,无需经过sed的计算。9、LBLC基于局部性的最少连接。均衡器根据请求的目的IP地址,找出该IP地址最近被使用的服务器,把请求转发之,若该服务器超载,最采用最少连接数算法。10、LBLCR带复制的基于局部性的最少连接。均衡器根据请求的目的IP地址,找出该IP地址最近使用的“服务器组”,注意,并不是具体某个服务器,然后采用最少连接数从该组中挑出具体的某台服务器出来,把请求转发之。若该服务器超载,那么根据最少连接数算法,在集群的非本服务器组的服务器中,找出一台服务器出来,加入本服务器组,然后把请求转发之。3、第三个问题是集群模式问题,一般3种解决方案:1、NAT:负载均衡器接收用户的请求,转发给具体服务器,服务器处理完请求返回给均衡器,均衡器再重新返回给用户。2、DR:负载均衡器接收用户的请求,转发给具体服务器,服务器出来玩请求后直接返回给用户。需要系统支持IPTunneling协议,难以跨平台。3、TUN:同上,但无需IPTunneling协议,跨平台性好,大部分系统都可以支持。4、第四个问题是session问题,一般有4种解决方案:1、SessionSticky。sessionsticky就是把同一个用户在某一个会话中的请求,都分配到固定的某一台服务器中,这样我们就不需要解决跨服务器的session问题了,常见的算法有ip_hash法,即上面提到的两种散列算法。优点:实现简单。缺点:应用服务器重启则session消失。2、SessionReplication。sessionreplication就是在集群中复制session,使得每个服务器都保存有全部用户的session数据。优点:减轻负载均衡服务器的压力,不需要要实现ip_hasp算法来转发请求。缺点:复制时宽带开销大,访问量大的话session占用内存大且浪费。3、Session数据集中存储:session数据集中存储就是利用数据库来存储session数据,实现了session和应用服务器的解耦。优点:相比sessionreplication的方案,集群间对于宽带和内存的压力减少了很多。缺点:需要维护存储session的数据库。4、CookieBase:cookiebase就是把session存在cookie中,有浏览器来告诉应用服务器我的session是什么,同样实现了session和应用服务器的解耦。优点:实现简单,基本免维护。缺点:cookie长度限制,安全性低,宽带消耗。值得一提的是:nginx目前支持的负载均衡算法有wrr、sh(支持一致性哈希)、fair(本人觉得可以归结为lc)。但nginx作为均衡器的话,还可以一同作为静态资源服务器。keepalived+ipvsadm比较强大,目前支持的算法有:rr、wrr、lc、wlc、lblc、sh、dhkeepalived支持集群模式有:NAT、DR、TUNnginx本身并没有提供session同步的解决方案,而apache则提供了session共享的支持。好了,解决了以上的问题之后,系统的结构如下:阶段四、数据库读写分离化上面我们总是假设数据库负载正常,但随着访问量的的提高,数据库的负载也在慢慢增大。那么可能有人马上就想到跟应用服务器一样,把数据库一份为二再负载均衡即可。但对于数据库来说,并没有那么简单。假如我们简单的把数据库一分为二,然后对于数据库的请求,分别负载到A机器和B机器,那么显而易见会造成两台数据库数据不统一的问题。那么对于这种情况,我们可以先考虑使用读写分离的方式。读写分离后的数据库系统结构如下:这个结构变化后也会带来两个问题:主从数据库之间数据同步问题应用对于数据源的选择问题解决问题方案:我们可以使用MYSQL自带的master+slave的方式实现主从复制。采用第三方数据库中间件,例如mycat。mycat是从cobar发展而来的,而cobar是阿里开源的数据库中间件,后来停止开发。mycat是国内比较好的mysql开源数据库分库分表中间件。阶段五、用搜索引擎缓解读库的压力数据库做读库的话,常常对模糊查找力不从心,即使做了读写分离,这个问题还未能解决。以我们所举的交易网站为例,发布的商品存储在数据库中,用户最常使用的功能就是查找商品,尤其是根据商品的标题来查找对应的商品。对于这种需求,一般我们都是通过like功能来实现的,但是这种方式的代价非常大。此时我们可以使用搜索引擎的倒排索引来完成。搜索引擎具有以下优点:它能够大大提高查询速度。引入搜索引擎后也会带来以下的开销:带来大量的维护工作,我们需要自己实现索引的构建过程,设计全量/增加的构建方式来应对非实时与实时的查询需求。需要维护搜索引擎集群搜索引擎并不能替代数据库,他解决了某些场景下的“读”的问题,是否引入搜索引擎,需要综合考虑整个系统的需求。引入搜索引擎后的系统结构如下:阶段六、用缓存缓解读库的压力1、后台应用层和数据库层的缓存随着访问量的增加,逐渐出现了许多用户访问同一部分内容的情况,对于这些比较热门的内容,没必要每次都从数据库读取。我们可以使用缓存技术,例如可以使用google的开源缓存技术guava或者使用memcacahe作为应用层的缓存,也可以使用redis作为数据库层的缓存。另外,在某些场景下,关系型数据库并不是很适合,例如我想做一个“每日输入密码错误次数限制”的功能,思路大概是在用户登录时,如果登录错误,则记录下该用户的IP和错误次数,那么这个数据要放在哪里呢?假如放在内存中,那么显然会占用太大的内容;假如放在关系型数据库中,那么既要建立数据库表,还要简历对应的javabean,还要写SQL等等。而分析一下我们要存储的数据,无非就是类似{ip:errorNumber}这样的key:value数据。对于这种数据,我们可以用NOSQL数据库来代替传统的关系型数据库。2、页面缓存除了数据缓存,还有页面缓存。比如使用HTML5的localstroage或者cookie。优点:减轻数据库的压力大幅度提高访问速度缺点:需要维护缓存服务器提高了编码的复杂性值得一提的是:缓存集群的调度算法不同与上面提到的应用服务器和数据库。最好采用“一致性哈希算法”,这样才能提高命中率。这个就不展开讲了,有兴趣的可以查阅相关资料。加入缓存后的结构:阶段七、数据库水平拆分与垂直拆分我们的网站演进到现在,交易、商品、用户的数据都还在同一个数据库中。尽管采取了增加缓存,读写分离的方式,但随着数据库的压力继续增加,数据库的瓶颈越来越突出,此时,我们可以有数据垂直拆分和水平拆分两种选择。7.1、数据垂直拆分垂直拆分的意思是把数据库中不同的业务数据拆分道不同的数据库中,结合现在的例子,就是把交易、商品、用户的数据分开。优点:解决了原来把所有业务放在一个数据库中的压力问题。可以根据业务的特点进行更多的优化缺点:需要维护多个数据库问题:需要考虑原来跨业务的事务跨数据库的join解决问题方案:我们应该在应用层尽量避免跨数据库的事物,如果非要跨数据库,尽量在代码中控制。我们可以通过第三方应用来解决,如上面提到的mycat,mycat提供了丰富的跨库join方案,详情可参考mycat官方文档。垂直拆分后的结构如下:7.2、数据水平拆分数据水平拆分就是把同一个表中的数据拆分到两个甚至多个数据库中。产生数据水平拆分的原因是某个业务的数据量或者更新量到达了单个数据库的瓶颈,这时就可以把这个表拆分到两个或更多个数据库中。优点:如果我们能客服以上问题,那么我们将能够很好地对数据量及写入量增长的情况。问题:访问用户信息的应用系统需要解决SQL路由的问题,因为现在用户信息分在了两个数据库中,需要在进行数据操作时了解需要操作的数据在哪里。主键的处理也变得不同,例如原来自增字段,现在不能简单地继续使用了。如果需要分页,就麻烦了。解决问题方案:我们还是可以通过可以解决第三方中间件,如mycat。mycat可以通过SQL解析模块对我们的SQL进行解析,再根据我们的配置,把请求转发到具体的某个数据库。我们可以通过UUID保证唯一或自定义ID方案来解决。mycat也提供了丰富的分页查询方案,比如先从每个数据库做分页查询,再合并数据做一次分页查询等等。数据水平拆分后的结构:阶段八、应用的拆分8.1、拆分应用随着业务的发展,业务越来越多,应用越来越大。我们需要考虑如何避免让应用越来越臃肿。这就需要把应用拆开,从一个应用变为俩个甚至更多。还是以我们上面的例子,我们可以把用户、商品、交易拆分开。变成“用户、商品”和“用户,交易”两个子系统。拆分后的结构:问题:这样拆分后,可能会有一些相同的代码,如用户相关的代码,商品和交易都需要用户信息,所以在两个系统中都保留差不多的操作用户信息的代码。如何保证这些代码可以复用是一个需要解决的问题。解决问题:通过走服务化的路线来解决8.2、走服务化的道路为了解决上面拆分应用后所出现的问题,我们把公共的服务拆分出来,形成一种服务化的模式,简称SOA。采用服务化之后的系统结构:优点:相同的代码不会散落在不同的应用中了,这些实现放在了各个服务中心,使代码得到更好的维护。我们把对数据库的交互放在了各个服务中心,让”前端“的web应用更注重与浏览器交互的工作。问题:如何进行远程的服务调用解决方法:我们可以通过下面的引入消息中间件来解决阶段九、引入消息中间件随着网站的继续发展,我们的系统中可能出现不同语言开发的子模块和部署在不同平台的子系统。此时我们需要一个平台来传递可靠的,与平台和语言无关的数据,并且能够把负载均衡透明化,能在调用过程中收集调用数据并分析之,推测出网站的访问增长率等等一系列需求,对于网站应该如何成长做出预测。开源消息中间件有阿里的dubbo,可以搭配Google开源的分布式程序协调服务zookeeper实现服务器的注册与发现。引入消息中间件后的结构:十、总结以上的演变过程只是一个例子,并不适合所有的网站,实际中网站演进过程与自身业务和不同遇到的问题有密切的关系,没有固定的模式。只有认真的分析和不断地探究,才能发现适合自己网站的架构。
-
你知道大型网站如何架构的吗?
反向代理和CDN加速网站响应你知道大型网站如何架构的吗?使用反向代理和CDN加速网站响应:CDN和反向代理的基本原理都是缓存,区别在于:CDN部署在网络提供商的机房;反向代理则部署在网站的中心机房;使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。使用反向代理和CDN加速网站响应优点:减轻应用负载压力,异地缓存有效解决不同地方用户访问过慢的问题;缺点:成本大幅增加,架构进一步复杂化,也维护难度进一步增大,静态文件缓存更新失效问题;技术点:CDN、反向代理方案;使用NoSQL和搜索引擎到这里,已经基本做到了DB层面和应用层面的横向扩展了,可以开始关注一些其它方面,例如:站内搜索的精准度,对DB的依赖,开始引入全文索引、NoSQL。NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。使用NoSQL和搜索引擎优点:降低DB依赖;缺点:单点问题,谈不上高可用;技术点:NoSQL、搜索引擎、分布式;到目前为止,一个能够承载日均百万级访问量的中型网站架构基本介绍完了。如何保证高可用在做扩展满足了基本的性能需求后,我们会逐渐关注“可用性”(也就是我们通常听别人吹牛时说的SLA、几个9)。如何保证真正“高可用”,也是个难题。对关键应用/服务,做集群冗余负载,这也是保证高可用比较常用的手段:文件系统、数据库系统集群;静态内容服务器集群;CDN服务器集群;反向代理服务器集群;负载均衡调度器集群;分布式NoSQL服务器集群;搜索引擎服务器集群;分布式缓存服务器集群;分布式Session服务器集群;使用集群冗余负载保证高可用优点:集群负载,保证高可用;缺点:数据一致性、数据有状态问题;技术点:负载调度器、集群方案;截止目前为止,都没有怎么去改动应用程序的架构,或者说通俗点,都不怎么需要大面积的修改代码。如果上面那些手段都用光了,还是支撑不住怎么办?不停的加机器也不是办法啊?应用垂直拆分随着业务越来越复杂,网站的功能越来越多,虽然部署层面是采用的集群,但是应用程序架构层面还是“集中式”的,这样会导致很多耦合,不便于开发、维护,而且容易“一荣俱损”。所以,通常会把网站拆分出不同的子站点来单独宿主。通过分而治之的手段将整个网站业务分成不同的产品线,如首页、商铺、订单、卖家、买家等拆分成不同的产品线,分归不同的业务团队负责。各个应用之间可以通过建立一个超链接建立关系,也可以通过消息队列进行数据分发。应用垂直拆分(分压,解耦)优点:降低耦合、分压;缺点:应用架构复杂;技术点:业务抽取拆分;业务垂直分库应用都拆了,由于单个数据库的连接,QPS,TPS,I/O处理能力都非常有限,DB层面也可以去做垂直分库操作。业务垂直分库分压解耦优点:降低DB耦合、分压DB;缺点:数据访问模块复杂;技术点:业务抽取拆分;分布式服务化拆分应用和DB之后,其实还是会有很多问题。不同的站点,里面可能会有相同逻辑和功能的代码。当然,对于一些基础的功能我们可以封装DLL或者Jar包去到处提供引用,但是这种强依赖也很容易造成一些问题(版本问题、依赖关系等处理起来非常麻烦)。既然每一个应用系统都需要执行许多相通的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。这样,传说中的SOA的价值就得到体现了。分布式服务化(解耦,去重复)优点:服务统一管理,提供重用度;缺点:应用架构更复杂;技术点:业务抽取拆分、服务化技术方案;消息队列应用、服务之间还是会出现一些依赖问题,这时候,高吞吐量的解耦利器出现了。消息队列(服务间异步解耦高吞吐量)优点:提高吞吐量、应用、服务之间解耦;缺点:存在消息消费延迟问题;技术点:消息队列技术方案;分库分表*后,再介绍一个大型互联网公司都用的绝技–分库分表。个人经验,不是业务发展和各方面非常迫切,不要轻易走这一步。因为分库分表谁都会干,关键是拆完之后怎么办。目前,市面上还没有完全开源免费的方案,能让你一劳永逸地解决数据库拆分问题。分库分表:横向拆分;纵向拆分;分布式数据库访问层;数据库中间件(代理);网站架构总结上面讲述了在网站业务发展的不同阶段,会面临不同的问题,针对不同的问题,会选择不同的架构。大型网站架构就是在不同阶段时解决不同问题的过程中慢慢演进来的。*后几句话,送给有缘的你:一切以解决业务目标为首要任务;没有以业务为目标的任何架构、技术,都是毫无意义的耍流氓;再牛逼的架构、再牛逼的技术,不能够解决业务的问题,你也只能算是会架构、会技术的工匠,而不能算是真正意义上的架构师;业务成就了技术,平台成就了人,事业成就了人,而不是相反;
-
一分钟带你了解网站架构分析的重要性
什么是网站架构分析?对SEO有什么影响呢?今天一品威客网小编就来为您分析一下!主要包括剔除网站架构设计中不符合人性化设计的部分、实现目录结构的简洁清晰、网站导航的创意性独特,突出性明显和外部链接的优质广泛等内容,这个分析过程中需要进行市场调研,了解用户的需要和偏好,据此对自家网站进行相关优化处理工作,不仅有利于网站结构的整理,还有利于SEO优化。这也是SEO优化的基本操作了,将网站的基本信息进行优化处理,保证用户对于网站能够在浏览之后有一定的了解和熟悉。需要注意的地方是,网站的目录最好有一定的逻辑性,如果有各自的页数,还要保证目录的每一项能够内部链接到每一个小标题;页面的字体大小要合适,不能因为过小而失去一大批视力不好的消费者,也不能因为过大没有多少信息而失去有强迫症或者发散能力不强的用户等。
-
以电商平台案例为主,精巧分析电商网站APP架构
现在很多企业都意识到了移动端APP网站开发的优势和作用。在开发移动电商平台时,我们如何做好电商网站架构呢?这里杭州蒙特以电商APP网站建设架构为例,具体分析如下:以电商平台案例为主,精巧分析电商网站APP架构第一、电商APP网站应用前端互联网WEB-手机终端APP-短信第二、电商APP网站展示层商品展示-电子订单-客户管理-商品发布-销售分析-库存管理-供应商管理第三、电商APP网站服务层手机APP-电商互联网前台-电商管理员后台第四、电商APP网站应用集成层适配器-消息-接口-数据信息第五、电商APP网站数据资源层交换数据库-商品数据库-订单数据库-用户数据库电子商务网站APP开发功能:第一、电商APP网站商品展示分类专区-营销促销-商品详情-购买-分享-收藏第二、电商APP网站商品搜索分类搜索-语音搜索-排行搜索-关键字-热门标签第三、电商APP网站购买支付购物车管理-手机支付-物流跟踪第四、电商APP网站个人中心账户管理-订单管理-积分/优惠劵第五、电商APP网站辅助功能登录/注册-帮助中心-更新升级-关于我们第六、电商APP网站创意功能摇优惠-卡男搭王电商网站APP开发常规架构如上所述,与同行业相比杭州蒙特网站建设个性化电商网站APP开发解决方案为不同品牌无忧服务,每一个架构都与众不同,有品牌理念,有个性定制,有企业文化,有营销卖点...下一个成功的会是你?
-
天天打游戏,网游开发收入咋缴税你造吗?
网络游戏又称在线游戏。根据中国音数协游戏工委发布的《2014中国游戏产业报告》,2014年中国游戏产业规模达到1144.8亿元,用户数量达到5.17亿人,其中网游收入占到99.9%以上。然而,与市场的蓬勃发展相比,税务机关对网游产业的认识以及政策制定明显落后。“营改增”后,网游企业在适用政策中出现了明显的偏差。网游产业的特殊盈利模式网游产业链由网游开发商、网游运营商、游戏玩家及其他利益相关者共同构成。目前除了少数产业龙头企业自主运营外,大部分网游开发商都选择授权他人运营的模式。授权运营模式下存在三种盈利模式。一是直接买断模式,即由运营商一次性买断游戏的使用权,游戏开发商取得一笔一次性收入。二是共同运营模式,即游戏开发商与运营商联合运营共担风险。开发商根据游戏经营情况和运营商按比例取得分成收入。三是固定收入和运营分成相结合的模式,即游戏开发商授权运营商运营时,首先取得一笔固定收入,同时根据运营情况取得分成收入。运营商的盈利通常来源于点卡销售(销售游戏的在线时间)、网络广告及周边销售(销售游戏道具、游戏衍生产品等)。自2014年6月1日起,电信业纳入“营改增”范围,运营商从用户处取得的游戏点卡收入按照“电信增值业务”缴纳增值税,税率为6%。自2013年8月1日起,部分现代服务业“营改增”在全国推行。根据《财政部、国家税务总局关于将铁路运输和邮政业纳入营业税改征增值税试点的通知》(财税〔2013〕106号)来理解,网游开发商从运营商处取得的收入,如果属于转让游戏版权,按照文化创意服务中的“商标和著作权转让服务”缴纳增值税;如果属于运营收入分成,按照信息技术服务中的“软件服务”缴纳增值税。如果网游开发商仅向运营商转让游戏使用权,按照“销售自产软件产品”缴纳增值税。目前在征管实践中,主要是转让游戏使用权和运营收入分成的纳税存在争议。政策理解差异导致税负差异网游开发商向运营商转让网游使用权,取得收入的性质界定不一,各地的政策执行标准不一。从本质而言,网游必须依靠终端软件运行,属于特殊的软件产品。因此,有的税务人员认为开发商转让网游使用权这一行为符合《国家税务总局关于软件产品增值税政策的通知》(财税〔2011〕100号)有关“销售自产软件产品”的规定,按照17%缴纳增值税后,可以就实际税负超过3%的部分申请即征即退优惠。目前仅有广东省明确“软件企业将自行开发的游戏软件提供给网络运营商使用,不转让著作权,取得的收入应当按照适用税率征收增值税”。而有的网游开发商将该笔费用按照“营改增”信息技术服务中的“软件服务”开票并缴纳增值税,适用6%税率。网游开发商与运营商之间运营收入分成的性质界定不一。虽然运营商来自用户的收入有多种形式,但是在涉及运营商与开发商收入分成时,有的税务人员认为网游开发商分成收入全部属于销售收入,按照17%征收增值税,有的税务人员认为分成收入属于“营改增”信息技术服务中的“软件服务”收入,适用6%税率。由于各地政策不一,导致不同地区网游企业增值税税负差距明显。增强政策的系统性和稳定性截至目前,我国尚未出台专门针对网游产业的税收规范及优惠政策。现有的网游产业政策依据,散乱在各类税收单行法规或税收文件中,政策缺乏系统性和长期稳定性,这也是导致网游产业税负差距的根源。建议根据国内网游产业发展现实,结合国际先进经验,制定专门针对网游产业的税收法规,保证政策实施的必要措施和基本形式,通过规范产业政策和有效激励,促进网游产业的健康成长。明确转让网游使用权取得固定收入的性质及征收方式。笔者认为,对于授权模式下的第一种盈利模式以及第三种盈利模式下取得的固定收入,可适用财税〔2011〕100号文件,即销售自产软件产品,享受实际税负超过3%即征即退的优惠政策。从各国近年来的政策导向看,包括英国、美国和韩国在内的诸多游戏产业大国,都降低了网游产业的行业税收。因此,建议国家通过专项法规,明确“转让网游使用权”适用财税〔2011〕100号文件。明确取得运营分成收入的性质及征收方式。收入分成作为一项来自于游戏运营的收入,网游开发企业在游戏运营的过程中主要提供技术支持和后续开发,因此笔者认为其并不符合软件产品销售的特征,而应当适用“营改增”信息技术服务业中的“软件服务”税目,适用6%税率。在实际操作中,笔者发现部分网游开发商和运营商之间约定不收取“软件使用费”,开发商完全按照网游运营结果,取得单一性分成收入即授权模式下的第二种盈利模式。对于上述情况,笔者认为虽然开发商取得收入中,有一部分属于“使用权”转让性质收入,但是由于不同性质收入无法区分,在降低税收征管风险的前提下可统一按照“软件服务”确认收入,适用6%税率。
-
网游发展方向在哪儿?人民日报指了条明路 | 观点
必须承认,相比起其他的游戏类型,网络游戏对于中国数量庞大的玩家来说可能有着更深层次的影响。因为毕竟在长达十余年的主机封禁期当中,正是这些游戏填补着玩家心中有关“Game”的空白,在网络上为人们提供了一个个交流的平台。如今,面对曾经的玩家走上工作岗位,新进的用户有着更多选择的局面,已经赚得个盆满钵满的网络游戏也迎来了一个转变的新时期,只不过这一次或许方向要比速度更加重要。网游发展方向在哪儿?人民日报指了条明路|观点功成名就!继续发展需要新动力在讨论网络游戏究竟该在这条分岔路口向哪个方向前进之前,不妨让我们先来看看它所取得的优异成绩。讨论一下如今中国的网络游戏产业究竟有多壮大。或许一长串数字就足以说明所有的问题。仅在刚刚过去的2016年当中,中国网络游戏市场的销售收入就已经达到了1633.6亿元,同比增长22.8%,而游戏用户人数更是高达5.34亿人。除了在国内取得不错的成绩之外,中国自主研发的网络游戏海外销售收入达73.2亿美元。端游方面的持续输出火力,外加如今势头越来越猛的移动端网络游戏,不难看出,如今中国的网游在经济体量、玩家数量等方面,已经实现了对电影产业的超越,成为了难以忽视的存在。但是这种眼前的成功,绝对不能成为掉以轻心的理由,因为虽然眼下的形势一片大好,但事实上,国内主机市场的逐步解放以及各路单机精品游戏网络化(推出在线服务项目)还是可能在未来对于网络游戏造成一定的影响。因此与其在今后的日子当中刚正面,不如从现在开始就寻求新的发展方向,将这种成功的势头延续下去,或许才是各大网游运营商所继续思考的问题。文化当道!人民日报这建议可行就在大家都在苦寻方向的时候,近日《人民日报》一篇关于“网络游戏与文化产业”的文章点醒了不少人,在文章当中,人民日报以经典的MMORPG网游《魔兽世界》作为例子,通过其在知识类网站上设置一系列相关词条,构建完成的游戏世界观来说明当一款网络游戏发展到一定程度之后,相关的文化产业就成了其下一个需要发展的方向。为什么说文化是接下来发展的方向呢?因为但从游戏本身来说,一旦这种庞大而深邃的剧情体系建成,那么又将会从影视、动漫等多个方面反哺游戏本身,并且在这种不断拓宽产业链的过程当中逐渐减少文化传播的障碍。而就目前的情况看,中国虽然有着灿烂的文化历史,但目前国产网络游戏当中,还没有能够在世界观上下好功夫的作品。尽管我国网络游戏在过去十几年里取得了长足的进展,在我国现有文化产业格局中也可能是最先有机会跳脱出模仿阶段的领域,但其面临着结构单一、原创匮乏的瓶颈,并且缺乏完整的世界观等这种对于原创而言的核心要素。因此想要制造出一款真正“完整”的游戏,目前还需要一定的时间。更重要的是,世界观的设置关系到社会文化生态的构建。按照既往观念,文化建设也许跟文学、电影、电视关系更为密切,很难和网络游戏产生关联。然而实际情况远远超过我们的预计。比如,不少游戏的故事场景设置在古代,其中对历史和传统文化的传达,会在短时间内给沉浸其中的青少年带来潜移默化的熏染,在动辄几千万甚至上亿玩家面前,其影响绝不亚于学校教育。其实,不仅是网络游戏,各种依托于新兴媒介的网络文艺乃至传统形态文艺,如果在内容原创上不解决好文化常识、世界观、价值观的准确表达和有效传播等关键问题,那么其商业上的成功就难以有效地转化为文化意义上的成功。轻车快马?但也要做到脚踏实地有了文化产业这个前进的大方向,那么是不是就意味着我们可以朝着这个目标快马加鞭的前进了呢?其实也不然,因为实际上如果一款网络游戏特别是我们国家游戏厂商爱用的历史题材游戏,真正转向文化的时候,它所面临的困难或者索要遵循的原则反而更多。这其中最为基本,也最为重要的一个原则就是一定要做到脚踏实地,做到真正尊重历史。这让笔者想到了前不久人气手机网游《王者荣耀》中因为将荆轲的形象和背景设计成女性角色而产生了极大的争议,甚至连《青年报》、《人民日报》等多家媒体都发文直接批评,产生了不太好的社会影响。虽然面对如此大规模的声讨,网络上也出现了“我们是否对于一款游戏用力过猛”这样的论调,但归根结底,它之所以会引起如此大的社会争论,其根本原因就是没有为本土的网络游戏制定符合中国文化背景以及当代社会认知的世界观的清晰构建。可见虽然文化方向是大势所趋,但在具体的操作过程当中,稍有不慎就有可能成为社会各界集火的对象,因此分寸的把握才显得至关重要。写在最后:网络游戏在经济体量庞大的今天,选择文化作为下一个发展、延续的方向,这正是一种全新思路的体现,而如何全面、有效、充分地传播文化能量,将经济上的成功真正转化为文化上的软实力,的确还需要进行进一步的探索,不过可以肯定的是,一旦这种思路得以贯彻,并且有了成熟的产品推出,那它绝对将成为一件功在当代、利在千秋的大好事。