互联网技术架构
学习互联网技术架构的一些心得体会。
嘿哈哈哈
人生就像一场演出,不到谢幕永远不知道自己有多精彩。
展开
-
互联网技术架构——优化策略
互联技术架构:优化策略——优先级排行榜非常高放宽时间约束利用对象缓存不能回滚注定失败正确使用数据库锁避免选择所有列警惕第三方方案保持竞争力高避免过度设计X轴扩展水平扩展使用商品化系统适当使用数据库慎重使用防火墙利用Ajax缓存独立对象缓存从失败中学习使用QA降低成本从事务处理中清除商务智能禁用分阶段提交慎用Select for Update拒...原创 2018-10-03 22:54:14 · 572 阅读 · 0 评论 -
互联网技术架构——意犹未尽
对于无法预测的突发性事件,想要正常提供服务并且盈利,其解决方案中有两个重要的变量。首先要以划算的应急容量来处理这些不可预知的事件及其带来的访问量。其次要监控事件,包括CPU利用率、内存、堆大小和网络利用率等,需要看到随时间变化的交易请求以及执行的一阶导数和二阶导数与过去相比较的异常行为,这样就可以在市场开始变化时感知到某些东西失去平衡。警惕第三方方案扩展自己的系统,而不要依赖供应商的解决方案...原创 2018-10-03 22:24:51 · 292 阅读 · 0 评论 -
互联网技术架构——异步通信
当处理速度慢达不到系统容量要求时,多年运行正常的一个小小的同步调用,可以导致整个网站停止服务。应用和服务之间的异步通信一直是许多平台的救星,也是许多平台崩溃的原因。实施的当的异步通信使产品可以近乎无限扩展,但是随意实施的异步通信只会变成隐藏在产品中的故障和瑕疵。这不但要求我们以异步方式通信,而且要求以异步行为进行实际的应用开发。这意味着在很大程度上要远离请求/答复协议——至少是那些对响应有时间...原创 2018-10-03 17:40:32 · 1410 阅读 · 0 评论 -
互联网技术架构——无状态
无状态服务(Stateless Service): 是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的。有状态服务(Stateful Service): 是指该服务的实例可以将一部分数据随时进行备份,并且在创建一个新的有状态服务时,可以通过备份恢复这些数据,以达到数据持久化的目的。无状态服务可以有一个或多个实例,因此支持两种服务容量调节模式;有...原创 2018-10-02 15:39:13 · 1506 阅读 · 0 评论 -
互联网技术架构——有备无患
不可能构建出永远不会故障的系统,所以需要考虑对故障隔离和故障控制的需求。下面是几种限制故障影响的方法,减少故障的频率,提高产品的整体可用性。用泳道隔离故障在设计中实现故障隔离区或泳道,需要拆分数据库和服务,并且禁止故障隔离的服务和数据间同步通信或访问。因为泳道把用户或者跨用户共享的功能做了拆分,当出现故障时,可以更快地定位问题来源。实现故障隔离的原则:不共享:泳道不共享服务。但可以接...原创 2018-10-01 23:25:45 · 1123 阅读 · 0 评论 -
互联网技术架构——数据库扩展
要求事务以同步方式持续实时发生是个很难解决的问题。尤其是当跨越两个独立服务器时,来确保水平事务的完整性就非常困难。应用传统方法,用“挂起”概念分别处理事务(事务的每个环节相对于其他环节异步发生),使存在于不同数据库上的事务处理变得比较简单。众所周知的两阶段提交协议:包括提交请求阶段和执行提交阶段组成。在提交请求阶段,进程视图锁定必要的属性,只有锁定成功才能进行执行提交。如果在任何阶段失败,那么整...原创 2018-09-29 23:49:32 · 355 阅读 · 0 评论 -
互联网技术架构——前车之鉴
我们需要观察客户并把每次失败当成一个吸取教训的机会来积极学习,适当地依靠像QA这样的组织,预期系统失败,并针对这些失败做好充分的准备。从失败中学习我们要不断地从错误和成功中学习。观察客户或用A/B测试验证。建立事后分析过程,在低故障率环境下采用假设失败的方法。错误不可避免,但是不能犯同样的错误。如果找不到性能差的查询,结果直到进入生产环境并导致网站中断才发现,那么就必须要找到真正的根本原因...原创 2018-09-29 09:13:24 · 691 阅读 · 0 评论 -
互联网技术架构——巧妙利用缓存
在浏览器知道云的每一个层次里,通过缓存可以显著提高扩展能力。缓存也有助于减少系统负担,可以使你不必对同一数据一遍又一遍地查找。创建或服务。利用CDN缓存用CDN(内容分发网络)来减少网站的负载。CDN是快速而且简单的平缓高峰流量和一般流量增长的方式。确保进行成本效益分析,同时监控CDN的使用量。CDN是一组计算机,也称为节点或边缘服务器,通过骨干网络连接起来,上面存储着客户数据或内容(图像...原创 2018-09-27 17:37:22 · 844 阅读 · 0 评论 -
互联网技术架构——画龙点睛
避免画蛇添足避免为了确认操作是否有效而读取刚刚写入的数据,如近期处理需要,可把数据存储在本地或分布式缓存。因为与不太可能出现的操作失败所产生的成本相比,确认操作成本更高。而且这类活动与有效扩展相背离。大多数情况下,数据损坏是在实际写入时发现的。读取刚刚写入的数据使系统事倍功半。 一个较好的方案是直接读取正在执行的操作返回数据,并相信它的正确性,从而提高有价值的事务处理量。对数据损坏最稳妥的保...原创 2018-09-26 22:33:51 · 272 阅读 · 0 评论 -
互联网技术架构——合理使用工具
由“工具法则”,“当你只有一个锤子时,任何东西看起来都像是个钉子”。其含义为我们都有一种试图使用自己熟悉的仪器或工具来解决当前问题的倾向。然而在合适的时间,为合适的工作选择合适的工具,在组织的生命周期中至关重要。我们不能只被熟悉的东西困住;应该花点时间学习新事物,并保持开放的心态。适当使用数据库当需要ACID属性来保持数据之间的关系和一致性时。而其他的存储需要考虑更适合的工具,如NoSQL,...原创 2018-09-25 20:51:52 · 360 阅读 · 0 评论 -
互联网技术架构——水平扩展
在实践中,我们发现,“向上扩展注定会失败”。这是因为,在超高速增长的环境里,公司计划以水平方式扩展(又称为向外扩展)至关重要。而大多数的水平扩展都是通过对跨越多个系统工作负荷的拆分或者复制完成的。水平扩展水平扩展是通过复制或拆分服务或数据库而分散事务负载的方法,与此相对的是向上扩展,即通过购买更大的硬件而实现的扩展。向上扩展最终会停在一个点,要么是成本太高,要么是没有更大的硬件。而且四个八...原创 2018-09-25 11:42:41 · 2443 阅读 · 0 评论 -
互联网技术架构——拆分数据库
通过克隆和复制的方法扩展数据库和服务,分离功能或服务以及跨存储和应用分拆相似的数据集系统。也即通过将数据复制到只读数据库整合了X轴;通过对Y轴的服务,功能或基于资源拆分,实现额外的基于服务的故障隔离、更大的数据缓存、更快的研发人员吞吐量;通过Z轴的客户拆分降低客户的密度。...原创 2018-09-22 23:14:35 · 640 阅读 · 0 评论 -
互联网技术架构——简化
避免过度的设计过度设计有两大类:一是指产品的设计和实施超过了实际的需求;二是指所完成的产品过于复杂。第一类过度设计有过度使用资源的情况,包括为研发和实施硬件,软件解决方案付出的较高费用。因为过度设计,可能会造成系统的研发周期过长,影响公司产品的发布计划。我们当然希望把系统建设得可以扩展以满足客户的需求,但是我们并不想浪费时间来实施和配置远远超过我们实际需求的系统能力。第二类过度设计是指把一件...原创 2018-09-20 09:32:00 · 692 阅读 · 0 评论