数据密集型应用设计读书笔记第一章。现在的数据密集型应用,趋势是组件化。存储数据,以便自己或其他应用程序之后能再次找到 (数据库(database))记住开销昂贵操作的结果,加快读取速度(缓存(cache))允许用户按关键字搜索数据,或以各种方式对数据进行过滤(搜索索引(search indexes))向其他进程发送消息,进行异步处理(流处理(stream processing))定期处理累积的大批
转载
2023-12-11 10:56:54
36阅读
摘要:小心数据的爆炸性增长,不要进行不成熟的优化,但是要密切关注渐进复杂性.用户数据的算法应该能够预测所处理的数据量耗费的时间,最好不差于线性关系.如果能够证明优化必要而且非常重要,尤其在数据量逐渐增长的情况下,那么应该集中注意力改善算法的O(N)复杂性,而不是进行小型的优化。 防范可能的未来,要求我们要避免设计中含有面对更大的文件、更大的数据库、更多像素、更多窗口、更多
转载
2023-08-29 19:22:53
47阅读
可伸缩性原则
从最简单的水平来看,可伸缩性就是做更多的事情。更多的事情可以是响应更多的用户请求,执行更多的工作,或处理更多的数据。设计软件这件事本身是复杂的,而让软件做更多的工作也有其特有的问题。这篇文章针对构建可伸缩软件系统提出了一些原则和方针。
1. 减少处理时间
增加应用所做工作数量的一个方法就是减少完成单项工作所花费的时间。举例来说,减少处理一个用户请求所需的时间意味着你能在同样长的
转载
精选
2009-11-24 14:56:51
643阅读
从最简单的水平来看,可伸缩性就是做更多的事情。更多的事情可以是响应更多的用户请求,执行更多的工作,或处理更多的数据。设计软件这件事本身是复杂的,而让软件做更多的工作也有其特有的问题。这篇文章针对构建可伸缩软件系统...
转载
2013-04-30 12:08:00
114阅读
2评论
可伸缩网络服务的定义 可伸缩性(Scalability)是在当今计算机技术中经常用到的词汇。对于不同的人,可伸缩性有不同的含义。 现在,我们来定义可伸缩网络服务的含义。 可伸缩网络服务是指网络服务能随着用户数目的增长而扩展其性能,如在系统中增加服务器、内存或硬盘等;整个系统很容易被扩展,无需重新设置整个系统,无需中断服务。换句话说,系统管理员扩展系统的操作对最终用户是透明的,他们不会知道系统的改
转载
2023-07-30 07:53:27
79阅读
下面是我们认为的一些可伸缩性的最佳实践:异步;尽可能的使用异步,同步调用会导致两个服务的可用性绑在一起,意味着一个服务出问题或变慢,另一个也会受到影响,这点也是eBay一直强调的;泳道设计;错误隔离机制,避免一个失败影响全局,这种机制也有助于错误查找和代码替换;缓存;在所有层次均使用缓存,例如数据、页面、页面片段等;监测;从用户角度来看系统的性能。这包括从外部网络来对系统进行性能的监测,以及内部的
原创
2021-12-31 17:31:20
66阅读
可扩展有两个层面的含义:一是功能的可扩展性,主要是针对平台框架,是否设计并预留了足够的扩展点,后续可以很方便的增加各种功能或有第三方实现各种插件。另一种是性能的可扩展性,系统的弹性扩容能力,即随着系统用户量、并发的增加是否可实现弹性扩容,通过增加硬件设备就能提供更强的处理能力,这种一般称为可伸缩性。
转载
2019-04-24 08:59:00
388阅读
2评论
同步调用使得组件和组件之间紧密耦合起来,这样就使得要想伸缩应用就需要伸缩所有的组件,这不仅带来使得伸缩的成本增加,而且这种高度耦合性使得伸缩变得更加困难。因此我们需要从应用角度划分出,哪些业务操作是紧密关联的,哪些是可以异步执行的,划分出那些可以异步执行的操作,然后将其进行异步化处理(比如通过JMS,事件队列,多播消息等或者线程池等),这样划分的好处就是系统可以应对更大的访问量,消
原创
2009-12-06 19:30:00
511阅读
对可伸缩的TCP/IP服务器而言,最有用的扩展API也就算AcceptEx了。利用这个函数,服务器可以投递一个异步调用,该调用将接受下一个传入的客户机连接。
BOOL AcceptEx( __in SOCKET sListen
转载
精选
2012-12-01 22:40:10
709阅读
对可伸缩的TCP/IP服务器而言,最有用的扩展API也就算AcceptEx了。利用这个函数,服务器可以投递一个异步调用,该调用将接受下一个传入的客户机连接。
BOOL AcceptEx( __in SOCKET 
转载
2012-03-14 09:16:17
1734阅读
ConnectEx是一个极其必要的API,这个函数允许重叠的连续调用。
BOOL PASCAL ConnectEx( __in SOCKET s, __in 
转载
2012-03-14 10:06:11
1760阅读
引言在扩展大量大型的分布式系统期间,我有机会观察(并实践)了一些最差实践。这些最差实践中的大部分在开始时都没有危害,但如果疏忽大意,它们就会对系统的发展和可伸缩性构成危害。很多文章都聚焦于最佳实践,以确保拥有一个...
转载
2013-04-29 23:35:00
103阅读
2评论
数据系统基石头 可靠性,可伸缩性,可维护性: 可靠性(Reliability)系统在困境(adversity)(硬件故障、软件故障、人为错误)中仍可正常工作(正确完成功能,并能达到期望的性能水准)。可伸缩性(Scalability)有合理的办法应对系统的增长(数据量、流量、复杂性)(参阅“可伸缩性”)可维护性(Maintainability)许多不同的人(工程师、运维)在不同的
因为需要这个函数来对传递的接收调用的缓冲区内的本地及远程地址进行解码,所有这个函数是AcceptEx的辅助函数。单个缓冲区不仅容纳连接的本地及远程地址,还容纳连接上收到的任何数据。指明要接收的任何数据将始终放在缓冲区的开始部位,地址紧随其后。不过这个地址是打包形式的地址,GetAcceptExSockaddrs函数将把他们拆开放到适当的相应地址族的结构中。
void G
转载
2012-03-14 09:37:06
2026阅读
可伸缩设计系统的伸缩性是架构中最重要的技术,即使用服务器的集群功能,通过不断向集群中添加服务器来增强整个集群的处理能力。“伸”即架构的规模和服务器的规模不断扩大。架构的伸缩性设计架构的伸缩性设计可以分成两类,一类是根据功能进行物理分离实现伸缩,另一类是单一功能通过集群实现伸缩。前者是不同的服务器部署不同的服务,提供不同的功能;后者是集群内的多台服务器部署相同的服务,提供相关的功能。架构的物理分离分
转载
2023-09-08 10:42:22
28阅读
一、伸缩性的概念二、服务器层的水平扩展三、数据库层的水平扩展
原创
2021-06-24 21:26:09
161阅读
在这篇文章中,Orbitz的前架构师主管Brian Zimmer对可伸缩性的最差实践进行了论述。涵盖的主题包括金锤子、资源滥用、大泥球、依赖管理、超时、英雄模式、非自动化和监控。
文章摘录如下:
操作问题普遍的解决方案是有一个“英雄”(关键性人物),他能处理、并经常处理大部分的操作需求。在小规模环境中,当某个人有熟悉整个系统(包括保持系统
正常运行的许多细节之处)的天赋和能力时,英雄模式
原创
2008-12-19 09:50:34
578阅读