影响搜索引擎友好的技术问题(搜索引擎不好使)

前沿拓展:

影响搜索引擎友好的技术问题

想要设计出对搜索引擎友好的网站,需要注意以下几点:

1、优化网站结构

确保网站有一个良好的逻辑结构。不管对于什么网站的结构设计,都要遵循这个原则:3次点击可以达到网站任何页面。

与此同时,你需要确保URL结构标准化:静态与伪静态,避免采用动态参数,产生过多的重复页面,与死链接,有必要的情况下,可以利用robots.txt文件,去屏蔽相关内容。

2、提高访问速度,保证空间稳定

任何排名的前提都是网站被收录,而被收录的基础是网站可以更好的被抓取与爬行。其中站点的加载速度尤为关键,如果搜索引擎长时间不能抓取页面,它就会降低抓取频次,特别是服务器不稳定的时候,严重影响蜘蛛到访与关键词排名的稳定性。

为了提高访问速度,提高网站稳定性,需要做到以下几点:

选择知名主机商的主机,确保地理位置与目标用户匹配,具有完好的技术支持和线路。

压缩图片、CSS、JS这些文件,减少页面体积。

提高网络传输速度。

3、利用插件做站内优化

目前市面上有很多程序,对搜索引擎并不是非常友好,由于设置不合理,往往导致标题冗余,不符合SEO标准,通常我们建议内容页面的标题形式是:文章名称_站点名称。

而站内自动锚文本,构建了网站内部蜘蛛爬行与抓取的路径,适当增加锚文本,有利于提高页面关键词排名。

4、撰写优质内容

内容为王,这是毋庸置疑的策略,新鲜有独特视角的内容,往往促使更多的访问者回访,搜索引擎一直以来喜欢独特有个性的内容。

它不但会让你获取源源不断的外部链接,同时它会吸引百度蜘蛛,频繁来访,保持页面活性,提高搜索引擎友好度。

5、避免采用对搜索引擎不友好的设计

主要包括以下几点:

① Flash站点

利用Flash建站,是SEO优化的大忌,虽然百度在不断尝试解读这类站点,但在实际解析中,仍然存在一定的挑战。

② 过度优化

利用站内可控的锚文本,大量增加某一特定关键词的内链数量,甚至一些作弊网站,完全依靠堆积海量内链进行排名,这些策略都是过度优化的表现,不被提倡。

③ 垃圾外链

对于任何一个新站上线,不要急于建立一些,垃圾外链,低质量的链接,比如:一些权重不高的网站目录、站群形式的新闻外链、不相关的论坛外链等。

④Robots.txt设置

这是一个至关重要而经常被忽视的内容,设置不当,往往导致整站不被抓取,所以当你上传这个文件的时候,一定要反复验证规则。


2005 年,Dr. Peter Rodgers 在 Web Services Edge 大会上提出了“Micro-Web-Services”的概念。2011 年,一个软件架构工作组使用了“Microservice”一词来描述一种架构模式。2012 年:同样是这个架构工作组,正式确定用“Microservice”来代表这种架构。2012 年:ThoughtWorks 的 James Lewis 针对微服务概念在 QCon San Francisco 2012 发表了演讲。2014 年:James Lewis 和 Martin Fowler 合写了关于微服务的一篇学术性的文章,详细阐述了微服务。推动了微服务的发展。

一、微服务概念

通过整体式架构,所有进程紧密耦合,并可作为单项服务运行。这意味着,如果应用程序的一个进程遇到需求峰值,则必须扩展整个架构。随着代码库的增长,添加或改进整体式应用程序的功能变得更加复杂。这种复杂性限制了试验的可行性,并使实施新概念变得困难。整体式架构增加了应用程序可用性的风险,因为许多依赖且紧密耦合的进程会扩大单个进程故障的影响。

使用微服务架构,将应用程序构建为独立的组件,并将每个应用程序进程作为一项服务运行。这些服务使用轻量级 API 通过明确定义的接口进行通信。这些服务是围绕业务功能构建的,每项服务执行一项功能。由于它们是独立运行的,因此可以针对各项服务进行更新、部署和扩展,以满足对应用程序特定功能的需求。

微服务的四大设计原则和实践

