![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构
文章平均质量分 84
yjcyyl062c
这个作者很懒,什么都没留下…
展开
-
Redis架构
REDIS是一个开源的、先进的键值存储系统。它通常可以被用作数据结构服务器,因为它的键可以包含字符串(string)、哈希值(hash)、列表(list)、集合(set)以及有序集合(sortedset)。而且Redis使用的是内存数据集合。根据你自身的使用情况,你可以定时将这些内存中的数据保存至磁盘中,或者将每个命令都添加至日志中。你可以通过redis的项目主页了解它的更多功能。Redis最...2014-12-28 19:31:51 · 258 阅读 · 0 评论 -
理解水平扩展和垂直扩展
当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展。选用哪种策略主要依赖于要解决的问题以及系统资源的限制。在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点。如果你已经有一个软件系统需要不断成长,那么你将有意或者无意中选择这两种策略中的一种。垂直扩展在垂直扩展模型中,想要增加系统负荷就意味着要在系统现有的部件上下工夫,即通过提高系统部件的能力来实现。例如,假设...2014-10-07 13:25:42 · 684 阅读 · 0 评论 -
理解水平扩展和垂直扩展
当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展。选用哪种策略主要依赖于要解决的问题 以及系统资源的限制。在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点。如果你已经有一个软件系统需要不断成长,那么你将有意或者无意中选择这两 种策略中的一种。垂直扩展在垂直扩展模型中,想要增加系统负荷就意味着要在系统现有的部件上下工夫,即通过提高系统部件的能力来实现。例如,...2014-10-10 10:26:29 · 1234 阅读 · 0 评论 -
CDN详解(篇一)
CDN是一个致力于使内容传输更快、更高效的针对web服务器的全局分布式网络。通过CDN来复制使这些内容可以在很多地方同时存在。比较有名的CDN厂商有AKamari,Amazon Cloudfont以及Edgecast。为什么CDN会存在?最根本的原因...获得更好的用户体验。而且第二层好处是可以使网...2014-10-10 10:35:19 · 481 阅读 · 0 评论 -
CDN详解(篇二)
还有另一个问题就是所有的内容都放在同一个地方。如果我们的服务器在芝加哥,那么美国中西部的人们访问服务器的响应时间和用户体验就比香港、德国、南非以及佛罗里达州的用户好。因为那些用户离服务器的物理距离更远,根据物理定律来看,这些用户获取内容显然需要更长时间。这加大了请求的数量,而且其中大部分请求为静态内容或者是占用大量带宽的文件的请求。单个字节的数据以服务器为原点传输到终...原创 2014-10-11 09:31:43 · 232 阅读 · 0 评论 -
CDN架构设计及注意事项
内容传输网络或内容分发网络(CDN)是一个包含数据副本的缓存系统,存在于网络中不同的节点以便可以最大化的利用网络来传输数据至客户端。一个客户端访问离它最近节点的数据副本,而不是所有的客户端访问相同的中心服务器,因此避免了服务器瓶颈问题。CDN所缓存的内容类型包括web对象、可下载的对象(媒体文件、软件、文档)、应用程序和实时媒体流。从最高层面来看,所有的CDN看起来都相似,都拥有一个类似于图(...2014-10-13 21:00:24 · 309 阅读 · 0 评论 -
网速慢?这可不仅仅是带宽问题!
从服务质量角度来看,如果不考虑其他因素,那么家庭网络服务很大程度上取决于带宽。虽然带宽对于web内容用户来说非常重要,但是它并不是仅有的重要指标。众所周知,市面上所卖的高带宽连接并不是真正意义上的传输速度,它们不过是最大网速,只是一个卖点而已。直接说就是:不要期望能达到广告中的速度。让我们来看一个东西...TCP或者叫传输控制协议,是你的浏览器连接一个网站时所使用的网络协议,而且是数据如何...2014-10-14 21:29:20 · 247 阅读 · 0 评论 -
分布式还是混合式? 谈CDN架构对服务质量的影响
传统分布式模型通 常,内容分发网络(CDN)采用分布式模型。在这种模型里, 用户的文件存放在一个源服务器上,并且由大量边缘服务器负责分发这些文件。这些边缘服务器的磁盘空间比较小,所以大多数的文件被放在内存中。因此,当一个 文件传输至终端用户之前,如果该文件在边缘的CDN缓存服务器上不存在,那么这些服务器会先去原始服务器请求该文件或流。这种分布式模型起 源于20世纪末,也就...2014-10-18 22:31:53 · 289 阅读 · 0 评论 -
【重磅】移动网络性能揭秘(上)--移动网络组件详解
简介在过去的几年里我们在移动蜂窝网络性能方面取得了重大进展。但是由于网络延迟的膨胀导致许多应用并没有得到改善。延迟问题长期以来一直制约着移动网络。尽管近年来已取得一些进展,但减少网络延迟没有跟上延迟的增长速度。正是由于这种不对等导致了延迟,而不是吞吐量,成为影响网络性能的最大因素。这篇文章逻辑上主要包含两章。第一部分将讨论导致移动网络延迟的细节;第二部分介绍提高网络性能降低延迟的软...2014-10-25 01:34:50 · 397 阅读 · 0 评论 -
【重磅】移动网络性能揭秘(下)--网络协议及性能提升实践
网络协议的性能现在轮到我们实际上可以控制的东西了。网络处理的性能与延迟时间的增加是不成比例的。这是由于大多数网络协议的内在操作是双向信息交换。本章的其余部分则侧重于理解为什么会产生这些信息交换以及如何减少甚至消除它们交换的频率。 图3:网络协议 传输控制协议传输控制协议(TCP)是一种面向连接、基于ip的传输协议。TCP影响下的无差错双工通信信道对其他协议如HT...2014-10-25 12:27:56 · 156 阅读 · 0 评论 -
你设计的应用是IO依赖型还是CPU依赖型?
这个话题可能看起来很枯燥,但它对mysql的性能优化非常重要。事实上我在MYSQL 咨询工作中无时无刻接不在接触这类问题。IO工作负载与cpu依赖完全不同,尤其是当你的工作集(通常只有数据库的一小部分)载入内存的时候。当数据在内存中时读取是非常快的,如果不在内存中,则非常缓慢。例如,当你查询分析10000行数据时,如果这10000行全部加载在内存中,则只需要很短时间;但是如果到磁盘上去读的话...2014-11-02 09:52:23 · 172 阅读 · 0 评论 -
web安全:SQL注入
SQL注入是网站和web应用程序中最常见的安全漏洞。这种恶意技术有很多应用场景, 但(SQL注入)通常是指在数据输入的地方注入代码以利用数据库应用程序中的安全漏洞。 SQL注入在接收用户输入的接口处 (也就是说在注册表单、查询表单等地方)尝试执行注入操作。对(SQL注入)高度关注以及方便检测数据库应用程序中的安全漏洞使得攻击者经常地以最小的努力“测试”网站/应用程序的安全完整性。危害成...2014-11-02 09:54:30 · 209 阅读 · 0 评论 -
理解负载均衡
负载均衡是一个针对许多节点的分布式负载。在网络行业,它通常作为一个web前端而被用来平衡各个服务器的http流量。为了这篇文章,我们关注Zenus负载均衡器在http和https流量上的负载均衡。负载均衡器允许用户智能的分发流量到许多使用不同协议的多台服务器中的单个IP。这意味这负载处理可以被多个节点共享,而不是局限于在活动频繁时提高行单个服务器性能。这提高了你的web应用的可靠性,而且允许...2014-11-09 20:49:44 · 166 阅读 · 0 评论 -
负载均衡调度算法
负载主机可以提供很多种负载均衡方法,也就是我们常说的调度方法或算法:轮循(Round Robin)这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量以及负载形同的应用程序。如果所有的服务器有相同或者相近的性能那么选择这种方式会使服务器负载形同。基于这个前提,轮循调度是一个简单而有...2014-11-16 12:02:04 · 179 阅读 · 0 评论 -
Apache 多路复用模块(MPMs) - Prefork, Worker, Event
当整个世界都慢慢倾向于nginx的时候,如果你还在使用apache,那么你可能会用尽一切办法来保证速度。你也许会调整要加载的模块,使用Keepalive、摆弄内容协商模块(mod_negotiation,译注:从几个文档中选择一个最匹配客户端要求的文档)、FollowSymLinks指令(译注:允许在此目录中使用软链接)以及重写功能;你甚至可能还会投入更多硬件,并假装自己没...2014-12-01 13:19:09 · 135 阅读 · 0 评论 -
Nginx与HAProxy在web应用中的比较
这几天我对Nginx和HAProxy做了比较,得出了令人吃惊的结果。首先,介绍一些背景情况。在很长的一段时间里,我们在Bengler把Nginx作为我们项目的主要web服务器,就像在Mongrel下代理Rails运行一样。Nginx是一个非常好的小开源软件,它占用空间小、有合理的配置语言、功能先进而且速度快。然而,我们却很快发现nginx中代理的负载均衡特性却不尽如人意。这其中最核心的问...2014-12-07 21:56:08 · 571 阅读 · 0 评论 -
如何在ubuntu14.0下为WordPress应用服务器搭建四层负载均衡
介绍在本教程中,我们将教你如何使用HAProxy为你的WordPress服务器搭建第四层负载均衡--特别是web应用层。负载均衡web服务器要在设置中增加冗余,这会在碰到服务器失败、网络问题时增加服务的可靠性;同时将负载分摊在多个服务器上可以提交读操作的性能。我们假设你所配置中包括一个WordPress应用服务器去连接一台单独的MYSQL数据库服务器(假设你已经知道如何架设)。如果你只...原创 2014-12-15 10:10:12 · 371 阅读 · 0 评论 -
Spark是否会替代Hadoop?
我经常会从客户或者网上听到这个问题,尤其是最近几年。那么关于spark哪些被我们神化了,哪些又是真实的,以及它在“大数据”的生态系统中又是怎样的?说实话,其实我把这个问题作为标题是有问题的,但是我们经常会这样问。Hadoop并不是一个单独的产品而是一个生态系统,而spark也是一样的。下面让我们来一个一个解释。目前Hadoop生态系统主要包括:HDFS—Hadoop分布式文件系统...原创 2016-03-24 23:17:14 · 1535 阅读 · 1 评论 -
nginx介绍(四) 经验篇
5.经验学习当Igor Sysoev开始编写 nginx的时候,构建互联网的大多数软件已经存在,这些软件的体系结构通常 遵循 旧式服务器的定义、网络硬件、操作系统以及老互联网架构。然而,这并没有阻止 Igor 思考他或许能够在 web服务器领域做一些改善性的工作。因此,第一课似乎很明显:改进的空间总会是有的。自从头脑中有了更好的web软件的想法,Igor花费了很多时间开发nginx初始代...2014-10-05 15:01:00 · 119 阅读 · 0 评论 -
nginx介绍(三) 配置篇
3.nginx配置nginx配置系统受益于Igor Sysoev(nginx创始人)在Apache(阿帕奇软件基金会)的经历。Igor Sysoev洞察出可扩展的配置系统对于一个web服务器来说是必不可少的。当维持众多虚拟服务器、目录库、地址信息和数据集的大规模结构复杂的配置时,扩展中的主要问题便不期而遇。如果在应用端和系统工程师设计方面处理的不恰当,对于配置一个相对大的web服务器来说将会...2014-10-05 14:40:00 · 82 阅读 · 0 评论 -
nginx介绍(三) 配置篇
3. nginx配置nginx配置系统受益于Igor Sysoev(nginx创始人)在Apache(阿帕奇软件基金会)的经历。Igor Sysoev洞察出可扩展的配置系统对于一个web服务器来说是必不可少的。当维持众多虚拟服务器、目录库、地址信息和数据集的大规模结构复杂的配置时,扩展中的主要问题便不期而遇。如果在应用端和系统工程师设计方面处理的不恰当,对于配置一个相对大的web服...2014-10-05 13:09:54 · 124 阅读 · 0 评论 -
Memcache内部剖析
Memcache在 web社区中是一个非常著名的系统,而且有一个好的原因:它速度快、稳定、轻量级,而且如果你在网站服务器安装了memcache后它似乎会自动将网站访 问速度提升10倍。虽然这似乎有点不可思议,但是:定制一个好的缓存策略对网站或应用很有用。如果你只是想知道如果在你的网站中应用memcache,那 很不幸,本文并不是教你如何使用memcache。我们将抽丝剥茧,看看是什么使memca...2015-01-05 19:20:57 · 91 阅读 · 0 评论 -
大写“O”符号详解
通常您会开发一个测试数据库。它可能只供 10 人访问,所以你的编程和测试工作可以流畅地进行。一旦完成开发和 QA’d (通过质量检验),它将会正式上线(发布), 人们开始访问该网站。过了一年左右,该网站的响应速度越来越慢。在添加更多的数据库服务器没有起到作用后,您的系统管理员在my.cnf’s度过了他的” 假期”, 甚至为系统新增了许多内存容量也无济于事。听起来像是在大批量访问网站的情况下...原创 2015-01-14 12:58:38 · 955 阅读 · 0 评论 -
Java类加载器工作原理
Java类加载器是用来在运行时加载类(*.class文件)。Java类加载器基于三个原则:委托、可见性、唯一性。委托原则把加载类的请求转发给父 类加载器,而且仅加载类当父 类加载器无法找到或者不能加载类时。可见性原则允许子类加载器查看由父类加载器加载的所有的类,但是父类加载器不能查看由子类加载器加载的类。唯一性原则 只允许加载一次类文件,这基本上是通过委托原则来实现的并确保子类加载器不重新加载...原创 2015-01-19 18:01:07 · 442 阅读 · 0 评论 -
Java类加载器深入解析(二)
在做Java开发时了解Java类加载机制是非常好的。而对类加载机制的基本理解对Java开发人员处理类加载器(ClassLoader)相关的异常也很有帮助。 类加载器委托机制Java类的装载是通过类加载器(CL)来完成的,这些类加载器负责将类加载到JVM中。简单的应用可以使用java平台自带的类加载器来加载自身的类,而稍微复杂一些的应用则倾向于自定义类加载来加载自身的类。在jav...原创 2015-01-25 21:30:27 · 92 阅读 · 0 评论 -
Tomcat 架构 (一)
在实践过程中,从WebSphere中实现一个EJB的容器以及从WebLogic中实现一个JMS几乎都是不可能的,然而来自Apache基金会的servlet容器Tomcat至少在理论上是可能做到的。请注意,这里所说的“接口”也包含抽象类。规范的API可能会提供一个实现的模板,其中包括定义了一些抽象的基本类型的操作来供服务提供者去实现。而服务提供者应提供这些接口和抽象类的具体实现。例如,在T...2015-02-09 09:39:54 · 84 阅读 · 0 评论 -
Tomcat架构(二)
5、容器组件这一小节中我们将讨论请求处理组件:引擎(engine)、虚拟主机、上下文(context)组件。5.1、引擎(engine)引擎表示可运行的Catalina的servlet引擎实例并且包含了servlet容器的核心功能。在一个服务中只能有一个引擎。同时,作为一个真正的容器,Engine元素之下可以包含一个或多个虚拟主机。作为请求处理的主要组件,它接收代表...2015-02-15 17:29:11 · 130 阅读 · 0 评论 -
红包来袭!!!
除夕更阑人不睡,厌禳钝滞迎新岁。很高兴程序员学架构能够陪大家走过几个月,能为大家技术生涯提供哪怕稍微一点帮助,我们也感到万分欣慰! 祝大家在羊年芝麻开花节节高! 温馨提示:我们在春节期间还会为大家更新文章,欢迎关注!!! 参加方式:关注公众号:程序员学架构(微信:archleaner)公众号二维码: 好废话不多说,大年三十晚20:30分:回复...2015-02-18 16:31:26 · 270 阅读 · 0 评论 -
Tomcat架构(三)
嵌套组件这些组件是针对Tocmat做的特定实现,他们的主要目的是使各种Tomcat容器可以完成各自的工作。1、阀(Valve)valve是处理元素,它可以被包含在每个Tomcat容器的处理路径中--如engine、host、context以及servelt包装器。若要增加Valve到Tomcat容器则需要在server.xml中使用<Valve>标签。在server....2015-02-20 19:28:41 · 124 阅读 · 0 评论 -
Tomcat架构(四)
8、标准覆盖机制J2SE 1.4 and 1.5 都包含了一个XML处理解析器的Java API 。Bootstrap 类加载器加载这个解析器的类文件,所以这个解析器会优先于任何一个安装在CLASSPATH里的解析器 被加载,即使您已经安装了新版本的解析器。标准覆盖机制允许您重写JAVA_HOME/lib/endorsed文件夹里某些特定的类(例如CORBA 和 JAXP 类)。Boot...2015-02-23 19:11:03 · 93 阅读 · 0 评论 -
设计模式问答(一)
什么是设计模式?您能说出工厂模式、抽象工厂模式、创建者模式、原型模式、原型模式的潜复制及深复制、单例模式、命令模式的原理吗?简介这是一个小巧的设计模式常见问题问答。在本节我们将一起探讨工厂模式、抽象工厂模式、创建者模式、原型模式、原型模式的浅复制及深复制、单例模式、命令模式的原理。在下面的链接中您可以阅读设计模式常见问题问答的后续部分 :-设计模式 FAQ’s 2 --- 解释...原创 2015-03-20 18:44:36 · 214 阅读 · 0 评论 -
影响IO密集型应用性能的因素
如果我们曾经在IO密集型应用中碰到过性能问题,那么我们可能都知道系统的性能会随磁盘压力增加而降低。这个因素是众所周知的,但是其背后的原因可能就不那么清晰了。本文将尝试解释这个过程背后所发生的事情。一 个典型的场景是当数据被写入一个文件时,它首先会被写入内存区域保留页面缓存;该缓存页保存还没有被写入的数据,这些数据被称为脏数据;经过一段事件后, 根据IO策略,系统内核将这些脏数据刷新到持久化...2015-05-04 12:39:06 · 515 阅读 · 0 评论 -
可伸缩Web架构的4个问题:瓶颈,CPU,数据库,IO
在这篇文章中我将谈到关于大规模网站架构扩展和性能方面的一些问题。首先让我们先来了解一些术语。稍后我将对Web应用扩展过程中所遇到的不同问题进行讲解,例如: 架构瓶颈 数据库扩展 CPU消耗型应用 IO消耗型应用性能Web系统的性能受多方面因素的影响,但大多数开发人员主要关心的是响应时间和可扩展性这两方面。响应时间响应时间是指Web应用从收到请求到返...原创 2014-10-01 17:28:10 · 177 阅读 · 0 评论 -
反应堆模式(一):阻塞式IO应用
这里我假设一个简单的情景,比如一个运行在单cpu机器上的单线程ruby应用。实际上,操作系统把CPU时间切分为多个片段并做规律性的上下文切换。在单线程应用例如运行在ruby on rails的应用,所有请求都通过一个单独的线程来处理。当这个单独的线程做IO相关处理如数据库查询或者网络调用,那么即使这个应用/线程可以处理其他请求相关的工作也还是会被这些IO操作所阻塞。一个避免以上问题...2014-10-03 12:38:24 · 217 阅读 · 0 评论 -
如何决定Web应用线程池大小
这篇文章将涉及一个在部署Web应用产品和Web系统性能测试中都会出现的问题:如何决定Web应用的线程池大小?线程池(Thread Pool)在Web应用中线程池的大小决定了在任何一个时间点应用可以处理请求的并发数。如果一个系统收到的请求数超过了线程池的大小,那么超出的请求要么进入等待队列要么被拒绝。请注意,并发和并行是不同的。并发请求是指在任何一个时间点,所有被处理的请求中只有只有...2014-10-03 13:30:39 · 239 阅读 · 0 评论 -
反应堆模式(二):非阻塞式IO应用
在第一部分中,我们讲述了在单个服务下扩展一个单线程应用的请求处理数量所面临的问题。在这篇文章中,我们将关注CPU使用率最大化的一个可选择的解决方案。以下来自文章一的图,表明了应用需要通过请求来使用CPU,而且还必须在两次请求之间等待。加入我们把处理请求看成一个事件,并且把这些时间进行排队然后在一个线程中执行,那么我们可以肯定CPU降一直被占用,从而也使CPU使用率达到最大,还...原创 2014-10-03 13:34:32 · 181 阅读 · 0 评论 -
nginx介绍(一) 简介篇
Nginx(发音为“engine x”)是一款由俄罗斯软件工程师Igor Sysoev写的开源的web服务器。自从2004年发布以来nginx一直关注于高性能、高并发、低内存的使用,另外还有一些特色的Web服务器功能,如负载均衡、缓存、访问和带宽控制以及能够有效的与各种应用集成这些特点使得nginx成为现代网站架构中一个不错的选择。目前,nginx在互联网最受欢迎web服务器软件排行榜上...原创 2014-10-04 13:21:21 · 578 阅读 · 0 评论 -
nginx介绍(二) 架构篇
2. nginx架构总览传统的基于进程或者基于线程的模型处理并发的方式都是为每个连接单独创建一个处理进程或线程,会在网络传输或者I/O操作上阻塞。而这对应用来说,在内存和 CPU的使用上效率都是非常低的。而且生成一个单独的进程或者线程还需要为该进程或者线程准备新的运行环境包括分配堆栈内存,还必须为它创新一个新的上下文执行环境。创建这些都消耗额外的CPU时间,这最终也会因为线程上下文来回切...2014-10-05 12:50:09 · 127 阅读 · 0 评论 -
Spark架构
声明:本文中所将的spark内存模型是1.6+的版本,新的内存模型会在新的文章中讲到。 不久前我在StackOverflow上回答了一系列关于Apache Spark架构相关的问题。这似乎是由于网上缺乏好的Spark整体架构的文章。甚至是官网指导中也没有很多详细的介绍,当然也缺少好的架构图。“Learning Spark”这本书和官方资料中也一样没有。本文我将尝试解决这个问题并...原创 2016-03-28 21:28:26 · 216 阅读 · 0 评论