2021-01-12 10:00:42 阅读(270)
学习和掌握构建大型网站的结构,需要总结分散的文章,整理分散的内容。做好这项工作很有意义,但也很难。我们的经验是,我们不妨把握以下主题,逐一分析大型网站的实例,然后横向比较。1.Database数据存储一直很麻烦,特别是当需要存储大量数据时,单个数据库的容量往往不够,甚至一个数据库集群也不够。常见的解决方案是分割,例如根据用户ID将海量数据分割成若干块,每一块都存储在一个独立的数据库中。但是分割的做法降低了join操作的效率。GoogleBigtable的效率如何?什么是好处,什么是缺陷?什么样的场景最适合Bigtable?基于Bigtable原理实现的开源软件,Hadoop/HBase的运行效率如何?2.Cache用户访问网站时,通常比写作更频繁地阅读操作。为了提高阅读操作,不妨将相关内容缓存到内存中,减少DiskIO的消耗。Memcached最近很热,Wikipedia,YouTube,Digg,Twitter等大型网站都使用Memcached作为缓存工具。SquidCache、Varnish等工具也与缓存有关。Twitter的做法是将Memcached和Varnish结合起来,同时使用。什么样的内容,应该使用什么样的缓存工具?如何协调不同工具之间的协调?各大网站实际运营的经验教训是什么?3.Filesystem既不需要存储在数据库中,也不适合存储在缓存中,如log和images。在这种情况下,我们需要文件系统。当文件系统中需要存储大量内容时,我们需要使用分布式文件系统。GoogleFilesystem适用于什么样的场景,不适用于什么样的场景?分布式文件系统往往需要相应的锁定机制,以确保并发读写操作不会相互干扰。Chubby有什么好处?在什么情况下不适用?据说MogileFS更适合存储大量但单体尺寸较小的文件,如images。GoogleFilesystem更适合存储大尺寸但数量少的文件。是否有可能将小尺寸的多个文件合并成大文件,然后存储在谷歌Filesystem中。在这种情况下,MogileFS和GogleFS的性能有什么区别吗?4.一套ThreadManagement工序通常由多个任务组成。多线程的方法是一个线程完全负责整个过程的操作。另一种方法是将过程切割成几段,每段由一条或几条线程负责,称为工作台。多线程的方法很常见。但工作台的做法有利于集中计算资源处理繁重任务,避免瓶颈。但缺陷是,记录中间状态的数据需要在不同的线程之间传输。什么样的情况适合多线程,什么时候使用工作台?5.Scheduler通常在同一个网站上提供多种服务,不同的服务需要调用不同的业务逻辑。在同一台服务器上可以完成一些业务逻辑,但当业务逻辑复杂时,需要调用多台服务器进行合作。不同服务的受众对象不同,流量不同,流量不同,服务流量不同,需要动态分配计算资源。这是scheduler的工作。当Scheduler将工作分配给不同的服务器时,最简单的方法是启动预先安装在服务器上的相关程序。因为不能保证每个程序都是完美的,所以当一个程序出现错误时,应该避免整个服务器崩溃,影响其他工作的正常进行。是否需要使用virtualmachine来实现不同工作之间的隔离?6.Signalflowdataflow大型网站的后台系统往往由许多服务器组成,数据交换不时发生在服务器和服务器之间。例如,在WebServer分析用户请求后,请求转发给应用程序Server。在完成部分工作后,该应用程序Server将中间数据转发给下一个应用程序Server。而且第二个AppServer完成任务后,整个工作就结束了,结果应该还给WebServer。问题是如何让第一个Appserver知道中间结果应该给第二个Appserver,而第二个Appserver如何知道其目的地是webserver?一种更有效的方法是区分数据流和控制流。Server和Server之间的常设通道,专门用于控制流,并传递控制数据流发送的指令。数据流不占用控制流通道,只有在需要时才能建立数据流通道。为了优化设计,减少带宽消耗,缩短数据传输时间,需要结合具体的业务逻辑来控制流和数据流的组织。7.Instrumentation网站后台的各个部分是否正常运行,瓶颈在哪里,空闲在哪里。这些都需要实时监控。既能及时避免整个后台系统的崩溃,又能分析各部分的运行规律,从而找到优化系统的途径。问题是,为了减少对系统程序的干扰,同时提供有价值的信息,应该选择什么样的监控工具?8.Anti-abuse通常面对各种各样的用户,绝大多数用户都很友好,但不排除少数用户故意恶作剧。若事先没有设计预防措施,少数恶意用户的胡作非为,会干扰其他用户享受正常服务。问题是,如何及时预防和制止恶意行为的发生?9.ExceptionHandling,无论预设有多仔细,在实际操作中都会遇到这样那样的事故。比如敏感词的出现,往往事先没有征兆。因此,在设计系统架构时,应为网络管理提供必要的工具,以应对突发事件。
以上就是关于学习和掌握构建大型网站的架构,抓住以下几个主题的相关介绍,更多学习和掌握构建大型网站的架构,抓住以下几个主题相关内容可以咨询我们或者浏览页面上的推荐内容。我们将让你对学习和掌握构建大型网站的架构,抓住以下几个主题有更深的了解和认识。
推荐阅读
最新文章
猜你喜欢以下内容:
一 客户顾问-张三 一