二、微服务的特性

自主性:可以对微服务架构中的每个组件服务进行开发、部署、运营和扩展,而不影响其他服务的功能。这些服务不需要与其他服务共享任何代码或实施。各个组件之间的任何通信都是通过明确定义的 API 进行的。

专用性:每项服务都是针对一组功能而设计的,并专注于解决特定的问题。如果开发人员逐渐将更多代码增加到一项服务中并且这项服务变得复杂,那么可以将其拆分成多项更小的服务。

三、微服务的优势

敏捷性:微服务促进若干小型独立团队形成一个组织,这些团队负责自己的服务。各团队在小型且易于理解的环境中行事,并且可以更独立、更快速地工作。这缩短了开发周期时间。您可以从组织的总吞吐量中显著获益。

灵活扩展:通过微服务,您可以独立扩展各项服务以满足其支持的应用程序功能的需求。这使团队能够适当调整基础设施需求,准确衡量功能成本,并在服务需求激增时保持可用性。

轻松部署:微服务支持持续集成和持续交付,可以轻松尝试新想法,并可以在无法正常运行时回滚。由于故障成本较低,因此可以大胆试验,更轻松地更新代码,并缩短新功能的上市时间。

技术自由:微服务架构不遵循“一刀切”的方法。团队可以自由选择最佳工具来解决他们的具体问题。因此,构建微服务的团队可以为每项作业选择最佳工具。

可重复使用的代码:将软件划分为小型且明确定义的模块,让团队可以将功能用于多种目的。专为某项功能编写的服务可以用作另一项功能的构建块。这样应用程序就可以自行引导,因为开发人员可以创建新功能,而无需从头开始编写代码。

弹性:服务独立性增加了应用程序应对故障的弹性。在整体式架构中,如果一个组件出现故障,可能导致整个应用程序无法运行。通过微服务,应用程序可以通过降低功能而不导致整个应用程序崩溃来处理总体服务故障。

四、微服务四大设计原则之基于AKF的拆分原则

业界对于可扩展的系统架构设计有一个朴素的理念,就是通过加机器就可以解决容量和可用性问题。这一理念在“云计算”概念疯狂流行的今天,得到了广泛的认可。对于一个规模迅速增长的系统而言,容量和性能问题当然是首当其冲的。但是随着时间的向前,系统规模的增长,除了面对性能与容量的问题外,还需要面对功能与模块数量上的增长带来的系统复杂性问题以及业务的变化带来的提供差异化服务问题。

而许多系统,在架构设计时并未充分考虑到这些问题,导致系统的重构成为常态,从而影响业务交付能力,还浪费人力财力!对此,《可扩展的艺术》一书提出了一个更加系统的可扩展模型—— AKF 可扩展立方(Scalability Cube)。这个立方体中沿着三个坐标轴设置分别为:X、Y、Z。如下图所示:

微服务的四大设计原则和实践

1、Y轴(功能或业务)

Y 轴扩展会将庞大的整体应用拆分为多个服务。每个服务实现一组相关的功能,如订单管理、客户管理等。在工程上常见的方案是服务化架构(SOA) 。比如对于一个电子商务平台,我们可以拆分成不同的服务,组成下面这样的架构:

微服务的四大设计原则和实践

但通过观察上图容易发现,当服务数量增多时,服务调用关系变得复杂。为系统添加一个新功能,要调用的服务数也变得不可控,由此引发了服务管理上的混乱。所以,一般情况下,需要采用服务注册的机制形成服务网关来进行服务治理。系统的架构将变成下图所示:

微服务的四大设计原则和实践

2、X轴(水平扩展)

X 轴扩展与我们前面朴素理念是一致的,通过绝对平等地复制服务与数据,以解决容量和可用性的问题。其实就是将微服务运行多个实例,做集群加负载均衡的模式。为了提升单个服务的可用性和容量, 对每一个服务进行X 轴扩展划分,如下图所示:

微服务的四大设计原则和实践

3、Z轴(数据分区)

Z 轴扩展通常是指基于请求者或用户独特的需求,进行系统划分,并使得划分出来的子系统是相互隔离但又是完整的。以生产汽车的工厂来举例:福特公司为了发展在中国的业务,或者利用中国的廉价劳动力,在中国建立一个完整的子工厂,与美国工厂一样,负责完整的汽车生产。这就是一种Z 轴扩展。

工程领域常见的Z 轴扩展有以下两种方案:单元化架构和数据分区。

3.1 单元化架构

在分布式服务设计领域,一个单元(Cell)就是满足某个分区所有业务操作的自包含闭环。如上面我们说到的Y 轴扩展的SOA 架构,客户端对服务端节点的选择一般是随机的,但是,如果在此加上Z 轴扩展,那服务节点的选择将不再是随机的了,而是每个单元自成一体。如下图:

微服务的四大设计原则和实践

3.2 数据分区

为了性能和数据安全上的考虑,我们将一个完整的数据集按一定的维度划分出不同的子集。一个分区(Shard),就是整体数据集的一个子集。比如用尾号来划分用户,那同样尾号的那部分用户就可以认为是一个分区。数据分区为一般包括以下几种数据划分的方式:

数据类型,如业务类型等;

数据范围,如时间段、用户ID等;

数据热度,如用户活跃度、商品热度等;

按数据读写分,如商品描述,商品库存等;

五、微服务四大设计原则之前后端分离原则

何为前后端分离?就是前端和后端独立部署,有专人负责前端和后端开发,也就是说专业的事交给专业的人来做。

分工精细化从来都是蛋糕做大的原则,多个领域工程师最好在不需要接触其他领域知识的情况下合作,才可能使效率越来越高,维护也会变得简单。例如jsp的模板技术融合了html 和java 代码,使得传统MVC 开发中的前后端在这里如胶似漆,前端做好页面,后端转成模板,发现问题再找前端,前端又看不懂java 代码......前后端分离的目的就是将这尴尬局面打破。前后端分离原则,简单来讲就是前端和后端的代码分离,我们推荐的模式是最好采用物理分离的方式部署,进一步促使更彻底的分离。如果继续直接使用服务端模板技术,如:jsp,把java、js、html、css 都堆到一个页面里,稍微复杂一点的页面就无法维护了。

微服务的四大设计原则和实践

微服务的四大设计原则和实践

这种分离方式有几个好处:

前后端技术分离,可以由各自的专家来对各自的领域进行优化,这样前端的用户体验优化效果更好;

分离模式下,前后端交互界面更清晰,就剩下了接口模型,后端的接口简洁明了,更容易维护;

前端多渠道集成场景更容易实现,后端服务无需变更,采用统一的数据和模型,可以支持多个前端,例如:微信h5 前端、PC 前端、安卓前端、IOS 前端。

六、微服务四大设计原则之无状态服务设计原则

微服务的四大设计原则和实践

对于无状态服务,首先说一下什么是状态:如果一个数据需要被多个服务共享,才能完成一笔交易,那么这个数据被称为状态。进而依赖这个“状态”数据的服务被称为有状态服务,反之称为无状态服务。那么这个无状态服务原则并不是说在微服务架构里就不允许存在状态,表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据也就相应的迁移到对应的“有状态数据服务”中。

场景说明:

例如我们以前在本地内存中建立的数据缓存、Session 缓存,到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储,让业务服务变成一个无状态的计算节点。迁移后,就可以做到按需动态伸缩,微服务应用在运行时动态增删节点,就不再需要考虑缓存数据如何同步的问题。

七、微服务四大设计原则之RESTful风格的通信原则

微服务的四大设计原则和实践

作为一个原则来讲本来应该是个“无状态通信原则”,在这里我们直接推荐一个实践优选的Restful 通信风格,因为他有很多好处:

无状态协议HTTP,具备先天优势,扩展能力很强。例如需要安全加密,有现成的成熟方案HTTPS 即可;

JSON报文序列化,轻量简单,人与机器均可读,学习成本低,搜索引擎友好;

语言无关,各大热门语言都提供成熟的Restful API 框架,相对其他的一些RPC 框架生态更完善。

综上所述,设计微服务有多种设计原则,至于选择哪一种,需要根据业务情况、团队情况、公司环境因素等来进行抉择,选择适合的能满足当前业务的方案即可。

拓展知识: